This documentation is archived and is not being maintained.
WindowsIdentity Class
Visual Studio 2010
Represents a Windows user.
Assembly: mscorlib (in mscorlib.dll)
The WindowsIdentity type exposes the following members.
| Name | Description | |
|---|---|---|
![]() | WindowsIdentity(IntPtr) | Initializes a new instance of the WindowsIdentity class for the user represented by the specified Windows account token. |
![]() | WindowsIdentity(String) | Initializes a new instance of the WindowsIdentity class for the user represented by the specified User Principal Name (UPN). |
![]() | WindowsIdentity(IntPtr, String) | Initializes a new instance of the WindowsIdentity class for the user represented by the specified Windows account token and the specified authentication type. |
![]() | WindowsIdentity(SerializationInfo, StreamingContext) | Initializes a new instance of the WindowsIdentity class for the user represented by information in a SerializationInfo stream. |
![]() | WindowsIdentity(String, String) | Initializes a new instance of the WindowsIdentity class for the user represented by the specified User Principal Name (UPN) and the specified authentication type. |
![]() | WindowsIdentity(IntPtr, String, WindowsAccountType) | Initializes a new instance of the WindowsIdentity class for the user represented by the specified Windows account token, the specified authentication type, and the specified Windows account type. |
![]() | WindowsIdentity(IntPtr, String, WindowsAccountType, Boolean) | Initializes a new instance of the WindowsIdentity class for the user represented by the specified Windows account token, the specified authentication type, the specified Windows account type, and the specified authentication status. |
| Name | Description | |
|---|---|---|
![]() | AuthenticationType | Gets the type of authentication used to identify the user. |
![]() | Groups | Gets the groups the current Windows user belongs to. |
![]() | ImpersonationLevel | Gets the impersonation level for the user. |
![]() | IsAnonymous | Gets a value indicating whether the user account is identified as an anonymous account by the system. |
![]() | IsAuthenticated | Gets a value indicating whether the user has been authenticated by Windows. |
![]() | IsGuest | Gets a value indicating whether the user account is identified as a Guest account by the system. |
![]() | IsSystem | Gets a value indicating whether the user account is identified as a System account by the system. |
![]() | Name | Gets the user's Windows logon name. |
![]() | Owner | Gets the security identifier (SID) for the token owner. |
![]() | Token | Gets the Windows account token for the user. |
![]() | User | Gets the security identifier (SID) for the user. |
| Name | Description | |
|---|---|---|
![]() | Dispose() | Releases all resources used by the WindowsIdentity. |
![]() | Dispose(Boolean) | Releases the unmanaged resources used by the WindowsIdentity and optionally releases the managed resources. |
![]() | Equals(Object) | Determines whether the specified Object is equal to the current Object. (Inherited from Object.) |
![]() | Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) |
![]() ![]() | GetAnonymous | Returns a WindowsIdentity object that represents an anonymous user. |
![]() ![]() | GetCurrent() | Returns a WindowsIdentity object that represents the current Windows user. |
![]() ![]() | GetCurrent(Boolean) | Returns a WindowsIdentity object that represents the Windows identity for either the thread or the process, depending on the value of the ifImpersonating parameter. |
![]() ![]() | GetCurrent(TokenAccessLevels) | Returns a WindowsIdentity object that represents the current Windows user, using the specified desired token access level. |
![]() | GetHashCode | Serves as a hash function for a particular type. (Inherited from Object.) |
![]() | GetType | Gets the Type of the current instance. (Inherited from Object.) |
![]() | Impersonate() | Impersonates the user represented by the WindowsIdentity object. |
![]() ![]() | Impersonate(IntPtr) | Impersonates the user represented by the specified user token. |
![]() | MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) |
![]() | ToString | Returns a string that represents the current object. (Inherited from Object.) |
| Name | Description | |
|---|---|---|
![]() ![]() | IDeserializationCallback::OnDeserialization | Infrastructure. Implements the ISerializable interface and is called back by the deserialization event when deserialization is complete. |
![]() ![]() | ISerializable::GetObjectData | Infrastructure. Sets the SerializationInfo object with the logical context information needed to recreate an instance of this execution context. |
Call the GetCurrent method to create a WindowsIdentity object that represents the current user.
The following example shows the use of members of WindowsIdentity class. For an example showing how to obtain a Windows account token through a call to the unmanaged Win32 LogonUser function, and use that token to impersonate another user, see the WindowsImpersonationContext class.
using namespace System; using namespace System::Security::Principal; void IntPtrConstructor( IntPtr logonToken ); void IntPtrStringConstructor( IntPtr logonToken ); void IntPrtStringTypeBoolConstructor( IntPtr logonToken ); void IntPtrStringTypeConstructor( IntPtr logonToken ); void UseProperties( IntPtr logonToken ); IntPtr LogonUser(); void GetAnonymousUser(); void ImpersonateIdentity( IntPtr logonToken ); [STAThread] int main() { // Retrieve the Windows account token for the current user. IntPtr logonToken = LogonUser(); // Constructor implementations. IntPtrConstructor( logonToken ); IntPtrStringConstructor( logonToken ); IntPtrStringTypeConstructor( logonToken ); IntPrtStringTypeBoolConstructor( logonToken ); // Property implementations. UseProperties( logonToken ); // Method implementations. GetAnonymousUser(); ImpersonateIdentity( logonToken ); Console::WriteLine( "This sample completed successfully; " "press Enter to exit." ); Console::ReadLine(); } // Create a WindowsIdentity object for the user represented by the // specified Windows account token. void IntPtrConstructor( IntPtr logonToken ) { // Construct a WindowsIdentity object using the input account token. WindowsIdentity^ windowsIdentity = gcnew WindowsIdentity( logonToken ); Console::WriteLine( "Created a Windows identity object named {0}.", windowsIdentity->Name ); } // Create a WindowsIdentity object for the user represented by the // specified account token and authentication type. 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 ); } // Create a WindowsIdentity object for the user represented by the // specified account token, authentication type and Windows account // type. 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 ); } // Create a WindowsIdentity object for the user represented by the // specified account token, authentication type, Windows account type and // Boolean authentication flag. 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 ); } // Access the properties of a WindowsIdentity object. void UseProperties( IntPtr logonToken ) { WindowsIdentity^ windowsIdentity = gcnew WindowsIdentity( logonToken ); String^ propertyDescription = "The windows identity named "; // Retrieve the Windows logon name from the Windows identity object. propertyDescription = String::Concat( propertyDescription, windowsIdentity->Name ); // Verify that the user account is not considered to be an Anonymous // account by the system. if ( !windowsIdentity->IsAnonymous ) { propertyDescription = String::Concat( propertyDescription, ", is not an Anonymous account" ); } // Verify that the user account has been authenticated by Windows. if ( windowsIdentity->IsAuthenticated ) { propertyDescription = String::Concat( propertyDescription, ", is authenticated" ); } // Verify that the user account is considered to be a System account // by the system. if ( windowsIdentity->IsSystem ) { propertyDescription = String::Concat( propertyDescription, ", is a System account" ); } // Verify that the user account is considered to be a Guest account // by the system. if ( windowsIdentity->IsGuest ) { propertyDescription = String::Concat( propertyDescription, ", is a Guest account" ); } // Retrieve the authentication type for the String^ authenticationType = windowsIdentity->AuthenticationType; // Append the authenication type to the output message. if ( authenticationType != nullptr ) { propertyDescription = String::Format( "{0} and uses {1} authentication type.", propertyDescription, authenticationType ); } Console::WriteLine( propertyDescription ); } // Retrieve the account token from the current WindowsIdentity object // instead of calling the unmanaged LogonUser method in the advapi32.dll. IntPtr LogonUser() { IntPtr accountToken = WindowsIdentity::GetCurrent()->Token; return accountToken; } // Get the WindowsIdentity object for an Anonymous user. void GetAnonymousUser() { // Retrieve a WindowsIdentity object that represents an anonymous // Windows user. WindowsIdentity^ windowsIdentity = WindowsIdentity::GetAnonymous(); } // Impersonate a Windows identity. void ImpersonateIdentity( IntPtr logonToken ) { // Retrieve the Windows identity using the specified token. WindowsIdentity^ windowsIdentity = gcnew WindowsIdentity( logonToken ); // Create a WindowsImpersonationContext object by impersonating the // Windows identity. WindowsImpersonationContext^ impersonationContext = windowsIdentity->Impersonate(); Console::WriteLine( "Name of the identity after impersonation: {0}.", WindowsIdentity::GetCurrent()->Name ); // Stop impersonating the user. impersonationContext->Undo(); // Check the identity name. Console::Write( "Name of the identity after performing an Undo on the" ); Console::WriteLine( " impersonation: {0}", WindowsIdentity::GetCurrent()->Name ); }
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Show:





