次の方法で共有


WindowsPrincipal.IsInRole メソッド (String)

現在のプリンシパルが、指定した名前の Windows ユーザー グループに属しているかどうかを確認します。

Overloads Public Overridable Function IsInRole( _
   ByVal role As String _) As Boolean Implements IPrincipal.IsInRole
[C#]
public virtual bool IsInRole(stringrole);
[C++]
public: virtual bool IsInRole(String* role);
[JScript]
public function IsInRole(
   role : String) : Boolean;

パラメータ

  • role
    メンバシップを確認する対象の Windows ユーザー グループの名前。

戻り値

現在のプリンシパルが、指定した Windows ユーザー グループのメンバである場合は true 。それ以外の場合は false

実装

IPrincipal.IsInRole

解説

組み込みのロールの場合は、 role 文字列を "BUILTIN\RoleNameHere" の形式にする必要があります。たとえば、Windows の管理者ロールのメンバシップを調べるには、ロールを表す文字列を "BUILTIN\Administrators" にする必要があります。円記号は、必要に応じてエスケープします。

コンピュータ固有のロール、またはドメイン固有のロールの場合は、 role 文字列をそれぞれ "MACHINENAME\RoleNameHere" および "DOMAINNAME\RoleNameHere" の形式にする必要があります。

メモ   .NET Framework Version 1.0 の場合、 role では大文字と小文字が区別されます。.NET Framework Version 1.1 以降の場合、 role パラメータでは大文字と小文字が区別されません。

ヒント   新しいユーザーや新しいグループなど、新しく作成されたロール情報をテストする場合は、ドメイン内でのロール情報の反映を強制するために、ログアウトとログインを行うことが重要です。これを行わない場合、 IsInRole テストを実行すると false が返されることがあります。

使用例

[Visual Basic, C#, C++] 組み込みのロールを表す文字列を使用して、 IsInRole を呼び出す方法を次の例に示します。

[Visual Basic, C#, C++] メモ   新しいユーザーや新しいグループなど、新しく作成されたロール情報をテストする場合は、ドメイン内でのロール情報の反映を強制するために、ログアウトとログインを行うことが重要です。これを行わない場合、 IsInRole テストを実行すると false が返されることがあります。

 

   Public Shared Sub DemonstrateWindowsBuiltInRoleEnum()
      Dim myDomain As AppDomain = Thread.GetDomain()
      
      myDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal)
      Dim myPrincipal As WindowsPrincipal = CType(Thread.CurrentPrincipal, WindowsPrincipal)
      
      
      Console.WriteLine("{0} belongs to: ", myPrincipal.Identity.Name.ToString())
      
      Dim wbirFields As Array = [Enum].GetValues(GetType(WindowsBuiltInRole))
      
      Dim roleName As Object
      For Each roleName In  wbirFields
         Try

            Console.WriteLine("{0}? {1}.", roleName, _
                              myPrincipal.IsInRole(CType(roleName, WindowsBuiltInRole)))

         Catch

        Console.WriteLine("{0}: Could not obtain the role for this RID.", roleName)

         End Try
      Next roleName

   End Sub 'DemonstrateWindowsBuiltInRoleEnum
   

[C#] 

   public static void DemonstrateWindowsBuiltInRoleEnum()
   {
    AppDomain myDomain = Thread.GetDomain();

    myDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
    WindowsPrincipal myPrincipal = (WindowsPrincipal)Thread.CurrentPrincipal;

    
    Console.WriteLine("{0} belongs to: ", myPrincipal.Identity.Name.ToString());

    Array wbirFields = Enum.GetValues(typeof(WindowsBuiltInRole));

    foreach (object roleName in wbirFields)
        {
       try
         {
            Console.WriteLine("{0}? {1}.", roleName,
                myPrincipal.IsInRole((WindowsBuiltInRole)roleName));
       } 
       catch (Exception)
           {
        Console.WriteLine("{0}: Could not obtain role for this RID.",
                roleName);
       }
        }        

   }


[C++] 
public:
   static void DemonstrateWindowsBuiltInRoleEnum() {
      AppDomain*  myDomain = Thread::GetDomain();

      myDomain->SetPrincipalPolicy(PrincipalPolicy::WindowsPrincipal);
      WindowsPrincipal*  myPrincipal = dynamic_cast<WindowsPrincipal*>(Thread::CurrentPrincipal);

      Console::WriteLine(S"{0} belongs to: ", myPrincipal->Identity->Name);

      Array*  wbirFields = Enum::GetValues(__typeof(WindowsBuiltInRole));

      System::Collections::IEnumerator* myEnum = wbirFields->GetEnumerator();
      while (myEnum->MoveNext()) {
         Object* roleName = __try_cast<Object*>(myEnum->Current);
         try {
            Console::WriteLine(S"{0}? {1}.", roleName,
               __box(myPrincipal->IsInRole(dynamic_cast<String __gc *>(roleName))));
         } catch (Exception*) {
            Console::WriteLine(S"{0}: Could not obtain role for this RID.",
               roleName);
         }
      }
   }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

WindowsPrincipal クラス | WindowsPrincipal メンバ | System.Security.Principal 名前空間 | WindowsPrincipal.IsInRole オーバーロードの一覧