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: User Account Control) でユーザーの権限が決定されます。 ユーザーが組み込みの Administrators グループのメンバーである場合、そのユーザーには標準ユーザー アクセス トークンおよび管理者アクセス トークンの 2 つのランタイム アクセス トークンが割り当てられています。 既定では、ユーザーは標準ユーザー ロールに所属します。 管理特権を必要とするタスクを実行しようとすると、[同意] ダイアログ ボックスを使用してロールを動的に昇格できます。 メソッドを IsInRole 実行するコードでは、[同意] ダイアログ ボックスは表示されません。 標準ユーザー ロールの場合、組み込みの Administrators グループに属している場合でも、このコードは false を返します。 アプリケーション アイコンを右クリックし、管理者として実行することを示すことで、コードを実行する前に特権を昇格できます。
相対識別子 (RID) は、Windows ユーザー グループのセキュリティ識別子 (SID) のコンポーネントであり、クロスプラットフォームのローカライズの問題を防ぐためにサポートされています。 多くのユーザー アカウント、ローカル グループ、およびグローバル グループには、Windows のすべてのバージョンで一定の既定の RID 値があります。
たとえば、BUILTIN\Administrators ロールの RID は0x220。 メソッドの入力パラメーターとして 0x220 を IsInRole 使用すると、現在の true
プリンシパルが管理者である場合にが返されます。
次の表に、既定の RID 値を示します。
組み込みユーザー | RID |
---|---|
DOMAINNAME\Administrator | 0x1F4 |
DOMAINNAME\Guest | 0x1F5 |
組み込みのグローバル グループ | RID |
---|---|
DOMAINNAME\Domain Admins | 0x200 |
DOMAINNAME\Domain Users | 0x201 |
DOMAINNAME\Domain Guests | 0x202 |
組み込みのローカル グループ | RID |
---|---|
BUILTIN\Administrators (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: User Account Control) でユーザーの権限が決定されます。 ユーザーが組み込みの 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: User Account Control) でユーザーの権限が決定されます。 ユーザーが組み込みの 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: User Account Control) でユーザーの権限が決定されます。 ユーザーが組み込みの Administrators グループのメンバーである場合、そのユーザーには標準ユーザー アクセス トークンおよび管理者アクセス トークンの 2 つのランタイム アクセス トークンが割り当てられています。 既定では、ユーザーは標準ユーザー ロールに所属します。 管理特権を必要とするタスクを実行しようとすると、[同意] ダイアログ ボックスを使用してロールを動的に昇格できます。 メソッドを IsInRole 実行するコードでは、[同意] ダイアログ ボックスは表示されません。 標準ユーザー ロールの場合、組み込みの Administrators グループに属している場合でも、このコードは false を返します。 アプリケーション アイコンを右クリックし、管理者として実行することを示すことで、コードを実行する前に特権を昇格できます。
組み込みのロールの場合、 role
文字列は "BUILTIN\RoleNameHere" の形式である必要があります。 たとえば、Windows 管理者ロールのメンバーシップをテストするには、ロールを表す文字列を "BUILTIN\Administrators" にする必要があります。 円記号をエスケープする必要がある場合があることに注意してください。 次の表に、組み込みのロールの一覧を示します。
注意
文字列形式の BUILTIN ロールのスペルは、列挙体で WindowsBuiltInRole 使用されるスペルと異なります。 たとえば、列挙体の管理者のスペルは、"管理者" ではなく "管理者" です。 このオーバーロードを使用する場合は、次の表のロールのスペルを使用します。
組み込みのローカル グループ |
---|
BUILTIN\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
)。
注意
.NET Framework バージョン 1.0 では、 パラメーターでは role
大文字と小文字が区別されます。 .NET Framework バージョン 1.1 以降では、 パラメーターでは role
大文字と小文字が区別されません。
こちらもご覧ください
適用対象
.NET