Freigeben über


WindowsIdentity Konstruktoren

Definition

Initialisiert eine neue Instanz der WindowsIdentity Klasse.

Überlädt

WindowsIdentity(IntPtr)

Initialisiert eine neue Instanz der WindowsIdentity Klasse für den Benutzer, der durch das angegebene Windows-Kontotoken dargestellt wird.

WindowsIdentity(WindowsIdentity)

Initialisiert eine neue Instanz der WindowsIdentity Klasse mithilfe des angegebenen WindowsIdentity-Objekts.

WindowsIdentity(String)

Initialisiert eine neue Instanz der WindowsIdentity-Klasse für den Benutzer, der durch den angegebenen Benutzerprinzipalnamen (User Principal Name, UPN) dargestellt wird.

WindowsIdentity(IntPtr, String)

Initialisiert eine neue Instanz der WindowsIdentity Klasse für den Benutzer, der durch das angegebene Windows-Kontotoken und den angegebenen Authentifizierungstyp dargestellt wird.

WindowsIdentity(SerializationInfo, StreamingContext)
Veraltet.

Initialisiert eine neue Instanz der WindowsIdentity Klasse für den Benutzer, dargestellt durch Informationen in einem SerializationInfo Datenstrom.

WindowsIdentity(String, String)

Initialisiert eine neue Instanz der WindowsIdentity Klasse für den Benutzer, dargestellt durch den angegebenen Benutzerprinzipalnamen (User Principal Name, UPN) und den angegebenen Authentifizierungstyp.

WindowsIdentity(IntPtr, String, WindowsAccountType)

Initialisiert eine neue Instanz der WindowsIdentity-Klasse für den Benutzer, der durch das angegebene Windows-Kontotoken, den angegebenen Authentifizierungstyp und den angegebenen Windows-Kontotyp dargestellt wird.

WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)

Initialisiert eine neue Instanz der WindowsIdentity Klasse für den Benutzer, der durch das angegebene Windows-Kontotoken, den angegebenen Authentifizierungstyp, den angegebenen Windows-Kontotyp und den angegebenen Authentifizierungsstatus dargestellt wird.

WindowsIdentity(IntPtr)

Initialisiert eine neue Instanz der WindowsIdentity Klasse für den Benutzer, der durch das angegebene Windows-Kontotoken dargestellt wird.

public:
 WindowsIdentity(IntPtr userToken);
public WindowsIdentity (IntPtr userToken);
new System.Security.Principal.WindowsIdentity : nativeint -> System.Security.Principal.WindowsIdentity
Public Sub New (userToken As IntPtr)

Parameter

userToken
IntPtr

nativeint

Das Kontotoken für den Benutzer, in dessen Auftrag der Code ausgeführt wird.

Ausnahmen

userToken ist 0.

-oder-

userToken ist dupliziert und für identitätswechsel ungültig.

Der Aufrufer verfügt nicht über die richtigen Berechtigungen.

-oder-

Es ist ein Win32-Fehler aufgetreten.

Hinweise

In der folgenden Tabelle sind die anfänglichen Eigenschaftswerte für eine Instanz von WindowsIdentityaufgeführt.

Eigentum Anfangswert
AuthenticationType Negotiate
WindowsAccountType Normal
IsAuthenticated false

Anmerkung

Sie können das durch userToken dargestellte Token abrufen, indem Sie nicht verwalteten Code wie die Windows-API LogonUser-Funktion aufrufen. Lassen Sie userToken immer los, indem Sie die Windows-API-CloseHandle-Funktion aufrufen. Weitere Informationen zum Aufrufen von nicht verwalteten Code finden Sie unter Verwenden von nicht verwalteten DLL-Funktionen.

Gilt für:

WindowsIdentity(WindowsIdentity)

Initialisiert eine neue Instanz der WindowsIdentity Klasse mithilfe des angegebenen WindowsIdentity-Objekts.

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)

Parameter

identity
WindowsIdentity

Das Objekt, aus dem die neue Instanz von WindowsIdentityerstellt werden soll.

Gilt für:

WindowsIdentity(String)

Initialisiert eine neue Instanz der WindowsIdentity-Klasse für den Benutzer, der durch den angegebenen Benutzerprinzipalnamen (User Principal Name, UPN) dargestellt wird.

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)

