Share via


WindowsIdentity Konstruktor

Definisi

Menginisialisasi instans baru kelas WindowsIdentity.

Overload

WindowsIdentity(IntPtr)

Menginisialisasi instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh token akun Windows yang ditentukan.

WindowsIdentity(WindowsIdentity)

Menginisialisasi instans WindowsIdentity baru kelas dengan menggunakan objek yang ditentukan WindowsIdentity .

WindowsIdentity(String)

Menginisialisasi instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh Nama Prinsipal Pengguna (UPN) yang ditentukan.

WindowsIdentity(IntPtr, String)

Menginisialisasi instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh token akun Windows yang ditentukan dan jenis autentikasi yang ditentukan.

WindowsIdentity(SerializationInfo, StreamingContext)
Kedaluwarsa.

Menginisialisasi instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh informasi dalam SerializationInfo aliran.

WindowsIdentity(String, String)

Menginisialisasi instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh Nama Prinsipal Pengguna (UPN) yang ditentukan dan jenis autentikasi yang ditentukan.

WindowsIdentity(IntPtr, String, WindowsAccountType)

Menginisialisasi instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh token akun Windows yang ditentukan, jenis autentikasi yang ditentukan, dan jenis akun Windows yang ditentukan.

WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)

Menginisialisasi instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh token akun Windows yang ditentukan, jenis autentikasi yang ditentukan, jenis akun Windows yang ditentukan, dan status autentikasi yang ditentukan.

WindowsIdentity(IntPtr)

Menginisialisasi instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh token akun Windows yang ditentukan.

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

Token akun untuk pengguna atas nama siapa kode berjalan.

Pengecualian

userToken adalah 0.

-atau-

userToken diduplikasi dan tidak valid untuk peniruan identitas.

Pemanggil tidak memiliki izin yang benar.

-atau-

Terjadi kesalahan Win32.

Keterangan

Tabel berikut ini memperlihatkan nilai properti awal untuk instans WindowsIdentity.

Properti Nilai awal
AuthenticationType Negotiate
WindowsAccountType Normal
IsAuthenticated false

Catatan

Anda dapat mengambil token yang diwakili dengan userToken memanggil kode yang tidak dikelola seperti fungsi Windows API LogonUser . Selalu rilis userToken dengan memanggil fungsi Windows API CloseHandle . Untuk informasi selengkapnya tentang memanggil kode yang tidak dikelola, lihat Mengonsumsi Fungsi DLL Tidak Terkelola.

Berlaku untuk

WindowsIdentity(WindowsIdentity)

Menginisialisasi instans WindowsIdentity baru kelas dengan menggunakan objek yang ditentukan 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)

Parameter

identity
WindowsIdentity

Objek tempat untuk membangun instans baru .WindowsIdentity

Berlaku untuk

WindowsIdentity(String)

Menginisialisasi instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh Nama Prinsipal Pengguna (UPN) yang ditentukan.

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

UPN untuk pengguna atas nama siapa kode berjalan.

Pengecualian

Windows mengembalikan kode status Windows NT STATUS_ACCESS_DENIED.

Tidak tersedia cukup memori.

Pemanggil tidak memiliki izin yang benar.

-atau-

Komputer tidak dilampirkan ke domain Windows 2003 atau yang lebih baru.

-atau-

Komputer tidak menjalankan Windows 2003 atau yang lebih baru.

-atau-

Pengguna bukan anggota domain tempat komputer dilampirkan.

Keterangan

UPN memiliki format nama@ penggunadomainname.com, dengan kata lain, alamat email. UPN yang diidentifikasi di sUserPrincipalName digunakan untuk mengambil token untuk pengguna tersebut melalui fungsi Windows API LsaLogonUser . Pada gilirannya token tersebut digunakan untuk mengidentifikasi pengguna. Pengecualian mungkin dikembalikan karena ketidakmampuan untuk masuk menggunakan UPN yang disediakan.

Catatan

Konstruktor ini ditujukan untuk digunakan hanya pada komputer yang bergabung ke domain Windows Server 2003 atau yang lebih baru. Pengecualian dilemparkan untuk jenis domain sebelumnya. Pembatasan ini disebabkan oleh fakta bahwa konstruktor ini menggunakan struktur KERB_S4U_LOGON, yang pertama kali diperkenalkan di Windows Server 2003. Selain itu, konstruktor ini memerlukan akses baca ke atribut token-groups-global-and-universal (TGGAU) pada akun pengguna target.

Berlaku untuk

WindowsIdentity(IntPtr, String)

Menginisialisasi instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh token akun Windows yang ditentukan dan jenis autentikasi yang ditentukan.

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

Token akun untuk pengguna atas nama siapa kode berjalan.

type
String

(Penggunaan informasi saja.) Jenis autentikasi yang digunakan untuk mengidentifikasi pengguna.

Pengecualian

userToken adalah 0.

-atau-

userToken diduplikasi dan tidak valid untuk peniruan identitas.

Pemanggil tidak memiliki izin yang benar.

-atau-

Terjadi kesalahan Win32.

Contoh

Kode berikut menunjukkan penggunaan WindowsIdentity konstruktor untuk membuat instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh token akun Windows yang ditentukan dan jenis autentikasi yang ditentukan. Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk WindowsIdentity kelas .

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

Keterangan

Tabel berikut ini memperlihatkan nilai properti awal untuk instans WindowsIdentity.

Properti Nilai awal
WindowsAccountType Normal
IsAuthenticated false

Nilai type parameter digunakan untuk mengatur AuthenticationType parameter . Jika type adalah null, sistem keamanan diatur AuthenticationType ke Negotiate pada Windows Vista dan versi yang lebih baru dari sistem operasi Windows, dan ke Kerberos pada versi sistem operasi Windows yang lebih lama. Sistem keamanan tidak menggunakan nilai ini; itu hanya untuk penggunaan informasi.

Catatan

Anda dapat mengambil token yang diwakili dengan userToken memanggil kode yang tidak dikelola seperti fungsi Windows API LogonUser . Selalu rilis userToken dengan memanggil fungsi Windows API CloseHandle . Untuk informasi selengkapnya tentang memanggil kode yang tidak dikelola, lihat Mengonsumsi Fungsi DLL Tidak Terkelola.

Berlaku untuk

WindowsIdentity(SerializationInfo, StreamingContext)

Perhatian

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

Menginisialisasi instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh informasi dalam SerializationInfo aliran.

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

Objek yang berisi informasi akun untuk pengguna.

context
StreamingContext

Objek yang menunjukkan karakteristik aliran.

Atribut

Pengecualian

tidak WindowsIdentity dapat diserialisasikan di seluruh proses.

Pemanggil tidak memiliki izin yang benar.

-atau-

Terjadi kesalahan Win32.

Keterangan

Penting

Memanggil metode ini dengan data yang tidak tepercaya adalah risiko keamanan. Panggil metode ini hanya dengan data tepercaya. Untuk informasi selengkapnya, lihat Memvalidasi Semua Input.

Berlaku untuk

WindowsIdentity(String, String)

Menginisialisasi instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh Nama Prinsipal Pengguna (UPN) yang ditentukan dan jenis autentikasi yang ditentukan.

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

UPN untuk pengguna atas nama siapa kode berjalan.

type
String

(Penggunaan informasi saja.) Jenis autentikasi yang digunakan untuk mengidentifikasi pengguna.

Pengecualian

Windows mengembalikan kode status Windows NT STATUS_ACCESS_DENIED.

Tidak tersedia cukup memori.

Pemanggil tidak memiliki izin yang benar.

-atau-

Komputer tidak dilampirkan ke domain Windows 2003 atau yang lebih baru.

-atau-

Komputer tidak menjalankan Windows 2003 atau yang lebih baru.

-atau-

Pengguna bukan anggota domain tempat komputer dilampirkan.

Keterangan

Nilai type parameter digunakan untuk mengatur AuthenticationType parameter . Jika type adalah null, sistem keamanan diatur AuthenticationType ke Negotiate pada Windows Vista dan versi sistem operasi Windows yang lebih baru, dan ke Kerberos pada versi sistem operasi Windows yang lebih lama. Sistem keamanan tidak menggunakan nilai ini; itu hanya untuk penggunaan informasi.

UPN yang diidentifikasi di sUserPrincipalName digunakan untuk mengambil token untuk pengguna tersebut melalui fungsi Windows API LsaLogonUser . Pada gilirannya token tersebut digunakan untuk mengidentifikasi pengguna. Pengecualian mungkin dikembalikan karena ketidakmampuan untuk masuk menggunakan UPN yang disediakan.

Catatan

Konstruktor ini ditujukan untuk digunakan hanya pada komputer yang bergabung ke domain Windows Server 2003 atau yang lebih baru. Pengecualian dilemparkan untuk jenis domain sebelumnya. Pembatasan ini disebabkan oleh fakta bahwa konstruktor ini menggunakan struktur KERB_S4U_LOGON, yang pertama kali diperkenalkan di Windows Server 2003. Selain itu, konstruktor ini memerlukan akses baca ke atribut token-groups-global-and-universal (TGGAU) pada akun pengguna target.

Berlaku untuk

WindowsIdentity(IntPtr, String, WindowsAccountType)

Menginisialisasi instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh token akun Windows yang ditentukan, jenis autentikasi yang ditentukan, dan jenis akun Windows yang ditentukan.

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

Token akun untuk pengguna yang atas nama kodenya berjalan.

type
String

(Penggunaan informasi saja.) Jenis autentikasi yang digunakan untuk mengidentifikasi pengguna.

acctType
WindowsAccountType

Salah satu nilai enumerasi.

Pengecualian

userToken adalah 0.

-atau-

userToken diduplikasi dan tidak valid untuk peniruan identitas.

Pemanggil tidak memiliki izin yang benar.

-atau-

Terjadi kesalahan Win32.

Contoh

Kode berikut menunjukkan penggunaan WindowsIdentity konstruktor untuk membuat instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh token akun Windows yang ditentukan, jenis autentikasi yang ditentukan, dan jenis akun Windows yang ditentukan. Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk WindowsIdentity kelas .

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

Keterangan

Tabel berikut ini memperlihatkan nilai properti awal untuk instans WindowsIdentity.

Properti Nilai Awal
IsAuthenticated false

Nilai type parameter digunakan untuk mengatur AuthenticationType parameter . Jika type adalah null, sistem keamanan diatur AuthenticationType ke Negotiate pada Windows Vista dan versi sistem operasi Windows yang lebih baru, dan ke Kerberos pada versi sistem operasi Windows yang lebih lama. Sistem keamanan tidak menggunakan nilai ini; itu hanya untuk penggunaan informasi.

Catatan

Anda dapat mengambil token yang diwakili dengan userToken memanggil kode yang tidak dikelola seperti fungsi Windows API LogonUser . Selalu rilis userToken dengan memanggil fungsi Windows API CloseHandle . Untuk informasi selengkapnya tentang memanggil kode yang tidak dikelola, lihat Mengonsumsi Fungsi DLL Yang Tidak Dikelola.

Berlaku untuk

WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean)

Menginisialisasi instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh token akun Windows yang ditentukan, jenis autentikasi yang ditentukan, jenis akun Windows yang ditentukan, dan status autentikasi yang ditentukan.

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

Token akun untuk pengguna yang atas nama kodenya berjalan.

type
String

(Penggunaan informasi saja.) Jenis autentikasi yang digunakan untuk mengidentifikasi pengguna.

acctType
WindowsAccountType

Salah satu nilai enumerasi.

isAuthenticated
Boolean

true untuk menunjukkan bahwa pengguna diautentikasi; jika tidak, false.

Pengecualian

userToken adalah 0.

-atau-

userToken diduplikasi dan tidak valid untuk peniruan identitas.

Pemanggil tidak memiliki izin yang benar.

-atau-

Terjadi kesalahan Win32.

Contoh

Kode berikut menunjukkan penggunaan WindowsIdentity konstruktor untuk membuat instans WindowsIdentity baru kelas untuk pengguna yang diwakili oleh token akun Windows yang ditentukan, jenis autentikasi yang ditentukan, jenis akun Windows yang ditentukan, dan status autentikasi yang ditentukan. Contoh kode ini adalah bagian dari contoh yang lebih besar yang disediakan untuk WindowsIdentity kelas .

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

Keterangan

Nilai type parameter digunakan untuk mengatur AuthenticationType parameter . Jika type adalah null, sistem keamanan diatur AuthenticationType ke Negotiate pada Windows Vista dan versi sistem operasi Windows yang lebih baru, dan ke Kerberos pada versi sistem operasi Windows yang lebih lama. Sistem keamanan tidak menggunakan nilai ini; itu hanya untuk penggunaan informasi.

Anda dapat mengambil token yang diwakili dengan userToken memanggil kode yang tidak dikelola seperti fungsi Windows API LogonUser . Selalu rilis userToken dengan memanggil fungsi Windows API CloseHandle . Untuk informasi selengkapnya tentang memanggil kode yang tidak dikelola, lihat Mengonsumsi Fungsi DLL Yang Tidak Dikelola.

Berlaku untuk