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 |
注意
您可以藉由呼叫 Unmanaged 程式代碼,例如 Windows API LogonUser
函式,來擷取 userToken
所代表的令牌。 呼叫 Windows API CloseHandle
函式,一律釋放 userToken
。 如需呼叫 Unmanaged 程式代碼的詳細資訊,請參閱 使用 Unmanaged 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 的格式 username@domainname.com,換句話說,是電子郵件位址。
sUserPrincipalName
中識別的UPN是用來透過 Windows API LsaLogonUser
函式擷取該使用者的令牌。 接著,該令牌會用來識別使用者。 因為無法使用提供的 UPN 登入,所以可能會傳回例外狀況。
注意
此建構函式僅適用於加入 Windows Server 2003 或更新版本的網域的電腦。 舊版網域類型擲回例外狀況。 這項限制是因為此建構函式會使用 KERB_S4U_LOGON 結構,這是 Windows Server 2003 中首次引進的。 此外,此建構函式需要目標用戶帳戶上
適用於
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
,則安全性系統會將 AuthenticationType 設定為 Windows Vista 和更新版本的 Windows 作業系統上 Negotiate
,以及在舊版 Windows 操作系統上 Kerberos
。 安全性系統不會使用此值;僅供參考之用。
注意
您可以藉由呼叫 Unmanaged 程式代碼,例如 Windows API LogonUser
函式,來擷取 userToken
所代表的令牌。 呼叫 Windows API CloseHandle
函式,一律釋放 userToken
。 如需呼叫 Unmanaged 程式代碼的詳細資訊,請參閱 使用 Unmanaged 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
,則安全性系統會將 AuthenticationType 設定為 Windows Vista 和更新版本的 Windows 作業系統上 Negotiate
,以及在舊版 Windows 操作系統上 Kerberos
。 安全性系統不會使用此值;僅供參考之用。
sUserPrincipalName
中識別的UPN是用來透過 Windows API LsaLogonUser
函式擷取該使用者的令牌。 接著,該令牌會用來識別使用者。 因為無法使用提供的 UPN 登入,所以可能會傳回例外狀況。
注意
此建構函式僅適用於加入 Windows Server 2003 或更新版本的網域的電腦。 舊版網域類型擲回例外狀況。 這項限制是因為此建構函式會使用 KERB_S4U_LOGON 結構,這是 Windows Server 2003 中首次引進的。 此外,此建構函式需要目標用戶帳戶上
適用於
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
,則安全性系統會將 AuthenticationType 設定為 Windows Vista 和更新版本的 Windows 作業系統上 Negotiate
,以及在舊版 Windows 操作系統上 Kerberos
。 安全性系統不會使用此值;僅供參考之用。
注意
您可以藉由呼叫 Unmanaged 程式代碼,例如 Windows API LogonUser
函式,來擷取 userToken
所代表的令牌。 呼叫 Windows API CloseHandle
函式,一律釋放 userToken
。 如需呼叫 Unmanaged 程式代碼的詳細資訊,請參閱 使用 Unmanaged 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
,則安全性系統會將 AuthenticationType 設定為 Windows Vista 和更新版本的 Windows 作業系統上 Negotiate
,以及在舊版 Windows 操作系統上 Kerberos
。 安全性系統不會使用此值;僅供參考之用。
您可以藉由呼叫 Unmanaged 程式代碼,例如 Windows API LogonUser
函式,來擷取 userToken
所代表的令牌。 呼叫 Windows API CloseHandle
函式,一律釋放 userToken
。 如需呼叫 Unmanaged 程式代碼的詳細資訊,請參閱 使用 Unmanaged DLL 函式。