Sdílet prostřednictvím


WindowsIdentity Konstruktory

Definice

Inicializuje novou instanci WindowsIdentity třídy .

Přetížení

WindowsIdentity(IntPtr)

Inicializuje novou instanci WindowsIdentity třídy pro uživatele reprezentované zadaným tokenem účtu systému Windows.

WindowsIdentity(WindowsIdentity)

Inicializuje novou instanci WindowsIdentity třídy pomocí zadaného WindowsIdentity objektu.

WindowsIdentity(String)

Inicializuje novou instanci WindowsIdentity třídy pro uživatele reprezentovaného zadaným hlavním názvem uživatele (UPN).

WindowsIdentity(IntPtr, String)

Inicializuje novou instanci WindowsIdentity třídy pro uživatele reprezentované zadaným tokenem účtu systému Windows a zadaným typem ověřování.

WindowsIdentity(SerializationInfo, StreamingContext)
Zastaralé.

Inicializuje novou instanci WindowsIdentity třídy pro uživatele reprezentované informacemi v datovém SerializationInfo proudu.

WindowsIdentity(String, String)

Inicializuje novou instanci WindowsIdentity třídy pro uživatele reprezentované zadaným hlavním názvem uživatele (UPN) a zadaným typem ověřování.

WindowsIdentity(IntPtr, String, WindowsAccountType)

Inicializuje novou instanci WindowsIdentity třídy pro uživatele reprezentovaného zadaným tokenem účtu systému Windows, zadaným typem ověřování a zadaným typem účtu systému Windows.

WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)

Inicializuje novou instanci WindowsIdentity třídy pro uživatele reprezentované zadaným tokenem účtu systému Windows, zadaným typem ověřování, zadaným typem účtu systému Windows a zadaným stavem ověřování.

WindowsIdentity(IntPtr)

Inicializuje novou instanci WindowsIdentity třídy pro uživatele reprezentované zadaným tokenem účtu systému Windows.

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

Parametry

userToken
IntPtr

nativeint

Token účtu pro uživatele, jehož jménem je kód spuštěn.

Výjimky

userToken je 0.

-nebo-

userToken je duplicitní a neplatný pro zosobnění.

Volající nemá správná oprávnění.

-nebo-

Došlo k chybě Win32.

Poznámky

Následující tabulka obsahuje počáteční hodnoty vlastností pro instanci .WindowsIdentity

Vlastnost Počáteční hodnota
AuthenticationType Negotiate
WindowsAccountType Normal
IsAuthenticated false

Poznámka

Token reprezentovaný userToken pomocí můžete načíst voláním nespravovaného kódu, jako je funkce rozhraní API LogonUser systému Windows. Vždy uvolněte userToken voláním funkce rozhraní API CloseHandle systému Windows. Další informace o volání nespravovaného kódu naleznete v tématu Využití nespravovaných funkcí knihovny DLL.

Platí pro

WindowsIdentity(WindowsIdentity)

Inicializuje novou instanci WindowsIdentity třídy pomocí zadaného WindowsIdentity objektu.

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)

Parametry

identity
WindowsIdentity

Objekt, ze kterého se má vytvořit nová instance objektu WindowsIdentity.

Platí pro

WindowsIdentity(String)

Inicializuje novou instanci WindowsIdentity třídy pro uživatele reprezentovaného zadaným hlavním názvem uživatele (UPN).

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)

Parametry

sUserPrincipalName
String

Hlavní název uživatele (UPN) uživatele, jehož jménem je kód spuštěn.

Výjimky

Systém Windows vrátil stavový kód systému Windows NT STATUS_ACCESS_DENIED.

Není k dispozici dostatek paměti.

Volající nemá správná oprávnění.

-nebo-

Počítač není připojen k doméně systému Windows 2003 nebo novější.

-nebo-

V počítači není spuštěn systém Windows 2003 nebo novější.

-nebo-

Uživatel není členem domény, ke které je počítač připojený.

Poznámky

Hlavní název uživatele (UPN) má formát název_domény.com@, jinými slovy e-mailovou adresu. Hlavní název uživatele (UPN) identifikovaný v sUserPrincipalName se používá k načtení tokenu pro daného uživatele prostřednictvím funkce rozhraní API LsaLogonUser systému Windows. Tento token se pak použije k identifikaci uživatele. Může se vrátit výjimka z důvodu nemožnosti přihlásit se pomocí zadaného hlavního názvu uživatele (UPN).

Poznámka

