WindowsIdentity 构造函数
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
初始化 WindowsIdentity 类的新实例。
重载
WindowsIdentity(IntPtr) |
为指定的 Windows 帐户标记表示的用户初始化 WindowsIdentity 类的新实例。 |
WindowsIdentity(WindowsIdentity) |
使用指定的 WindowsIdentity 对象初始化 WindowsIdentity 类的新实例。 |
WindowsIdentity(String) |
初始化以指定用户主名称 (UPN) 表示的用户的 WindowsIdentity 类的新实例。 |
WindowsIdentity(IntPtr, String) |
为指定的 Windows 帐户标记和指定的身份验证类型表示的用户初始化 WindowsIdentity 类的新实例。 |
WindowsIdentity(SerializationInfo, StreamingContext) |
已过时.
初始化 SerializationInfo 流中的信息所表示的用户的 WindowsIdentity 类的新实例。 |
WindowsIdentity(String, String) |
初始化以指定用户主名称 (UPN) 和指定身份验证类型共同表示的用户的 WindowsIdentity 类的新实例。 |
WindowsIdentity(IntPtr, String, WindowsAccountType) |
为指定的 Windows 帐户标记、指定的身份验证类型和指定的 Windows 帐户类型表示的用户初始化 WindowsIdentity 类的新实例。 |
WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean) |
为指定的 Windows 帐户标记、指定的身份验证类型、指定的 Windows 帐户类型和指定的身份验证状态表示的用户初始化 WindowsIdentity 类的新实例。 |
WindowsIdentity(IntPtr)
为指定的 Windows 帐户标记表示的用户初始化 WindowsIdentity 类的新实例。
public:
WindowsIdentity(IntPtr userToken);
public WindowsIdentity (IntPtr userToken);
new System.Security.Principal.WindowsIdentity : nativeint -> System.Security.Principal.WindowsIdentity
Public Sub New (userToken As IntPtr)
参数
- userToken
-
IntPtr
nativeint
用户的帐户标记,代码当前即以该用户的名义运行。
例外
注解
下表显示了 实例 WindowsIdentity的初始属性值。
属性 | 初始值 |
---|---|
AuthenticationType | Negotiate |
WindowsAccountType | Normal |
IsAuthenticated | false |
注意
可以通过调用非托管代码(如 Windows API LogonUser
函数)来检索由 userToken
表示的令牌。 始终通过调用 Windows API CloseHandle
函数释放userToken
。 有关调用非托管代码的详细信息,请参阅 使用非托管 DLL 函数。
适用于
WindowsIdentity(WindowsIdentity)
使用指定的 WindowsIdentity 对象初始化 WindowsIdentity 类的新实例。
protected:
WindowsIdentity(System::Security::Principal::WindowsIdentity ^ identity);
protected WindowsIdentity (System.Security.Principal.WindowsIdentity identity);
new System.Security.Principal.WindowsIdentity : System.Security.Principal.WindowsIdentity -> System.Security.Principal.WindowsIdentity
Protected Sub New (identity As WindowsIdentity)
参数
- identity
- WindowsIdentity
根据其构造 WindowsIdentity 新实例的对象。
适用于
WindowsIdentity(String)
初始化以指定用户主名称 (UPN) 表示的用户的 WindowsIdentity 类的新实例。
public:
WindowsIdentity(System::String ^ sUserPrincipalName);
public WindowsIdentity (string sUserPrincipalName);
new System.Security.Principal.WindowsIdentity : string -> System.Security.Principal.WindowsIdentity
Public Sub New (sUserPrincipalName As String)
参数
- sUserPrincipalName
- String
代码运行时所代表用户的 UPN。
例外
Windows 返回 Windows NT 状态代码 STATUS_ACCESS_DENIED。
没有足够的可用内存。
调用方没有正确的权限。
或
计算机未连接到 Windows 2003 或更高版本的域。
或
计算机没有运行 Windows 2003 或更高版本。
或
用户不是计算机所连接域的成员。
注解
UPN 的格式为 用户名@域名.com即电子邮件地址。 中 sUserPrincipalName
标识的 UPN 用于通过 Windows API LsaLogonUser
函数检索该用户的令牌。 反过来,该令牌用于标识用户。 由于无法使用提供的 UPN 登录,可能会返回异常。
注意
此构造函数仅适用于已加入 Windows Server 2003 或更高版本域的计算机。 对于较早的域类型,会引发异常。 此限制是由于此构造函数使用 Windows Server 2003 中首次引入 的 KERB_S4U_LOGON 结构。 此外,此构造函数需要对目标用户帐户上的 token-groups-global-and-universal (TGGAU) 属性 具有读取访问权限。
适用于
WindowsIdentity(IntPtr, String)
为指定的 Windows 帐户标记和指定的身份验证类型表示的用户初始化 WindowsIdentity 类的新实例。
public:
WindowsIdentity(IntPtr userToken, System::String ^ type);
public WindowsIdentity (IntPtr userToken, string type);
new System.Security.Principal.WindowsIdentity : nativeint * string -> System.Security.Principal.WindowsIdentity
Public Sub New (userToken As IntPtr, type As String)
参数
- userToken
-
IntPtr
nativeint
用户的帐户标记,代码当前即以该用户的名义运行。
- type
- String
(仅供参考。)用于标识用户的身份验证类型。
例外
示例
以下代码演示如何使用 WindowsIdentity 构造函数为由指定的 Windows 帐户令牌和指定的身份验证类型表示的用户创建 类的新实例 WindowsIdentity 。 此代码示例是为 WindowsIdentity 类提供的一个更大示例的一部分。
void IntPtrStringConstructor( IntPtr logonToken )
{
// Construct a WindowsIdentity object using the input account token
// and the specified authentication type.
String^ authenticationType = "WindowsAuthentication";
WindowsIdentity^ windowsIdentity = gcnew WindowsIdentity( logonToken,authenticationType );
Console::WriteLine( "Created a Windows identity object named {0}.", windowsIdentity->Name );
}
private static void IntPtrStringConstructor(IntPtr logonToken)
{
// Construct a WindowsIdentity object using the input account token
// and the specified authentication type.
string authenticationType = "WindowsAuthentication";
WindowsIdentity windowsIdentity =
new WindowsIdentity(logonToken, authenticationType);
Console.WriteLine("Created a Windows identity object named " +
windowsIdentity.Name + ".");
}
Private Sub IntPtrStringConstructor(ByVal logonToken As IntPtr)
' Construct a WindowsIdentity object using the input account token
' and the specified authentication type
Dim authenticationType = "WindowsAuthentication"
Dim windowsIdentity As _
New WindowsIdentity(logonToken, authenticationType)
WriteLine("Created a Windows identity object named " + _
windowsIdentity.Name + ".")
End Sub
注解
下表显示了 实例 WindowsIdentity的初始属性值。
属性 | 初始值 |
---|---|
WindowsAccountType | Normal |
IsAuthenticated | false |
参数的值 type
用于设置 AuthenticationType 参数。 如果 type
为 null
,则安全系统在 Windows Vista 和更高版本的 Windows 操作系统上设置为 AuthenticationTypeNegotiate
,在早期版本的 Windows 操作系统上设置为 Kerberos
。 安全系统不使用此值;它仅供参考。
注意
可以通过调用非托管代码(如 Windows API LogonUser
函数)来检索由 userToken
表示的令牌。 始终通过调用 Windows API CloseHandle
函数释放userToken
。 有关调用非托管代码的详细信息,请参阅 使用非托管 DLL 函数。
适用于
WindowsIdentity(SerializationInfo, StreamingContext)
注意
This API supports obsolete formatter-based serialization. It should not be called or extended by application code.
初始化 SerializationInfo 流中的信息所表示的用户的 WindowsIdentity 类的新实例。
public:
WindowsIdentity(System::Runtime::Serialization::SerializationInfo ^ info, System::Runtime::Serialization::StreamingContext context);
public WindowsIdentity (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
[System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public WindowsIdentity (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
new System.Security.Principal.WindowsIdentity : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Security.Principal.WindowsIdentity
[<System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
new System.Security.Principal.WindowsIdentity : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> System.Security.Principal.WindowsIdentity
Public Sub New (info As SerializationInfo, context As StreamingContext)
参数
- info
- SerializationInfo
包含用户帐户信息的对象。
- context
- StreamingContext
指示流特征的对象。
- 属性
例外
WindowsIdentity 无法跨进程序列化。
注解
重要
使用不受信任的数据调用此方法存在安全风险。 仅使用受信任的数据调用此方法。 有关详细信息,请参阅 验证所有输入。
适用于
WindowsIdentity(String, String)
初始化以指定用户主名称 (UPN) 和指定身份验证类型共同表示的用户的 WindowsIdentity 类的新实例。
public:
WindowsIdentity(System::String ^ sUserPrincipalName, System::String ^ type);
public WindowsIdentity (string sUserPrincipalName, string type);
new System.Security.Principal.WindowsIdentity : string * string -> System.Security.Principal.WindowsIdentity
Public Sub New (sUserPrincipalName As String, type As String)
参数
- sUserPrincipalName
- String
代码运行时所代表用户的 UPN。
- type
- String
(仅供参考。)用于标识用户的身份验证类型。
例外
Windows 返回 Windows NT 状态代码 STATUS_ACCESS_DENIED。
没有足够的可用内存。
调用方没有正确的权限。
或
计算机未连接到 Windows 2003 或更高版本的域。
或
计算机没有运行 Windows 2003 或更高版本。
或
用户不是计算机所连接域的成员。
注解
参数的值 type
用于设置 AuthenticationType 参数。 如果 type
为 null
,则安全系统在 Windows Vista 和更高版本的 Windows 操作系统上设置为 AuthenticationTypeNegotiate
,在早期版本的 Windows 操作系统上设置为 Kerberos
。 安全系统不使用此值;它仅供参考。
中 sUserPrincipalName
标识的 UPN 用于通过 Windows API LsaLogonUser
函数检索该用户的令牌。 反过来,该令牌用于标识用户。 由于无法使用提供的 UPN 登录,可能会返回异常。
注意
此构造函数仅适用于已加入 Windows Server 2003 或更高版本域的计算机。 对于较早的域类型,会引发异常。 此限制是由于此构造函数使用 Windows Server 2003 中首次引入 的 KERB_S4U_LOGON 结构。 此外,此构造函数需要对目标用户帐户上的 token-groups-global-and-universal (TGGAU) 属性 具有读取访问权限。
适用于
WindowsIdentity(IntPtr, String, WindowsAccountType)
为指定的 Windows 帐户标记、指定的身份验证类型和指定的 Windows 帐户类型表示的用户初始化 WindowsIdentity 类的新实例。
public:
WindowsIdentity(IntPtr userToken, System::String ^ type, System::Security::Principal::WindowsAccountType acctType);
public WindowsIdentity (IntPtr userToken, string type, System.Security.Principal.WindowsAccountType acctType);
new System.Security.Principal.WindowsIdentity : nativeint * string * System.Security.Principal.WindowsAccountType -> System.Security.Principal.WindowsIdentity
Public Sub New (userToken As IntPtr, type As String, acctType As WindowsAccountType)
参数
- userToken
-
IntPtr
nativeint
用户的帐户标记,代码当前即以该用户的名义运行。
- type
- String
(仅供参考。)用于标识用户的身份验证类型。
- acctType
- WindowsAccountType
枚举值之一。
例外
示例
下面的代码演示如何使用 WindowsIdentity 构造函数为由指定的 Windows 帐户令牌、指定的身份验证类型和指定的 Windows 帐户类型表示的用户创建 类的新实例 WindowsIdentity 。 此代码示例是为 WindowsIdentity 类提供的一个更大示例的一部分。
void IntPtrStringTypeConstructor( IntPtr logonToken )
{
// Construct a WindowsIdentity object using the input account token,
// and the specified authentication type and Windows account type.
String^ authenticationType = "WindowsAuthentication";
WindowsAccountType guestAccount = WindowsAccountType::Guest;
WindowsIdentity^ windowsIdentity = gcnew WindowsIdentity( logonToken,authenticationType,guestAccount );
Console::WriteLine( "Created a Windows identity object named {0}.", windowsIdentity->Name );
}
private static void IntPtrStringTypeConstructor(IntPtr logonToken)
{
// Construct a WindowsIdentity object using the input account token,
// and the specified authentication type, and Windows account type.
string authenticationType = "WindowsAuthentication";
WindowsAccountType guestAccount = WindowsAccountType.Guest;
WindowsIdentity windowsIdentity =
new WindowsIdentity(logonToken, authenticationType, guestAccount);
Console.WriteLine("Created a Windows identity object named " +
windowsIdentity.Name + ".");
}
Private Sub IntPtrStringTypeConstructor(ByVal logonToken As IntPtr)
' Construct a WindowsIdentity object using the input account token,
' and the specified authentication type and Windows account type.
Dim authenticationType As String = "WindowsAuthentication"
Dim guestAccount As WindowsAccountType = WindowsAccountType.Guest
Dim windowsIdentity As _
New WindowsIdentity(logonToken, authenticationType, guestAccount)
WriteLine("Created a Windows identity object named " + _
windowsIdentity.Name + ".")
End Sub
注解
下表显示了 实例 WindowsIdentity的初始属性值。
属性 | 初始值 |
---|---|
IsAuthenticated | false |
参数的值 type
用于设置 AuthenticationType 参数。 如果 type
为 null
,则安全系统在 Windows Vista 和更高版本的 Windows 操作系统上设置为 AuthenticationTypeNegotiate
,在早期版本的 Windows 操作系统上设置为 Kerberos
。 安全系统不使用此值;它仅供参考。
注意
可以通过调用非托管代码(如 Windows API LogonUser
函数)来检索由 userToken
表示的令牌。 始终通过调用 Windows API CloseHandle
函数释放userToken
。 有关调用非托管代码的详细信息,请参阅 使用非托管 DLL 函数。
适用于
WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)
为指定的 Windows 帐户标记、指定的身份验证类型、指定的 Windows 帐户类型和指定的身份验证状态表示的用户初始化 WindowsIdentity 类的新实例。
public:
WindowsIdentity(IntPtr userToken, System::String ^ type, System::Security::Principal::WindowsAccountType acctType, bool isAuthenticated);
public WindowsIdentity (IntPtr userToken, string type, System.Security.Principal.WindowsAccountType acctType, bool isAuthenticated);
new System.Security.Principal.WindowsIdentity : nativeint * string * System.Security.Principal.WindowsAccountType * bool -> System.Security.Principal.WindowsIdentity
Public Sub New (userToken As IntPtr, type As String, acctType As WindowsAccountType, isAuthenticated As Boolean)
参数
- userToken
-
IntPtr
nativeint
用户的帐户标记,代码当前即以该用户的名义运行。
- type
- String
(仅供参考。)用于标识用户的身份验证类型。
- acctType
- WindowsAccountType
枚举值之一。
- isAuthenticated
- Boolean
true
指示用户已经过身份验证,否则为 false
。
例外
示例
以下代码演示如何使用 WindowsIdentity 构造函数为由指定的 Windows 帐户令牌、指定的身份验证类型、指定的 Windows 帐户类型和指定的身份验证状态表示的用户创建 类的新实例 WindowsIdentity 。 此代码示例是为 WindowsIdentity 类提供的一个更大示例的一部分。
void IntPrtStringTypeBoolConstructor( IntPtr logonToken )
{
// Construct a WindowsIdentity object using the input account token,
// and the specified authentication type, Windows account type, and
// authentication flag.
String^ authenticationType = "WindowsAuthentication";
WindowsAccountType guestAccount = WindowsAccountType::Guest;
bool isAuthenticated = true;
WindowsIdentity^ windowsIdentity = gcnew WindowsIdentity( logonToken,authenticationType,guestAccount,isAuthenticated );
Console::WriteLine( "Created a Windows identity object named {0}.", windowsIdentity->Name );
}
private static void IntPrtStringTypeBoolConstructor(IntPtr logonToken)
{
// Construct a WindowsIdentity object using the input account token,
// and the specified authentication type, Windows account type, and
// authentication flag.
string authenticationType = "WindowsAuthentication";
WindowsAccountType guestAccount = WindowsAccountType.Guest;
bool isAuthenticated = true;
WindowsIdentity windowsIdentity = new WindowsIdentity(
logonToken, authenticationType, guestAccount, isAuthenticated);
Console.WriteLine("Created a Windows identity object named " +
windowsIdentity.Name + ".");
}
Private Sub IntPrtStringTypeBoolConstructor(ByVal logonToken As IntPtr)
' Construct a WindowsIdentity object using the input account token,
' and the specified authentication type, Windows account type, and
' authentication flag.
Dim authenticationType As String = "WindowsAuthentication"
Dim guestAccount As WindowsAccountType = WindowsAccountType.Guest
Dim isAuthenticated As Boolean = True
Dim windowsIdentity As New WindowsIdentity( _
logonToken, authenticationType, guestAccount, isAuthenticated)
WriteLine("Created a Windows identity object named " + _
windowsIdentity.Name + ".")
End Sub
注解
参数的值 type
用于设置 AuthenticationType 参数。 如果 type
为 null
,则安全系统在 Windows Vista 和更高版本的 Windows 操作系统上设置为 AuthenticationTypeNegotiate
,在早期版本的 Windows 操作系统上设置为 Kerberos
。 安全系统不使用此值;它仅供参考。
可以通过调用非托管代码(如 Windows API LogonUser
函数)来检索由 userToken
表示的令牌。 始终通过调用 Windows API CloseHandle
函数释放userToken
。 有关调用非托管代码的详细信息,请参阅 使用非托管 DLL 函数。