WindowsIdentityとは? わかりやすく解説

WindowsIdentity クラス

Windows ユーザーを表します。

名前空間: System.Security.Principal
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

<SerializableAttribute> _
<ComVisibleAttribute(True)> _
Public Class WindowsIdentity
    Implements IIdentity, ISerializable, IDeserializationCallback,
 IDisposable
Dim instance As WindowsIdentity
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public class WindowsIdentity : IIdentity, ISerializable,
 IDeserializationCallback, 
    IDisposable
[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public ref class WindowsIdentity : IIdentity,
 ISerializable, IDeserializationCallback, 
    IDisposable
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public class WindowsIdentity implements IIdentity,
 ISerializable, 
    IDeserializationCallback, IDisposable
SerializableAttribute 
ComVisibleAttribute(true) 
public class WindowsIdentity implements IIdentity,
 ISerializable, 
    IDeserializationCallback, IDisposable
解説解説
使用例使用例

WindowsIdentity クラスのメンバの使用例を次に示します。アンマネージの Win32 LogonUser 関数を呼び出して Windows アカウント トークンを取得し、そのトークンで別のユーザーを偽装する方法を示す例については、WindowsImpersonationContext クラスのトピックを参照してください。

Imports System
Imports System.Security.Principal
Module Module1

    Sub Main()

        ' Retrieve the Windows account token for the current user.
        Dim logonToken As IntPtr = LogonUser()

        ' Constructor implementations.
        IntPtrConstructor(logonToken)
        IntPtrStringConstructor(logonToken)
        IntPtrStringTypeConstructor(logonToken)
        IntPrtStringTypeBoolConstructor(logonToken)

        ' Property implementations.
        UseProperties(logonToken)

        ' Method implementations.
        GetAnonymousUser()
        ImpersonateIdentity(logonToken)

        ' Align interface and conclude application.
        Console.WriteLine(vbCrLf + "This sample completed "
 + _
            "successfully; press Enter to exit.")
        Console.ReadLine()

    End Sub
    ' Create a WindowsIdentity object for the user represented by the
    ' specified Windows account token.
    Private Sub IntPtrConstructor(ByVal
 logonToken As IntPtr)
        ' Construct a WindowsIdentity object using the input account
 token.
        Dim windowsIdentity As New
 WindowsIdentity(logonToken)

        WriteLine("Created a Windows identity object named "
 + _
            windowsIdentity.Name + ".")
    End Sub

    ' Create a WindowsIdentity object for the user represented by the
    ' specified account token and authentication type.
    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

    ' Create a WindowsIdentity object for the user represented by the
    ' specified account token, authentication type, and Windows account
    ' type.
    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

    ' Create a WindowsIdentity object for the user represented by the
    ' specified account token, authentication type, Windows account
 type,
    ' and Boolean authentication flag.
    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

    ' Access the properties of a WindowsIdentity object.
    Private Sub UseProperties(ByVal
 logonToken As IntPtr)
        Dim windowsIdentity As New
 WindowsIdentity(logonToken)
        Dim propertyDescription As String
 = "The Windows identity named "

        ' Retrieve the Windows logon name from the Windows identity
 object.
        propertyDescription += windowsIdentity.Name

        ' Verify that the user account is not considered to be an Anonymous
        ' account by the system.
        If Not windowsIdentity.IsAnonymous
 Then
            propertyDescription += " is not an Anonymous account"
        End If

        ' Verify that the user account has been authenticated by Windows.
        If (windowsIdentity.IsAuthenticated) Then
            propertyDescription += ", is authenticated"
        End If

        ' Verify that the user account is considered to be a System
 account by
        ' the system.
        If (windowsIdentity.IsSystem) Then
            propertyDescription += ", is a System account"
        End If

        ' Verify that the user account is considered to be a Guest account
 by
        ' the system.
        If (windowsIdentity.IsGuest) Then
            propertyDescription += ", is a Guest account"
        End If

        Dim authenticationType As String
 = windowsIdentity.AuthenticationType

        ' Append the authenication type to the output message.
        If (Not authenticationType Is
 Nothing) Then
            propertyDescription += (" and uses " +
 authenticationType)
            propertyDescription += (" authentication type.")
        End If

        WriteLine(propertyDescription)

        ' Display the SID for the owner.
        Console.Write("The SID for the owner is : ")
        Dim si As SecurityIdentifier
        si = windowsIdentity.Owner
        Console.WriteLine(si.ToString())
        ' Display the SIDs for the groups the current user belongs to.
        Console.WriteLine("Display the SIDs for the groups the
 current user belongs to.")
        Dim irc As IdentityReferenceCollection
        Dim ir As IdentityReference
        irc = windowsIdentity.Groups
        For Each ir In irc
            Console.WriteLine(ir.Value)
        Next
        Dim token As TokenImpersonationLevel
        token = windowsIdentity.ImpersonationLevel
        Console.WriteLine("The impersonation level for the current
 user is : " + token.ToString())
    End Sub
    ' Retrieve the account token from the current WindowsIdentity object
    ' instead of calling the unmanaged LogonUser method in the advapi32.dll.
    Private Function LogonUser() As
 IntPtr
        Dim accountToken As IntPtr = WindowsIdentity.GetCurrent().Token

        Return accountToken
    End Function

    ' Get the WindowsIdentity object for an Anonymous user.
    Private Sub GetAnonymousUser()
        ' Retrieve a WindowsIdentity object that represents an anonymous
        ' Windows user.
        Dim windowsIdentity As WindowsIdentity
        windowsIdentity = windowsIdentity.GetAnonymous()
    End Sub

    ' Impersonate a Windows identity.
    Private Sub ImpersonateIdentity(ByVal
 logonToken As IntPtr)
        ' Retrieve the Windows identity using the specified token.
        Dim windowsIdentity As New
 WindowsIdentity(logonToken)

        ' Create a WindowsImpersonationContext object by impersonating
 the
        ' Windows identity.
        Dim impersonationContext As WindowsImpersonationContext
        impersonationContext = windowsIdentity.Impersonate()

        WriteLine("Name of the identity after impersonation: "
 + _
            windowsIdentity.GetCurrent().Name + ".")

        ' Stop impersonating the user.
        impersonationContext.Undo()

        ' Check the identity.
        WriteLine("Name of the identity after performing an Undo
 on the " + _
            "impersonation: " + windowsIdentity.GetCurrent().Name
 + ".")
    End Sub
    ' Write out message with carriage return to output textbox.
    Private Sub WriteLine(ByVal
 message As String)
        Console.WriteLine(message + vbCrLf)
    End Sub

End Module

using System;
using System.Security.Principal;

class WindowsIdentityMembers
{
    [STAThread]
    static void Main(string[]
 args)
    {
        // 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.
    private static void
 IntPtrConstructor(IntPtr logonToken)
    {
        // Construct a WindowsIdentity object using the input account
 token.
        WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken);

        Console.WriteLine("Created a Windows identity object named " +
            windowsIdentity.Name + ".");
    }

 
    // Create a WindowsIdentity object for the user represented by the
    // specified account token and authentication type.
    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 + ".");
    }

    // Create a WindowsIdentity object for the user represented by the
    // specified account token, authentication type, and Windows account
    // type.
    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 + ".");
    }

    // Create a WindowsIdentity object for the user represented by the
    // specified account token, authentication type, Windows account
 type, and
    // Boolean authentication flag.
    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 + ".");
    }

    // Access the properties of a WindowsIdentity object.
    private static void
 UseProperties(IntPtr logonToken)
    {
        WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken);
        string propertyDescription = "The Windows identity
 named ";

        // Retrieve the Windows logon name from the Windows identity
 object.
        propertyDescription += windowsIdentity.Name;

        // Verify that the user account is not considered to be an Anonymous
        // account by the system.
        if (!windowsIdentity.IsAnonymous)
        {
            propertyDescription += " is not an Anonymous account";
        }

        // Verify that the user account has been authenticated by Windows.
        if (windowsIdentity.IsAuthenticated)
        {
            propertyDescription += ", is authenticated";
        }

        // Verify that the user account is considered to be a System
 account
        // by the system.
        if (windowsIdentity.IsSystem)
        {
            propertyDescription += ", is a System account";
        }

        // Verify that the user account is considered to be a Guest
 account
        // by the system.
        if (windowsIdentity.IsGuest)
        {
            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 != null)
        {
            propertyDescription += (" and uses " + authenticationType);
            propertyDescription += (" authentication type.");
        }

        Console.WriteLine(propertyDescription);

        // Display the SID for the owner.
        Console.Write("The SID for the owner is : ");
        SecurityIdentifier si = windowsIdentity.Owner;
        Console.WriteLine(si.ToString());
        // Display the SIDs for the groups the current user belongs
 to.
        Console.WriteLine("Display the SIDs for the groups
 the current user belongs to.");
        IdentityReferenceCollection irc = windowsIdentity.Groups;
        foreach (IdentityReference ir in irc)
            Console.WriteLine(ir.Value);
        TokenImpersonationLevel token = windowsIdentity.ImpersonationLevel;
        Console.WriteLine("The impersonation level for the
 current user is : " + token.ToString());
    }

    // Retrieve the account token from the current WindowsIdentity object
    // instead of calling the unmanaged LogonUser method in the advapi32.dll.
    private static IntPtr LogonUser()
    {
        IntPtr accountToken = WindowsIdentity.GetCurrent().Token;
        Console.WriteLine( "Token number is: " + accountToken.ToString());

        return accountToken;
    }

    // Get the WindowsIdentity object for an Anonymous user.
    private static void
 GetAnonymousUser()
    {
        // Retrieve a WindowsIdentity object that represents an anonymous
        // Windows user.
        WindowsIdentity windowsIdentity = WindowsIdentity.GetAnonymous();
    }

    // Impersonate a Windows identity.
    private static void
 ImpersonateIdentity(IntPtr logonToken)
    {
        // Retrieve the Windows identity using the specified token.
        WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken);

        // Create a WindowsImpersonationContext object by impersonating
 the
        // Windows identity.
        WindowsImpersonationContext impersonationContext =
            windowsIdentity.Impersonate();

        Console.WriteLine("Name of the identity after impersonation: "
            + WindowsIdentity.GetCurrent().Name + ".");
        Console.WriteLine(windowsIdentity.ImpersonationLevel);
        // 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: " +
            WindowsIdentity.GetCurrent().Name);
    }
}

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
 );
}

import System.*;
import System.Security.Principal.*;

class WindowsIdentityMembers
{
    /** @attribute STAThread()
     */
    public static void main(String[]
 args)
    {
        // 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();
    } //main

    // Create a WindowsIdentity object for the user represented by the
    // specified Windows account token.
    private static void
 IntPtrConstructor(IntPtr logonToken)
    {
        // Construct a WindowsIdentity object using the input account
 token.
        WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken);
        Console.WriteLine("Created a Windows identity object named "
            + windowsIdentity.get_Name() + ".");
    } //IntPtrConstructor

    // Create a WindowsIdentity object for the user represented by the
    // specified account token and authentication type.
    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.get_Name() + ".");
    } //IntPtrStringConstructor

    // Create a WindowsIdentity object for the user represented by the
    // specified account token, authentication type, and Windows account
    // type.
    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.get_Name() + ".");
    } //IntPtrStringTypeConstructor

    // Create a WindowsIdentity object for the user represented by the
    // specified account token, authentication type, Windows account
 type, and
    // Boolean authentication flag.
    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;
        boolean isAuthenticated = true;
        WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken
,
            authenticationType, guestAccount, isAuthenticated);
        Console.WriteLine("Created a Windows identity object named "
            + windowsIdentity.get_Name() + ".");
    } //IntPrtStringTypeBoolConstructor

    // Access the properties of a WindowsIdentity object.
    private static void
 UseProperties(IntPtr logonToken)
    {
        WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken);
        String propertyDescription = "The Windows identity named ";
        // Retrieve the Windows logon name from the Windows identity
 object.
        propertyDescription += windowsIdentity.get_Name();
        // Verify that the user account is not considered to be an Anonymous
        // account by the system.
        if (!(windowsIdentity.get_IsAnonymous()))
        {
            propertyDescription += " is not an Anonymous account";
        }
        // Verify that the user account has been authenticated by Windows.
        if (windowsIdentity.get_IsAuthenticated())
        {
            propertyDescription += ", is authenticated";
        }
        // Verify that the user account is considered to be a System
 account
        // by the system.
        if (windowsIdentity.get_IsSystem())
        {
            propertyDescription += ", is a System account";
        }
        // Verify that the user account is considered to be a Guest
 account
        // by the system.
        if (windowsIdentity.get_IsGuest())
        {
            propertyDescription += ", is a Guest account";
        }
        // Retrieve the authentication type for the 
        String authenticationType = windowsIdentity.get_AuthenticationType();
        // Append the authenication type to the output message.
        if (authenticationType != null)
        {
            propertyDescription += " and uses " + authenticationType;
            propertyDescription += " authentication type.";
        }

        Console.WriteLine(propertyDescription);

    } //UseProperties

    // Retrieve the account token from the current WindowsIdentity object
    // instead of calling the unmanaged LogonUser method in the advapi32.dll.
    private static IntPtr LogonUser()
    {
        IntPtr accountToken = WindowsIdentity.GetCurrent().get_Token();
        return accountToken;
    } //LogonUser

    // Get the WindowsIdentity object for an Anonymous user.
    private static void
 GetAnonymousUser()
    {
        // Retrieve a WindowsIdentity object that represents an anonymous
        // Windows user.
        WindowsIdentity windowsIdentity = WindowsIdentity.GetAnonymous();
    } //GetAnonymousUser

    // Impersonate a Windows identity.
    private static void
 ImpersonateIdentity(IntPtr logonToken)
    {
        // Retrieve the Windows identity using the specified token.
        WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken);
        // Create a WindowsImpersonationContext object by impersonating
 the
        // Windows identity.
        WindowsImpersonationContext impersonationContext
            = windowsIdentity.Impersonate();

        Console.WriteLine("Name of the identity after impersonation: "
            + WindowsIdentity.GetCurrent().get_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: "
            + WindowsIdentity.GetCurrent().get_Name());
    } //ImpersonateIdentity
} //WindowsIdentityMembers

継承階層継承階層
System.Object
  System.Security.Principal.WindowsIdentity
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
WindowsIdentity メンバ
System.Security.Principal 名前空間

WindowsIdentity コンストラクタ (String, String)

指定した UPN (User Principal Name) と指定した認証の種類で表されるユーザーを表す WindowsIdentity クラスの新しいインスタンスを初期化します。

名前空間: System.Security.Principal
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Sub New ( _
    sUserPrincipalName As String, _
    type As String _
)
Dim sUserPrincipalName As String
Dim type As String

Dim instance As New WindowsIdentity(sUserPrincipalName,
 type)
public WindowsIdentity (
    string sUserPrincipalName,
    string type
)
public:
WindowsIdentity (
    String^ sUserPrincipalName, 
    String^ type
)
public WindowsIdentity (
    String sUserPrincipalName, 
    String type
)
public function WindowsIdentity (
    sUserPrincipalName : String, 
    type : String
)

パラメータ

sUserPrincipalName

コードが実行されている対象ユーザーの UPN。

type

ユーザーを識別するために使用する認証の種類。

例外例外
例外の種類条件

UnauthorizedAccessException

Windows は、Windows NT ステータス コード STATUS_ACCESS_DENIED を返しました。

OutOfMemoryException

使用できるメモリが不足しています。

SecurityException

呼び出し元に、正しいアクセス許可がありません。

解説解説
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
WindowsIdentity クラス
WindowsIdentity メンバ
System.Security.Principal 名前空間

WindowsIdentity コンストラクタ (IntPtr)

指定した Windows アカウント トークンによって表されるユーザーを表す、WindowsIdentity クラスの新しいインスタンスを初期化します。

名前空間: System.Security.Principal
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Sub New ( _
    userToken As IntPtr _
)
Dim userToken As IntPtr

Dim instance As New WindowsIdentity(userToken)
public WindowsIdentity (
    IntPtr userToken
)
public:
WindowsIdentity (
    IntPtr userToken
)
public WindowsIdentity (
    IntPtr userToken
)
public function WindowsIdentity (
    userToken : IntPtr
)

パラメータ

userToken

コードが実行されている対象ユーザーのアカウント トークン。

例外例外
例外の種類条件

ArgumentException

userToken が 0 です。

または

userToken は、複製され、偽装に対して無効になっています。

SecurityException

呼び出し元に、正しいアクセス許可がありません。

または

Win32 エラーが発生しました。

解説解説

WindowsIdentity のインスタンスの初期プロパティ値を次の表に示します。

プロパティ

初期値

AuthenticationType

NTLM

WindowsAccountType