Tento konstruktor je určen pouze pro počítače připojené k doménám systému Windows Server 2003 nebo novějším. U starších typů domén se vyvolá výjimka. Toto omezení je způsobeno skutečností, že tento konstruktor používá strukturu KERB_S4U_LOGON, která byla poprvé zavedena v systému Windows Server 2003. Tento konstruktor také vyžaduje přístup pro čtení k atributu token-groups-global-and-universal (TGGAU) v cílovém uživatelském účtu.

Platí pro

WindowsIdentity(IntPtr, String)

Inicializuje novou instanci WindowsIdentity třídy pro uživatele reprezentované zadaným tokenem účtu systému Windows a zadaným typem ověřování.

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)

Parametry

userToken
IntPtr

nativeint

Token účtu pro uživatele, jehož jménem je kód spuštěn.

type
String

(Pouze informativní použití.) Typ ověřování použitého k identifikaci uživatele.

Výjimky

userToken je 0.

-nebo-

userToken je duplicitní a neplatný pro zosobnění.

Volající nemá správná oprávnění.

-nebo-

Došlo k chybě Win32.

Příklady

Následující kód ukazuje použití konstruktoru WindowsIdentity k vytvoření nové instance WindowsIdentity třídy pro uživatele reprezentovaného zadaným tokenem účtu systému Windows a zadaným typem ověřování. Tento příklad kódu je součástí většího příkladu WindowsIdentity pro třídu.

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

Poznámky

Následující tabulka obsahuje počáteční hodnoty vlastností pro instanci .WindowsIdentity

Vlastnost Počáteční hodnota
WindowsAccountType Normal
IsAuthenticated false

Hodnota parametru se type používá k nastavení parametru AuthenticationType . Pokud type je null, systém zabezpečení nastaví AuthenticationType na Negotiate ve Windows Vista a novějších verzích operačního systému Windows a ve starších verzích operačního systému Windows na Kerberos . Bezpečnostní systém tuto hodnotu nepoužívá; je určen pouze pro informační použití.

Poznámka

Token reprezentovaný userToken pomocí můžete načíst voláním nespravovaného kódu, jako je funkce rozhraní API LogonUser systému Windows. Vždy uvolněte userToken voláním funkce rozhraní API CloseHandle systému Windows. Další informace o volání nespravovaného kódu naleznete v tématu Využití nespravovaných funkcí knihovny DLL.

Platí pro

WindowsIdentity(SerializationInfo, StreamingContext)

Upozornění

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

Inicializuje novou instanci WindowsIdentity třídy pro uživatele reprezentované informacemi v datovém SerializationInfo proudu.

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)

Parametry

info
SerializationInfo

Objekt obsahující informace o účtu uživatele.

context
StreamingContext

Objekt, který označuje charakteristiky streamu.

Atributy

Výjimky

Objekt WindowsIdentity nelze serializovat napříč procesy.

Volající nemá správná oprávnění.

-nebo-

Došlo k chybě Win32.

Poznámky

Důležité

Volání této metody s nedůvěryhodnými daty představuje bezpečnostní riziko. Tuto metodu volejte pouze s důvěryhodnými daty. Další informace najdete v tématu Ověření všech vstupů.

Platí pro

WindowsIdentity(String, String)

Inicializuje novou instanci WindowsIdentity třídy pro uživatele reprezentované zadaným hlavním názvem uživatele (UPN) a zadaný typ ověřování.

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)

Parametry

sUserPrincipalName
String

Hlavní název uživatele (UPN) pro uživatele, jehož jménem je kód spuštěn.

type
String

(Pouze informativní použití.) Typ ověřování použitý k identifikaci uživatele.

Výjimky

Systém Windows vrátil stavový kód systému Windows NT STATUS_ACCESS_DENIED.

Není k dispozici dostatek paměti.

Volající nemá správná oprávnění.

-nebo-

Počítač není připojen k doméně systému Windows 2003 nebo novější.

-nebo-

V počítači není spuštěn systém Windows 2003 nebo novější.

-nebo-

Uživatel není členem domény, ke které je počítač připojený.

Poznámky

Hodnota parametru se type používá k nastavení parametru AuthenticationType . Pokud type je null, systém zabezpečení nastaví AuthenticationType na v Negotiate systému Windows Vista a novějších verzích operačního systému Windows a na na Kerberos ve starších verzích operačního systému Windows. Systém zabezpečení tuto hodnotu nepoužívá; slouží pouze k informačnímu použití.

Hlavní název uživatele (UPN) identifikovaný v sUserPrincipalName se používá k načtení tokenu pro daného uživatele prostřednictvím funkce rozhraní API LsaLogonUser systému Windows. Tento token se pak použije k identifikaci uživatele. Může se vrátit výjimka z důvodu nemožnosti přihlásit se pomocí zadaného hlavního názvu uživatele (UPN).