Parameter

sUserPrincipalName
String

Der UPN für den Benutzer, dessen Auftrag der Code ausgeführt wird.

Ausnahmen

Windows hat den Windows NT-Statuscode STATUS_ACCESS_DENIED zurückgegeben.

Es ist nicht genügend Arbeitsspeicher verfügbar.

Der Aufrufer verfügt nicht über die richtigen Berechtigungen.

-oder-

Der Computer ist nicht an eine Windows 2003- oder höher-Domäne angefügt.

-oder-

Auf dem Computer wird Windows 2003 oder höher nicht ausgeführt.

-oder-

Der Benutzer ist kein Mitglied der Domäne, an die der Computer angefügt ist.

Hinweise

Ein UPN weist das Format Benutzernamen@Domänennamen.com, d. h. eine E-Mail-Adresse, auf. Der in sUserPrincipalName identifizierte UPN wird verwendet, um ein Token für diesen Benutzer über die Windows-API LsaLogonUser-Funktion abzurufen. Dieses Token wird wiederum verwendet, um den Benutzer zu identifizieren. Eine Ausnahme kann aufgrund der Unfähigkeit zur Anmeldung mithilfe des bereitgestellten UPN zurückgegeben werden.

Anmerkung

Dieser Konstruktor ist nur für Computer vorgesehen, die mit Windows Server 2003 oder höher verbunden sind. Für frühere Domänentypen wird eine Ausnahme ausgelöst. Diese Einschränkung liegt daran, dass dieser Konstruktor die KERB_S4U_LOGON Strukturverwendet, die erstmals in Windows Server 2003 eingeführt wurde. Außerdem erfordert dieser Konstruktor Lesezugriff auf das Tokengruppen-global-and-universal (TGGAU)-Attribut für das Zielbenutzerkonto.

Gilt für:

WindowsIdentity(IntPtr, String)

Initialisiert eine neue Instanz der WindowsIdentity Klasse für den Benutzer, der durch das angegebene Windows-Kontotoken und den angegebenen Authentifizierungstyp dargestellt wird.

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)

Parameter

userToken
IntPtr

nativeint

Das Kontotoken für den Benutzer, in dessen Auftrag der Code ausgeführt wird.

type
String

(Nur Informationsverwendung.) Der Typ der Authentifizierung, die zum Identifizieren des Benutzers verwendet wird.

Ausnahmen

userToken ist 0.

-oder-

userToken ist dupliziert und für identitätswechsel ungültig.

Der Aufrufer verfügt nicht über die richtigen Berechtigungen.

-oder-

Es ist ein Win32-Fehler aufgetreten.

Beispiele

Der folgende Code zeigt die Verwendung des WindowsIdentity-Konstruktors, um eine neue Instanz der WindowsIdentity Klasse für den Benutzer zu erstellen, der durch das angegebene Windows-Kontotoken und den angegebenen Authentifizierungstyp dargestellt wird. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die WindowsIdentity-Klasse bereitgestellt wird.

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

Hinweise

In der folgenden Tabelle sind die anfänglichen Eigenschaftswerte für eine Instanz von WindowsIdentityaufgeführt.

Eigentum Anfangswert
WindowsAccountType Normal
IsAuthenticated false

Der Wert des type-Parameters wird verwendet, um den AuthenticationType Parameter festzulegen. Wenn typenullist, legt das Sicherheitssystem AuthenticationType auf Negotiate unter Windows Vista und höheren Versionen des Windows-Betriebssystems fest und Kerberos auf früheren Versionen des Windows-Betriebssystems. Das Sicherheitssystem verwendet diesen Wert nicht; es dient nur zur Informationsverwendung.

Anmerkung

Sie können das durch userToken dargestellte Token abrufen, indem Sie nicht verwalteten Code wie die Windows-API LogonUser-Funktion aufrufen. Lassen Sie userToken immer los, indem Sie die Windows-API-CloseHandle-Funktion aufrufen. Weitere Informationen zum Aufrufen von nicht verwalteten Code finden Sie unter Verwenden von nicht verwalteten DLL-Funktionen.

Gilt für:

WindowsIdentity(SerializationInfo, StreamingContext)

Achtung

This API supports obsolete formatter-based serialization. It should not be called or extended by application code.

Initialisiert eine neue Instanz der WindowsIdentity Klasse für den Benutzer, dargestellt durch Informationen in einem SerializationInfo Datenstrom.

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)

Parameter

info
SerializationInfo

Das Objekt, das die Kontoinformationen für den Benutzer enthält.

context
StreamingContext

Ein Objekt, das die Datenstrommerkmale angibt.

Attribute

Ausnahmen

Ein WindowsIdentity kann nicht über Prozesse hinweg serialisiert werden.

Der Aufrufer verfügt nicht über die richtigen Berechtigungen.

-oder-

Es ist ein Win32-Fehler aufgetreten.

Hinweise

Wichtig

Das Aufrufen dieser Methode mit nicht vertrauenswürdigen Daten ist ein Sicherheitsrisiko. Rufen Sie diese Methode nur mit vertrauenswürdigen Daten auf. Weitere Informationen finden Sie unter Überprüfen aller Eingaben.

Gilt für:

WindowsIdentity(String, String)

Initialisiert eine neue Instanz der WindowsIdentity Klasse für den Benutzer, dargestellt durch den angegebenen Benutzerprinzipalnamen (User Principal Name, UPN) und den angegebenen Authentifizierungstyp.

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)

Parameter

sUserPrincipalName
String

Der UPN für den Benutzer, dessen Auftrag der Code ausgeführt wird.

type
String

(Nur Informationsverwendung.) Der Typ der Authentifizierung, die zum Identifizieren des Benutzers verwendet wird.

Ausnahmen

Windows hat den Windows NT-Statuscode STATUS_ACCESS_DENIED zurückgegeben.

Es ist nicht genügend Arbeitsspeicher verfügbar.

Der Aufrufer verfügt nicht über die richtigen Berechtigungen.

-oder-

Der Computer ist nicht an eine Windows 2003- oder höher-Domäne angefügt.

-oder-

Auf dem Computer wird Windows 2003 oder höher nicht ausgeführt.

-oder-

Der Benutzer ist kein Mitglied der Domäne, an die der Computer angefügt ist.

Hinweise

Der Wert des type-Parameters wird verwendet, um den AuthenticationType Parameter festzulegen. Wenn typenullist, legt das Sicherheitssystem AuthenticationType auf Negotiate unter Windows Vista und höheren Versionen des Windows-Betriebssystems fest und Kerberos auf früheren Versionen des Windows-Betriebssystems. Das Sicherheitssystem verwendet diesen Wert nicht; es dient nur zur Informationsverwendung.

Der in sUserPrincipalName identifizierte UPN wird verwendet, um ein Token für diesen Benutzer über die Windows-API LsaLogonUser-Funktion abzurufen. Dieses Token wird wiederum verwendet, um den Benutzer zu identifizieren. Eine Ausnahme kann aufgrund der Unfähigkeit zur Anmeldung mithilfe des bereitgestellten UPN zurückgegeben werden.

Anmerkung

Dieser Konstruktor ist nur für Computer vorgesehen, die mit Windows Server 2003 oder höher verbunden sind. Für frühere Domänentypen wird eine Ausnahme ausgelöst. Diese Einschränkung liegt daran, dass dieser Konstruktor die KERB_S4U_LOGON Strukturverwendet, die erstmals in Windows Server 2003 eingeführt wurde. Außerdem erfordert dieser Konstruktor Lesezugriff auf das Tokengruppen-global-and-universal (TGGAU)-Attribut für das Zielbenutzerkonto.

Gilt für:

WindowsIdentity(IntPtr, String, WindowsAccountType)

Initialisiert eine neue Instanz der WindowsIdentity-Klasse für den Benutzer, der durch das angegebene Windows-Kontotoken, den angegebenen Authentifizierungstyp und den angegebenen Windows-Kontotyp dargestellt wird.

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)

Parameter

userToken
IntPtr

nativeint

Das Kontotoken für den Benutzer, in dessen Auftrag der Code ausgeführt wird.

type
String

(Nur Informationsverwendung.) Der Typ der Authentifizierung, die zum Identifizieren des Benutzers verwendet wird.

acctType
WindowsAccountType

Einer der Enumerationswerte.

Ausnahmen

userToken ist 0.

-oder-

userToken ist dupliziert und für identitätswechsel ungültig.

Der Aufrufer verfügt nicht über die richtigen Berechtigungen.

-oder-

Es ist ein Win32-Fehler aufgetreten.

Beispiele

Der folgende Code zeigt die Verwendung des WindowsIdentity-Konstruktors, um eine neue Instanz der WindowsIdentity Klasse für den Benutzer zu erstellen, der durch das angegebene Windows-Kontotoken, den angegebenen Authentifizierungstyp und den angegebenen Windows-Kontotyp dargestellt wird. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die WindowsIdentity-Klasse bereitgestellt wird.

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

Hinweise

In der folgenden Tabelle sind die anfänglichen Eigenschaftswerte für eine Instanz von WindowsIdentityaufgeführt.

Eigentum Anfangswert
IsAuthenticated false

Der Wert des type-Parameters wird verwendet, um den AuthenticationType Parameter festzulegen. Wenn typenullist, legt das Sicherheitssystem AuthenticationType auf Negotiate unter Windows Vista und höheren Versionen des Windows-Betriebssystems fest und Kerberos auf früheren Versionen des Windows-Betriebssystems. Das Sicherheitssystem verwendet diesen Wert nicht; es dient nur zur Informationsverwendung.

Anmerkung

Sie können das durch userToken dargestellte Token abrufen, indem Sie nicht verwalteten Code wie die Windows-API LogonUser-Funktion aufrufen. Lassen Sie userToken immer los, indem Sie die Windows-API-CloseHandle-Funktion aufrufen. Weitere Informationen zum Aufrufen von nicht verwalteten Code finden Sie unter Verwenden von nicht verwalteten DLL-Funktionen.

Gilt für:

WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)

Initialisiert eine neue Instanz der WindowsIdentity Klasse für den Benutzer, der durch das angegebene Windows-Kontotoken, den angegebenen Authentifizierungstyp, den angegebenen Windows-Kontotyp und den angegebenen Authentifizierungsstatus dargestellt wird.

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)

Parameter

userToken
IntPtr

nativeint

Das Kontotoken für den Benutzer, in dessen Auftrag der Code ausgeführt wird.

type
String

(Nur Informationsverwendung.) Der Typ der Authentifizierung, die zum Identifizieren des Benutzers verwendet wird.

acctType
WindowsAccountType

Einer der Enumerationswerte.

isAuthenticated
Boolean

true, um anzugeben, dass der Benutzer authentifiziert ist; andernfalls false.

Ausnahmen

userToken ist 0.

-oder-

userToken ist dupliziert und für identitätswechsel ungültig.

Der Aufrufer verfügt nicht über die richtigen Berechtigungen.

-oder-

Es ist ein Win32-Fehler aufgetreten.

Beispiele

Der folgende Code zeigt die Verwendung des WindowsIdentity-Konstruktors, um eine neue Instanz der WindowsIdentity Klasse für den Benutzer zu erstellen, der durch das angegebene Windows-Kontotoken dargestellt wird, den angegebenen Authentifizierungstyp, den angegebenen Windows-Kontotyp und den angegebenen Authentifizierungsstatus. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die WindowsIdentity-Klasse bereitgestellt wird.

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

Hinweise

Der Wert des type-Parameters wird verwendet, um den AuthenticationType Parameter festzulegen. Wenn typenullist, legt das Sicherheitssystem AuthenticationType auf Negotiate unter Windows Vista und höheren Versionen des Windows-Betriebssystems fest und Kerberos auf früheren Versionen des Windows-Betriebssystems. Das Sicherheitssystem verwendet diesen Wert nicht; es dient nur zur Informationsverwendung.

Sie können das durch userToken dargestellte Token abrufen, indem Sie nicht verwalteten Code wie die Windows-API LogonUser-Funktion aufrufen. Lassen Sie userToken immer los, indem Sie die Windows-API-CloseHandle-Funktion aufrufen. Weitere Informationen zum Aufrufen von nicht verwalteten Code finden Sie unter Verwenden von nicht verwalteten DLL-Funktionen.

Gilt für: