WindowsPrincipal.IsInRole メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
現在のプリンシパルが、指定したWindowsユーザー グループに属しているかどうかを判断します。
オーバーロード
| 名前 | 説明 |
|---|---|
| IsInRole(Int32) |
現在のプリンシパルが、指定した相対識別子 (RID) を持つWindows ユーザー グループに属しているかどうかを判断します。 |
| IsInRole(SecurityIdentifier) |
現在のプリンシパルが、指定したセキュリティ識別子 (SID) を持つWindows ユーザー グループに属しているかどうかを判断します。 |
| IsInRole(WindowsBuiltInRole) |
現在のプリンシパルが、指定した WindowsBuiltInRole を持つWindows ユーザー グループに属しているかどうかを判断します。 |
| IsInRole(String) |
現在のプリンシパルが、指定した名前のWindowsユーザー グループに属しているかどうかを判断します。 |
注釈
このメソッドには 4 つのオーバーロードがあります。 パフォーマンス上の理由から、 IsInRole(SecurityIdentifier) オーバーロードを強くお勧めします。
IsInRole(Int32)
現在のプリンシパルが、指定した相対識別子 (RID) を持つWindows ユーザー グループに属しているかどうかを判断します。
public:
virtual bool IsInRole(int rid);
public virtual bool IsInRole(int rid);
override this.IsInRole : int -> bool
abstract member IsInRole : int -> bool
override this.IsInRole : int -> bool
Public Overridable Function IsInRole (rid As Integer) As Boolean
パラメーター
- rid
- Int32
プリンシパルのメンバーシップの状態を確認するWindows ユーザー グループの RID。
返品
現在のプリンシパルが指定したWindows ユーザー グループのメンバーである場合は true。それ以外の場合は false。
例
次のコード例は、 IsInRole メソッドの使用方法を示しています。 WindowsBuiltInRole列挙は、組み込みロールを識別する RID のソースとして使用されます。 RID は、現在のプリンシパルの役割を決定するために使用されます。
public:
static void DemonstrateWindowsBuiltInRoleEnum()
{
AppDomain^ myDomain = Thread::GetDomain();
myDomain->SetPrincipalPolicy( PrincipalPolicy::WindowsPrincipal );
WindowsPrincipal^ myPrincipal = dynamic_cast<WindowsPrincipal^>(Thread::CurrentPrincipal);
Console::WriteLine( "{0} belongs to: ", myPrincipal->Identity->Name );
Array^ wbirFields = Enum::GetValues( WindowsBuiltInRole::typeid );
for each ( Object^ roleName in wbirFields )
{
try
{
Console::WriteLine( "{0}? {1}.", roleName,
myPrincipal->IsInRole( *dynamic_cast<WindowsBuiltInRole^>(roleName) ) );
}
catch ( Exception^ )
{
Console::WriteLine( "{0}: Could not obtain role for this RID.",
roleName );
}
}
}
using System;
using System.Threading;
using System.Security.Permissions;
using System.Security.Principal;
class SecurityPrincipalDemo
{
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
{
// Cast the role name to a RID represented by the WindowsBuildInRole value.
Console.WriteLine("{0}? {1}.", roleName,
myPrincipal.IsInRole((WindowsBuiltInRole)roleName));
Console.WriteLine("The RID for this role is: " + ((int)roleName).ToString());
}
catch (Exception)
{
Console.WriteLine("{0}: Could not obtain role for this RID.",
roleName);
}
}
// Get the role using the string value of the role.
Console.WriteLine("{0}? {1}.", "Administrators",
myPrincipal.IsInRole("BUILTIN\\" + "Administrators"));
Console.WriteLine("{0}? {1}.", "Users",
myPrincipal.IsInRole("BUILTIN\\" + "Users"));
// Get the role using the WindowsBuiltInRole enumeration value.
Console.WriteLine("{0}? {1}.", WindowsBuiltInRole.Administrator,
myPrincipal.IsInRole(WindowsBuiltInRole.Administrator));
// Get the role using the WellKnownSidType.
SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid));
}
public static void Main()
{
DemonstrateWindowsBuiltInRoleEnum();
}
}
Imports System.Threading
Imports System.Security.Permissions
Imports System.Security.Principal
Class SecurityPrincipalDemo
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
' Cast the role name to a RID represented by the WindowsBuildInRole value.
Console.WriteLine("{0}? {1}.", roleName, myPrincipal.IsInRole(CType(roleName, WindowsBuiltInRole)))
Console.WriteLine("The RID for this role is: " + Fix(roleName).ToString())
Catch
Console.WriteLine("{0}: Could not obtain role for this RID.", roleName)
End Try
Next roleName
' Get the role using the string value of the role.
Console.WriteLine("{0}? {1}.", "Administrators", myPrincipal.IsInRole("BUILTIN\" + "Administrators"))
Console.WriteLine("{0}? {1}.", "Users", myPrincipal.IsInRole("BUILTIN\" + "Users"))
' Get the role using the WindowsBuiltInRole enumeration value.
Console.WriteLine("{0}? {1}.", WindowsBuiltInRole.Administrator, myPrincipal.IsInRole(WindowsBuiltInRole.Administrator))
' Get the role using the WellKnownSidType.
Dim sid As New SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, Nothing)
Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid))
End Sub
Public Shared Sub Main()
DemonstrateWindowsBuiltInRoleEnum()
End Sub
End Class
注釈
新しいユーザーや新しいグループなどの新しく作成されたロール情報をテストする場合は、ログアウトしてログインして、ドメイン内でロール情報を強制的に伝達することが重要です。 これを行わないと、 IsInRole テストで falseが返される可能性があります。
パフォーマンス上の理由から、 IsInRole(SecurityIdentifier) オーバーロードは、ユーザーのロールを決定するためのオーバーロードとして推奨されます。
Note
Windows Vista では、ユーザー アカウント制御 (UAC) によってユーザーの権限が決定されます。 組み込みの Administrators グループのメンバーである場合は、標準ユーザー アクセス トークンと管理者アクセス トークンという 2 つのランタイム アクセス トークンが割り当てられます。 既定では、標準のユーザー ロールになります。 管理特権を必要とするタスクを実行しようとすると、[同意] ダイアログ ボックスを使用してロールを動的に昇格できます。 IsInRole メソッドを実行するコードでは、[同意] ダイアログ ボックスは表示されません。 組み込みの Administrators グループに含まれている場合でも、標準のユーザー ロールを使用している場合、このコードは false を返します。 アプリケーション アイコンを右クリックし、管理者として実行することを示すことで、コードを実行する前に特権を昇格できます。
相対識別子 (RID) は、Windows ユーザー グループのセキュリティ識別子 (SID) のコンポーネントであり、クロスプラットフォームのローカライズの問題を防ぐためにサポートされています。 多くのユーザー アカウント、ローカル グループ、およびグローバル グループには、Windowsのすべてのバージョンで一定の既定の RID 値があります。
たとえば、BUILTIN\Administrators ロールの RID は0x220。
IsInRole メソッドの入力パラメーターとして0x220を使用すると、現在のプリンシパルが管理者である場合、trueが返されます。
次の表に、既定の RID 値を示します。
| 組み込みユーザー | リッド |
|---|---|
| DOMAINNAME\Administrator | 0x1F4 |
| DOMAINNAME\Guest | 0x1F5 |
| 組み込みのグローバル グループ | リッド |
|---|---|
| DOMAINNAME\Domain Admins | 0x200 |
| DOMAINNAME\Domain Users | 0x201 |
| DOMAINNAME\Domain Guests | 0x202 |
| 組み込みのローカル グループ | リッド |
|---|---|
| BUILTIN\Administrators | 0x220 |
| BUILTIN\Users | 0x221 |
| BUILTIN\Guests | 0x222 |
| BUILTIN\Account 演算子 | 0x224 |
| BUILTIN\Server 演算子 | 0x225 |
| BUILTIN\Print 演算子 | 0x226 |
| BUILTIN\Backup 演算子 | 0x227 |
| BUILTIN\Replicator | 0x228 |
適用対象
IsInRole(SecurityIdentifier)
現在のプリンシパルが、指定したセキュリティ識別子 (SID) を持つWindows ユーザー グループに属しているかどうかを判断します。
public:
virtual bool IsInRole(System::Security::Principal::SecurityIdentifier ^ sid);
public virtual bool IsInRole(System.Security.Principal.SecurityIdentifier sid);
[System.Runtime.InteropServices.ComVisible(false)]
public virtual bool IsInRole(System.Security.Principal.SecurityIdentifier sid);
override this.IsInRole : System.Security.Principal.SecurityIdentifier -> bool
[<System.Runtime.InteropServices.ComVisible(false)>]
abstract member IsInRole : System.Security.Principal.SecurityIdentifier -> bool
override this.IsInRole : System.Security.Principal.SecurityIdentifier -> bool
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.IsInRole : System.Security.Principal.SecurityIdentifier -> bool
Public Overridable Function IsInRole (sid As SecurityIdentifier) As Boolean
パラメーター
Windows ユーザー グループを一意に識別するSecurityIdentifier。
返品
現在のプリンシパルが指定したWindows ユーザー グループのメンバーである場合は true。それ以外の場合は false。
- 属性
例外
sid は nullです。
Windows Win32 エラーが返されました。
例
次のコード例は、 WindowsPrincipal.IsInRole(SecurityIdentifier) メソッドの使用方法を示しています。 BuiltinAdministratorsSid列挙値は、現在のプリンシパルが管理者であるかどうかを判断するために使用されます。 完全なコード例については、 WindowsPrincipal.IsInRole(Int32) メソッドを参照してください。
// Get the role using the WellKnownSidType.
SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid));
' Get the role using the WellKnownSidType.
Dim sid As New SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, Nothing)
Console.WriteLine("WellKnownSidType BuiltinAdministratorsSid {0}? {1}.", sid.Value, myPrincipal.IsInRole(sid))
End Sub
注釈
SecurityIdentifierは、Windows上のユーザーまたはグループを一意に識別します。 新しいユーザーや新しいグループなどの新しく作成されたロール情報をテストする場合は、ログアウトしてログインして、ドメイン内でロール情報を強制的に伝達することが重要です。 これを行わないと、 IsInRole テストで falseが返される可能性があります。
Note
Windows Vista では、ユーザー アカウント制御 (UAC) によってユーザーの権限が決定されます。 組み込みの Administrators グループのメンバーである場合は、標準ユーザー アクセス トークンと管理者アクセス トークンという 2 つのランタイム アクセス トークンが割り当てられます。 既定では、標準のユーザー ロールになります。 管理特権を必要とするタスクを実行しようとすると、[同意] ダイアログ ボックスを使用してロールを動的に昇格できます。 IsInRole メソッドを実行するコードでは、[同意] ダイアログ ボックスは表示されません。 組み込みの Administrators グループに含まれている場合でも、標準のユーザー ロールを使用している場合、このコードは false を返します。 アプリケーション アイコンを右クリックし、管理者として実行することを示すことで、コードを実行する前に特権を昇格できます。
パフォーマンス上の理由から、これはユーザーのロールを決定するために推奨されるオーバーロードです。
適用対象
IsInRole(WindowsBuiltInRole)
現在のプリンシパルが、指定した WindowsBuiltInRole を持つWindows ユーザー グループに属しているかどうかを判断します。
public:
virtual bool IsInRole(System::Security::Principal::WindowsBuiltInRole role);
public virtual bool IsInRole(System.Security.Principal.WindowsBuiltInRole role);
override this.IsInRole : System.Security.Principal.WindowsBuiltInRole -> bool
abstract member IsInRole : System.Security.Principal.WindowsBuiltInRole -> bool
override this.IsInRole : System.Security.Principal.WindowsBuiltInRole -> bool
Public Overridable Function IsInRole (role As WindowsBuiltInRole) As Boolean
パラメーター
- role
- WindowsBuiltInRole
WindowsBuiltInRole値の 1 つ。
返品
現在のプリンシパルが指定したWindows ユーザー グループのメンバーである場合は true。それ以外の場合は false。
例外
role が有効な WindowsBuiltInRole 値ではありません。
例
次の例では、現在のプリンシパルがWindowsBuiltInRoleであるかどうかを判断するために使用されるAdministrator列挙体を使用します。 完全なコード例については、 WindowsPrincipal.IsInRole(Int32) メソッドを参照してください。
// Get the role using the WindowsBuiltInRole enumeration value.
Console.WriteLine("{0}? {1}.", WindowsBuiltInRole.Administrator,
myPrincipal.IsInRole(WindowsBuiltInRole.Administrator));
' Get the role using the WindowsBuiltInRole enumeration value.
Console.WriteLine("{0}? {1}.", WindowsBuiltInRole.Administrator, myPrincipal.IsInRole(WindowsBuiltInRole.Administrator))
注釈
新しいユーザーや新しいグループなどの新しく作成されたロール情報をテストする場合は、ログアウトしてログインして、ドメイン内でロール情報を強制的に伝達することが重要です。 これを行わないと、 IsInRole テストで falseが返される可能性があります。
パフォーマンス上の理由から、 IsInRole(SecurityIdentifier) オーバーロードは、ユーザーのロールを決定するためのオーバーロードとして推奨されます。
Note
Windows Vista では、ユーザー アカウント制御 (UAC) によってユーザーの権限が決定されます。 組み込みの Administrators グループのメンバーである場合は、標準ユーザー アクセス トークンと管理者アクセス トークンという 2 つのランタイム アクセス トークンが割り当てられます。 既定では、標準のユーザー ロールになります。 管理特権を必要とするタスクを実行しようとすると、[同意] ダイアログ ボックスを使用してロールを動的に昇格できます。 IsInRole メソッドを実行するコードでは、[同意] ダイアログ ボックスは表示されません。 組み込みの Administrators グループに含まれている場合でも、標準のユーザー ロールを使用している場合、このコードは false を返します。 アプリケーション アイコンを右クリックし、管理者として実行することを示すことで、コードを実行する前に特権を昇格できます。
適用対象
IsInRole(String)
現在のプリンシパルが、指定した名前のWindowsユーザー グループに属しているかどうかを判断します。
public:
override bool IsInRole(System::String ^ role);
public:
virtual bool IsInRole(System::String ^ role);
public override bool IsInRole(string role);
public virtual bool IsInRole(string role);
override this.IsInRole : string -> bool
abstract member IsInRole : string -> bool
override this.IsInRole : string -> bool
Public Overrides Function IsInRole (role As String) As Boolean
Public Overridable Function IsInRole (role As String) As Boolean
パラメーター
- role
- String
メンバーシップを確認するWindowsユーザー グループの名前。
返品
現在のプリンシパルが指定したWindows ユーザー グループのメンバーである場合は true。それ以外の場合は false。
実装
例
次のコード例は、 WindowsPrincipal.IsInRole(String) メソッドの使用方法を示しています。
BUILTIN\AdministratorsおよびBUILTIN\Users文字列は、現在のプリンシパルが管理者かユーザーかを判断するために使用されます。 完全なコード例については、 WindowsPrincipal.IsInRole(Int32) メソッドを参照してください。
// Get the role using the string value of the role.
Console.WriteLine("{0}? {1}.", "Administrators",
myPrincipal.IsInRole("BUILTIN\\" + "Administrators"));
Console.WriteLine("{0}? {1}.", "Users",
myPrincipal.IsInRole("BUILTIN\\" + "Users"));
' Get the role using the string value of the role.
Console.WriteLine("{0}? {1}.", "Administrators", myPrincipal.IsInRole("BUILTIN\" + "Administrators"))
Console.WriteLine("{0}? {1}.", "Users", myPrincipal.IsInRole("BUILTIN\" + "Users"))
注釈
新しいユーザーや新しいグループなどの新しく作成されたロール情報をテストする場合は、ログアウトしてログインして、ドメイン内でロール情報を強制的に伝達することが重要です。 これを行わないと、 IsInRole テストで falseが返される可能性があります。
パフォーマンス上の理由から、 IsInRole(SecurityIdentifier) オーバーロードは、ユーザーのロールを決定するためのオーバーロードとして推奨されます。
Note
Windows Vista では、ユーザー アカウント制御 (UAC) によってユーザーの権限が決定されます。 組み込みの Administrators グループのメンバーである場合は、標準ユーザー アクセス トークンと管理者アクセス トークンという 2 つのランタイム アクセス トークンが割り当てられます。 既定では、標準のユーザー ロールになります。 管理特権を必要とするタスクを実行しようとすると、[同意] ダイアログ ボックスを使用してロールを動的に昇格できます。 IsInRole メソッドを実行するコードでは、[同意] ダイアログ ボックスは表示されません。 組み込みの Administrators グループに含まれている場合でも、標準のユーザー ロールを使用している場合、このコードは false を返します。 アプリケーション アイコンを右クリックし、管理者として実行することを示すことで、コードを実行する前に特権を昇格できます。
組み込みロールの場合、 role 文字列は "BUILTIN\RoleNameHere" の形式にする必要があります。 たとえば、Windows管理者ロールのメンバーシップをテストするには、ロールを表す文字列を "BUILTIN\Administrators" にする必要があります。 円記号をエスケープする必要がある場合があることに注意してください。 次の表に、組み込みのロールを示します。
Note
文字列形式の BUILTIN ロールのスペルは、 WindowsBuiltInRole 列挙型で使用されるスペルと異なります。 たとえば、列挙体の管理者のスペルは "Administrator" であり、"Administrators" ではありません。 このオーバーロードを使用する場合は、次の表のロールのスペル を使用します。
| 組み込みのローカル グループ |
|---|
| BUILTIN\Administrators |
| BUILTIN\Users |
| BUILTIN\Guests |
| BUILTIN\Account 演算子 |
| BUILTIN\Server 演算子 |
| BUILTIN\Print 演算子 |
| BUILTIN\Backup 演算子 |
| BUILTIN\Replicator |
コンピューター固有のロールの場合、 role 文字列は "MachineName\RoleNameHere" という形式にする必要があります。
ドメイン固有のロールの場合、 role 文字列は "DomainName\RoleNameHere" という形式にする必要があります(例: "SomeDomain\Domain Users)。
Note
.NET Framework バージョン 1.0 では、role パラメーターでは大文字と小文字が区別されます。 .NET Framework バージョン 1.1 以降では、role パラメーターでは大文字と小文字が区別されません。