Poznámka

Tento konstruktor je určen pouze pro použití v počítačích připojených k doménám systému Windows Server 2003 nebo novějším. U starších typů domén se vyvolá výjimka. Toto omezení je způsobeno skutečností, že tento konstruktor používá strukturu KERB_S4U_LOGON, která byla poprvé zavedena v systému Windows Server 2003. Tento konstruktor také vyžaduje přístup pro čtení k atributu token-groups-global-and-universal (TGGAU) cílového uživatelského účtu.

Platí pro

WindowsIdentity(IntPtr, String, WindowsAccountType)

Inicializuje novou instanci WindowsIdentity třídy pro uživatele reprezentované zadaným tokenem účtu systému Windows, zadaný typ ověřování a zadaný typ účtu systému Windows.

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)

Parametry

userToken
IntPtr

nativeint

Token účtu pro uživatele, jehož jménem je kód spuštěn.

type
String

(Pouze informativní použití.) Typ ověřování použitý k identifikaci uživatele.

acctType
WindowsAccountType

Jedna z hodnot výčtu

Výjimky

userToken je 0.

-nebo-

userToken je duplicitní a neplatný pro zosobnění.

Volající nemá správná oprávnění.

-nebo-

Došlo k chybě Win32.

Příklady

Následující kód ukazuje použití konstruktoru WindowsIdentity k vytvoření nové instance WindowsIdentity třídy pro uživatele reprezentovaného zadaným tokenem účtu systému Windows, zadaný typ ověřování a zadaný typ účtu systému Windows. Tento příklad kódu je součástí většího příkladu WindowsIdentity pro třídu .

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

Poznámky

Následující tabulka uvádí počáteční hodnoty vlastností pro instanci .WindowsIdentity

Vlastnost Počáteční hodnota
IsAuthenticated false

Hodnota parametru se type používá k nastavení parametru AuthenticationType . Pokud type je null, systém zabezpečení nastaví AuthenticationType na v Negotiate systému Windows Vista a novějších verzích operačního systému Windows a na na Kerberos ve starších verzích operačního systému Windows. Systém zabezpečení tuto hodnotu nepoužívá; slouží pouze k informačnímu použití.

Poznámka

Token reprezentovaný userToken funkcí můžete načíst voláním nespravovaného kódu, jako je funkce rozhraní API LogonUser systému Windows. Vždy uvolněte userToken voláním funkce rozhraní API CloseHandle systému Windows. Další informace o volání nespravovaného kódu najdete v tématu Využití funkcí nespravovaných knihoven DLL.

Platí pro

WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)

Inicializuje novou instanci WindowsIdentity třídy pro uživatele reprezentované zadaným tokenem účtu systému Windows, zadaný typ ověřování, zadaný typ účtu systému Windows a zadaný stav ověřování.

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)

Parametry

userToken
IntPtr

nativeint

Token účtu pro uživatele, jehož jménem je kód spuštěn.

type
String

(Pouze informativní použití.) Typ ověřování použitý k identifikaci uživatele.

acctType
WindowsAccountType

Jedna z hodnot výčtu

isAuthenticated
Boolean

truek označení, že uživatel je ověřený; v opačném případě . false

Výjimky

userToken je 0.

-nebo-

userToken je duplicitní a neplatný pro zosobnění.

Volající nemá správná oprávnění.

-nebo-

Došlo k chybě Win32.

Příklady

Následující kód ukazuje použití konstruktoru WindowsIdentity k vytvoření nové instance WindowsIdentity třídy pro uživatele reprezentovaného zadaným tokenem účtu systému Windows, zadaný typ ověřování, zadaný typ účtu systému Windows a zadaný stav ověřování. Tento příklad kódu je součástí většího příkladu WindowsIdentity pro třídu .

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

Poznámky

Hodnota parametru se type používá k nastavení parametru AuthenticationType . Pokud type je null, systém zabezpečení nastaví AuthenticationType na v Negotiate systému Windows Vista a novějších verzích operačního systému Windows a na na Kerberos ve starších verzích operačního systému Windows. Systém zabezpečení tuto hodnotu nepoužívá; slouží pouze k informačnímu použití.

Token reprezentovaný userToken funkcí můžete načíst voláním nespravovaného kódu, jako je funkce rozhraní API LogonUser systému Windows. Vždy uvolněte userToken voláním funkce rozhraní API CloseHandle systému Windows. Další informace o volání nespravovaného kódu najdete v tématu Využití funkcí nespravovaných knihoven DLL.

Platí pro