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 。
実装
解説
組み込みのロールの場合は、 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 オーバーロードの一覧