Normal

IsAuthenticated

false

使用例使用例

WindowsIdentity コンストラクタを使用し、現在の Windows アカウント トークンで表されるユーザーを表す WindowsIdentity クラスの新しいインスタンスを作成するコード例を次に示します。WindowsIdentity オブジェクトは、トークン所有者のセキュリティ識別子、および現在のユーザーが属しているグループの ID 参照を取得する場合に使用します。

Imports System
Imports System.Security.Principal

Class WindowsIdentityMembers

    <STAThread()> _
    Shared Sub Main(ByVal
 args() As String)
        Dim accountToken As IntPtr
        accountToken = WindowsIdentity.GetCurrent().Token
        Dim windowsIdentity1 As New
 WindowsIdentity(accountToken)
        Dim si As SecurityIdentifier = windowsIdentity1.Owner
        Console.WriteLine(si.ToString())
        si = windowsIdentity1.User
        Console.WriteLine(si.ToString())
        Dim irc As IdentityReferenceCollection
 = windowsIdentity1.Groups
        Dim ir As IdentityReference
        For Each ir In irc
            Console.WriteLine(ir.Value)
        Next ir
        Dim token As TokenImpersonationLevel
 = windowsIdentity1.ImpersonationLevel
        Console.WriteLine(token.ToString())

    End Sub 'Main 
End Class 'WindowsIdentityMembers
using System;
using System.Security.Principal;

class WindowsIdentityMembers
{
    [STAThread]
    static void Main(string[]
 args)
    {
        IntPtr accountToken = WindowsIdentity.GetCurrent().Token;
        WindowsIdentity windowsIdentity = new WindowsIdentity(accountToken);
        SecurityIdentifier si = windowsIdentity.Owner;
        Console.WriteLine(si.ToString());
        si = windowsIdentity.User;
        Console.WriteLine(si.ToString());
        IdentityReferenceCollection irc = windowsIdentity.Groups;
        foreach (IdentityReference ir in irc)
        {
            Console.WriteLine(ir.Value);
        }
        TokenImpersonationLevel token = windowsIdentity.ImpersonationLevel;
        Console.WriteLine(token.ToString());
    }
}
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
WindowsIdentity クラス
WindowsIdentity メンバ
System.Security.Principal 名前空間

WindowsIdentity コンストラクタ (IntPtr, String, WindowsAccountType, Boolean)

指定した Windows アカウント トークン、指定した認証の種類、指定した Windows アカウントの種類、および指定した認証ステータスによって表されるユーザーを表す、WindowsIdentity クラスの新しいインスタンスを初期化します。

名前空間: System.Security.Principal
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Sub New ( _
    userToken As IntPtr, _
    type As String, _
    acctType As WindowsAccountType, _
    isAuthenticated As Boolean _
)
Dim userToken As IntPtr
Dim type As String
Dim acctType As WindowsAccountType
Dim isAuthenticated As Boolean

Dim instance As New WindowsIdentity(userToken,
 type, acctType, isAuthenticated)
public WindowsIdentity (
    IntPtr userToken,
    string type,
    WindowsAccountType acctType,
    bool isAuthenticated
)
public:
WindowsIdentity (
    IntPtr userToken, 
    String^ type, 
    WindowsAccountType acctType, 
    bool isAuthenticated
)
public WindowsIdentity (
    IntPtr userToken, 
    String type, 
    WindowsAccountType acctType, 
    boolean isAuthenticated
)
public function WindowsIdentity (
    userToken : IntPtr, 
    type : String, 
    acctType : WindowsAccountType, 
    isAuthenticated : boolean
)

パラメータ

userToken

コードが実行されている対象ユーザーのアカウント トークン。

type

ユーザーを識別するために使用する認証の種類。

acctType

WindowsAccountType 値の 1 つ。

isAuthenticated

ユーザーが認証されていることを示す場合は true。それ以外の場合は false。

例外例外
例外の種類条件

ArgumentException

userToken が 0 です。

または

userToken は、複製され、偽装に対して無効になっています。

SecurityException

呼び出し元に、正しいアクセス許可がありません。

または

Win32 エラーが発生しました。

解説解説
使用例使用例

WindowsIdentity コンストラクタを使用し、指定した Windows アカウント トークン、指定した認証タイプ、指定した Windows アカウント タイプ、および指定した認証ステータスで表されるユーザーを表す WindowsIdentity クラスの新しいインスタンスを作成するコード例を次に示します。このコード例は、WindowsIdentity クラスのトピックで取り上げているコード例の一部分です。

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)
string authenticationType = "WindowsAuthentication";
WindowsAccountType guestAccount = WindowsAccountType.Guest;
bool isAuthenticated = true;
WindowsIdentity windowsIdentity = new WindowsIdentity(
    logonToken, authenticationType, guestAccount, isAuthenticated);
String^ authenticationType = "WindowsAuthentication";
WindowsAccountType guestAccount = WindowsAccountType::Guest;
bool isAuthenticated = true;
WindowsIdentity^ windowsIdentity = gcnew WindowsIdentity( logonToken,authenticationType,guestAccount,isAuthenticated
 );

String authenticationType = "WindowsAuthentication";
WindowsAccountType guestAccount = WindowsAccountType.Guest;
boolean isAuthenticated = true;
WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken
,
    authenticationType, guestAccount, isAuthenticated);
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
WindowsIdentity クラス
WindowsIdentity メンバ
System.Security.Principal 名前空間

WindowsIdentity コンストラクタ (SerializationInfo, StreamingContext)

SerializationInfo ストリーム内の情報で表されるユーザーを表す WindowsIdentity クラスの新しいインスタンスを初期化します。

名前空間: System.Security.Principal
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Sub New ( _
    info As SerializationInfo, _
    context As StreamingContext _
)
Dim info As SerializationInfo
Dim context As StreamingContext

Dim instance As New WindowsIdentity(info,
 context)
public WindowsIdentity (
    SerializationInfo info,
    StreamingContext context
)
public:
WindowsIdentity (
    SerializationInfo^ info, 
    StreamingContext context
)
public WindowsIdentity (
    SerializationInfo info, 
    StreamingContext context
)
public function WindowsIdentity (
    info : SerializationInfo, 
    context : StreamingContext
)

パラメータ

info

ユーザーのアカウント情報を格納する SerializationInfo。

context

ストリーム特性を示す StreamingContext。

例外例外
例外の種類条件

NotSupportedException

WindowsIdentity はプロセス間でシリアル化することはできません。

SecurityException

呼び出し元に、正しいアクセス許可がありません。

または

Win32 エラーが発生しました。

.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
WindowsIdentity クラス
WindowsIdentity メンバ
System.Security.Principal 名前空間

WindowsIdentity コンストラクタ

WindowsIdentity クラスの新しいインスタンスを初期化します。
オーバーロードの一覧オーバーロードの一覧

名前 説明
WindowsIdentity (IntPtr) 指定した Windows アカウント トークンによって表されるユーザーを表す、WindowsIdentity クラスの新しいインスタンスを初期化します。
WindowsIdentity (String) 指定した UPN (User Principal Name) で表されるユーザーを表す WindowsIdentity クラスの新しいインスタンスを初期化します。
WindowsIdentity (IntPtr, String) 指定した Windows アカウント トークンと指定した認証の種類によって表されるユーザーを表す、WindowsIdentity クラスの新しいインスタンスを初期化します。
WindowsIdentity (SerializationInfo, StreamingContext) SerializationInfo ストリーム内の情報で表されるユーザーを表す WindowsIdentity クラスの新しいインスタンスを初期化します。
WindowsIdentity (String, String) 指定した UPN (User Principal Name) と指定した認証の種類で表されるユーザーを表す WindowsIdentity クラスの新しいインスタンスを初期化します。
WindowsIdentity (IntPtr, String, WindowsAccountType) 指定した Windows アカウント トークン、指定した認証の種類、および指定した Windows アカウントの種類によって表されるユーザーを表す、WindowsIdentity クラスの新しいインスタンスを初期化します。
WindowsIdentity (IntPtr, String, WindowsAccountType, Boolean) 指定した Windows アカウント トークン、指定した認証の種類、指定した Windows アカウントの種類、および指定した認証ステータスによって表されるユーザーを表す、WindowsIdentity クラスの新しいインスタンスを初期化します。
参照参照

関連項目

WindowsIdentity クラス
WindowsIdentity メンバ
System.Security.Principal 名前空間

WindowsIdentity コンストラクタ (String)

指定した UPN (User Principal Name) で表されるユーザーを表す WindowsIdentity クラスの新しいインスタンスを初期化します。

名前空間: System.Security.Principal
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Sub New ( _
    sUserPrincipalName As String _
)
Dim sUserPrincipalName As String

Dim instance As New WindowsIdentity(sUserPrincipalName)
public WindowsIdentity (
    string sUserPrincipalName
)
public:
WindowsIdentity (
    String^ sUserPrincipalName
)
public WindowsIdentity (
    String sUserPrincipalName
)
public function WindowsIdentity (
    sUserPrincipalName : String
)

パラメータ

sUserPrincipalName

コードが実行されている対象ユーザーの UPN。

例外例外
例外の種類条件

UnauthorizedAccessException

Windows は、Windows NT ステータス コード STATUS_ACCESS_DENIED を返しました。

OutOfMemoryException

使用できるメモリが不足しています。

SecurityException

呼び出し元に、正しいアクセス許可がありません。

解説解説
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
WindowsIdentity クラス
WindowsIdentity メンバ
System.Security.Principal 名前空間

WindowsIdentity コンストラクタ (IntPtr, String)

指定した Windows アカウント トークンと指定した認証の種類によって表されるユーザーを表す、WindowsIdentity クラスの新しいインスタンスを初期化します。

名前空間: System.Security.Principal
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Sub New ( _
    userToken As IntPtr, _
    type As String _
)
Dim userToken As IntPtr
Dim type As String

Dim instance As New WindowsIdentity(userToken,
 type)
public WindowsIdentity (
    IntPtr userToken,
    string type
)
public:
WindowsIdentity (
    IntPtr userToken, 
    String^ type
)
public WindowsIdentity (
    IntPtr userToken, 
    String type
)
public function WindowsIdentity (
    userToken : IntPtr, 
    type : String
)

パラメータ

userToken

コードが実行されている対象ユーザーのアカウント トークン。

type

ユーザーを識別するために使用する認証の種類。

例外例外
例外の種類条件

ArgumentException

userToken が 0 です。

または

userToken は、複製され、偽装に対して無効になっています。

SecurityException

呼び出し元に、正しいアクセス許可がありません。

または

Win32 エラーが発生しました。

解説解説
使用例使用例

WindowsIdentity コンストラクタを使用し、指定した Windows アカウント トークンおよび指定した認証タイプで表されるユーザーを表す WindowsIdentity クラスの新しいインスタンスを作成するコード例を次に示します。このコード例は、WindowsIdentity クラスのトピックで取り上げているコード例の一部分です。

Dim authenticationType = "WindowsAuthentication"
Dim windowsIdentity As _
    New WindowsIdentity(logonToken, authenticationType)
string authenticationType = "WindowsAuthentication";
WindowsIdentity windowsIdentity =
    new WindowsIdentity(logonToken, authenticationType);
String^ authenticationType = "WindowsAuthentication";
WindowsIdentity^ windowsIdentity = gcnew WindowsIdentity( logonToken,authenticationType
 );

String authenticationType = "WindowsAuthentication";
WindowsIdentity windowsIdentity =
    new WindowsIdentity(logonToken, authenticationType);
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
WindowsIdentity クラス
WindowsIdentity メンバ
System.Security.Principal 名前空間

WindowsIdentity コンストラクタ (IntPtr, String, WindowsAccountType)

指定した Windows アカウント トークン、指定した認証の種類、および指定した Windows アカウントの種類によって表されるユーザーを表す、WindowsIdentity クラスの新しいインスタンスを初期化します。

名前空間: System.Security.Principal
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Sub New ( _
    userToken As IntPtr, _
    type As String, _
    acctType As WindowsAccountType _
)
Dim userToken As IntPtr
Dim type As String
Dim acctType As WindowsAccountType

Dim instance As New WindowsIdentity(userToken,
 type, acctType)
public WindowsIdentity (
    IntPtr userToken,
    string type,
    WindowsAccountType acctType
)
public:
WindowsIdentity (
    IntPtr userToken, 
    String^ type, 
    WindowsAccountType acctType
)
public WindowsIdentity (
    IntPtr userToken, 
    String type, 
    WindowsAccountType acctType
)
public function WindowsIdentity (
    userToken : IntPtr, 
    type : String, 
    acctType : WindowsAccountType
)

パラメータ

userToken

コードが実行されている対象ユーザーのアカウント トークン。

type

ユーザーを識別するために使用する認証の種類。

acctType

WindowsAccountType 値の 1 つ。

例外例外
例外の種類条件

ArgumentException

userToken が 0 です。

または

userToken は、複製され、偽装に対して無効になっています。

SecurityException

呼び出し元に、正しいアクセス許可がありません。

または

Win32 エラーが発生しました。

解説解説
使用例使用例

WindowsIdentity コンストラクタを使用し、指定した Windows アカウント トークン、指定した認証タイプ、および指定した Windows アカウント タイプで表されるユーザーを表す WindowsIdentity クラスの新しいインスタンスを作成するコード例を次に示します。このコード例は、WindowsIdentity クラスのトピックで取り上げているコード例の一部分です。

Dim authenticationType As String
 = "WindowsAuthentication"
Dim guestAccount As WindowsAccountType = WindowsAccountType.Guest
Dim windowsIdentity As _
    New WindowsIdentity(logonToken, authenticationType, guestAccount)
string authenticationType = "WindowsAuthentication";
WindowsAccountType guestAccount = WindowsAccountType.Guest;
WindowsIdentity windowsIdentity =
    new WindowsIdentity(logonToken, authenticationType, guestAccount);
String^ authenticationType = "WindowsAuthentication";
WindowsAccountType guestAccount = WindowsAccountType::Guest;
WindowsIdentity^ windowsIdentity = gcnew WindowsIdentity( logonToken,authenticationType,guestAccount
 );

String authenticationType = "WindowsAuthentication";
WindowsAccountType guestAccount = WindowsAccountType.Guest;
WindowsIdentity windowsIdentity = new WindowsIdentity(logonToken
,
    authenticationType, guestAccount);
.NET Framework のセキュリティ.NET Framework のセキュリティ
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
WindowsIdentity クラス
WindowsIdentity メンバ
System.Security.Principal 名前空間

WindowsIdentity プロパティ


WindowsIdentity メソッド


パブリック メソッドパブリック メソッド

プロテクト メソッドプロテクト メソッド
明示的インターフェイスの実装明示的インターフェイスの実装
  名前 説明
インターフェイスの明示的な実装 System.Runtime.Serialization.IDeserializationCallback.OnDeserialization ISerializable インターフェイスを実装し、逆シリアル化が完了したときに逆シリアル化イベントによってコールバックされます。
インターフェイスの明示的な実装 System.Runtime.Serialization.ISerializable.GetObjectData この実行コンテキストのインスタンスを再作成するのに必要な論理コンテキスト情報で、SerializationInfo オブジェクトを設定します。
参照参照

関連項目

WindowsIdentity クラス
System.Security.Principal 名前空間

WindowsIdentity メンバ

Windows ユーザーを表します。

WindowsIdentity データ型で公開されるメンバを以下の表に示します。


パブリック コンストラクタパブリック コンストラクタ
パブリック プロパティパブリック プロパティ
パブリック メソッドパブリック メソッド
プロテクト メソッドプロテクト メソッド
明示的インターフェイスの実装明示的インターフェイスの実装
  名前 説明
インターフェイスの明示的な実装 System.Runtime.Serialization.IDeserializationCallback.OnDeserialization ISerializable インターフェイスを実装し、逆シリアル化が完了したときに逆シリアル化イベントによってコールバックされます。
インターフェイスの明示的な実装 System.Runtime.Serialization.ISerializable.GetObjectData この実行コンテキストのインスタンスを再作成するのに必要な論理コンテキスト情報で、SerializationInfo オブジェクトを設定します。
参照参照

関連項目

WindowsIdentity クラス
System.Security.Principal 名前空間



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「WindowsIdentity」の関連用語

WindowsIdentityのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



WindowsIdentityのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS