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 unter Verwendung des angegebenen WindowsIdentity-Objekts.

WindowsIdentity(String)

Initialisiert eine neue Instanz der WindowsIdentity-Klasse für den Benutzer, der durch den angegebenen UPN (User Principal Name, Benutzerprinzipalname) 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, der durch Informationen in einem SerializationInfo-Stream dargestellt wird.

WindowsIdentity(String, String)

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

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, für den 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 ordnungsgemäßen Berechtigungen.

- oder -

Win32-Fehler.

Hinweise

Die folgende Tabelle zeigt die anfänglichen Eigenschaftswerte für eine instance von WindowsIdentity.

Eigenschaft Anfangswert
AuthenticationType Negotiate
WindowsAccountType Normal
IsAuthenticated false

Hinweis

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

Gilt für:

WindowsIdentity(WindowsIdentity)

Initialisiert eine neue Instanz der WindowsIdentity-Klasse unter Verwendung 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 WindowsIdentity erstellt werden soll.

Gilt für:

WindowsIdentity(String)

Initialisiert eine neue Instanz der WindowsIdentity-Klasse für den Benutzer, der durch den angegebenen UPN (User Principal Name, Benutzerprinzipalname) 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 des Benutzers, für den 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 ordnungsgemäßen Berechtigungen.

- oder -

Der Computer ist nicht mit einer Domäne verbunden, in der Windows 2003 oder höher ausgeführt wird.

- oder -

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

- oder -

Der Benutzer ist kein Mitglied der Domäne, in der sich der Computer befindet.

Hinweise

Ein UPN hat das Format benutzername@domainname.com, also eine E-Mail-Adresse. Der in sUserPrincipalName identifizierte UPN wird verwendet, um ein Token für diesen Benutzer über die Windows-API-Funktion LsaLogonUser abzurufen. Dieses Token wird wiederum verwendet, um den Benutzer zu identifizieren. Möglicherweise wird eine Ausnahme zurückgegeben, da sich die Anmeldung mit dem angegebenen UPN nicht durchführen lässt.

Hinweis

Dieser Konstruktor ist nur für die Verwendung auf Computern vorgesehen, die mit Windows Server 2003- oder höher-Domänen verknüpft sind. Für frühere Domänentypen wird eine Ausnahme ausgelöst. Diese Einschränkung ist darauf zurückzuführen, dass dieser Konstruktor die KERB_S4U_LOGON-Struktur verwendet, die erstmals in Windows Server 2003 eingeführt wurde. Außerdem erfordert dieser Konstruktor Lesezugriff auf das TGGAU-Attribut (token-groups-global-and-universal) 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, für den der Code ausgeführt wird.

type
String

(Nur für Informationszwecke.) Der zur Identifizierung des Benutzers verwendete Authentifizierungstyp.

Ausnahmen

userToken ist 0.

- oder -

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

Der Aufrufer verfügt nicht über die ordnungsgemäßen Berechtigungen.

- oder -

Win32-Fehler.

Beispiele

Der folgende Code zeigt die Verwendung des WindowsIdentity Konstruktors, um eine neue instance 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

Die folgende Tabelle zeigt die anfänglichen Eigenschaftswerte für eine instance von WindowsIdentity.

Eigenschaft Anfangswert
WindowsAccountType Normal
IsAuthenticated false

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

Hinweis

Sie können das von dargestellte userToken Token abrufen, indem Sie nicht verwalteten Code aufrufen, z. B. die Windows-API-Funktion LogonUser . Lassen Sie immer los userToken , indem Sie die Windows-API-Funktion CloseHandle aufrufen. Weitere Informationen zum Aufrufen von nicht verwaltetem Code finden Sie unter Verwenden nicht verwalteter 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, der durch Informationen in einem SerializationInfo-Stream dargestellt wird.

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 mit den Kontoinformationen für den Benutzer.

context
StreamingContext

Ein Objekt, das die Merkmale des Streams angibt.

Attribute

Ausnahmen

Eine WindowsIdentity kann nicht prozessübergreifend serialisiert werden.

Der Aufrufer verfügt nicht über die ordnungsgemäßen Berechtigungen.

- oder -

Win32-Fehler.

Hinweise

Wichtig

Das Aufrufen dieser Methode mit nicht vertrauenswürdigen Daten stellt ein Sicherheitsrisiko dar. 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, der durch den angegebenen UPN (User Principal Name, Benutzerprinzipalname) und den angegebenen Authentifizierungstyp dargestellt wird.

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 des Benutzers, für den der Code ausgeführt wird.

type
String

(Nur für Informationszwecke.) Der zur Identifizierung des Benutzers verwendete Authentifizierungstyp.

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 ordnungsgemäßen Berechtigungen.

- oder -

Der Computer ist nicht mit einer Domäne verbunden, in der Windows 2003 oder höher ausgeführt wird.

- oder -

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

- oder -

Der Benutzer ist kein Mitglied der Domäne, in der sich der Computer befindet.

Hinweise

Der Wert des type Parameters wird verwendet, um den AuthenticationType Parameter festzulegen. Wenn type ist, wird nulldas Sicherheitssystem unter Negotiate Windows Vista und höheren Versionen des Windows-Betriebssystems auf und in früheren Versionen des Windows-Betriebssystems auf Kerberos festgelegtAuthenticationType. 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-Funktion LsaLogonUser abzurufen. Dieses Token wird wiederum verwendet, um den Benutzer zu identifizieren. Möglicherweise wird eine Ausnahme zurückgegeben, da sich die Anmeldung mit dem angegebenen UPN nicht durchführen lässt.

Hinweis

Dieser Konstruktor ist nur für die Verwendung auf Computern vorgesehen, die mit Windows Server 2003- oder höher-Domänen verknüpft sind. Für frühere Domänentypen wird eine Ausnahme ausgelöst. Diese Einschränkung ist darauf zurückzuführen, dass dieser Konstruktor die KERB_S4U_LOGON-Struktur verwendet, die erstmals in Windows Server 2003 eingeführt wurde. Außerdem erfordert dieser Konstruktor Lesezugriff auf das TGGAU-Attribut (token-groups-global-and-universal) 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, für den der Code ausgeführt wird.

type
String

(Nur für Informationszwecke.) Der zur Identifizierung des Benutzers verwendete Authentifizierungstyp.

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 ordnungsgemäßen Berechtigungen.

- oder -

Win32-Fehler.

Beispiele

Der folgende Code zeigt die Verwendung des WindowsIdentity Konstruktors zum Erstellen einer neuen instance der WindowsIdentity -Klasse für den Benutzer, 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

Die folgende Tabelle zeigt die anfänglichen Eigenschaftswerte für eine instance von WindowsIdentity.

Eigenschaft Anfangswert
IsAuthenticated false

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

Hinweis

Sie können das von dargestellte userToken Token abrufen, indem Sie nicht verwalteten Code aufrufen, z. B. die Windows-API-Funktion LogonUser . Lassen Sie immer los userToken , indem Sie die Windows-API-Funktion CloseHandle aufrufen. Weitere Informationen zum Aufrufen von nicht verwaltetem Code finden Sie unter Verwenden nicht verwalteter 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, für den der Code ausgeführt wird.

type
String

(Nur für Informationszwecke.) Der zur Identifizierung des Benutzers verwendete Authentifizierungstyp.

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 ordnungsgemäßen Berechtigungen.

- oder -

Win32-Fehler.

Beispiele

Der folgende Code zeigt die Verwendung des WindowsIdentity Konstruktors, um eine neue instance der WindowsIdentity Klasse für den Benutzer zu erstellen, der durch das angegebene Windows-Kontotoken, den angegebenen Authentifizierungstyp, den angegebenen Windows-Kontotyp und die angegebene Authentifizierung status dargestellt wird. 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 type ist, wird nulldas Sicherheitssystem unter Negotiate Windows Vista und höheren Versionen des Windows-Betriebssystems auf und in früheren Versionen des Windows-Betriebssystems auf Kerberos festgelegtAuthenticationType. Das Sicherheitssystem verwendet diesen Wert nicht. es dient nur zur Informationsverwendung.

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

Gilt für: