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) 이유로 오버로드는 사용자의 역할을 결정하는 데 바람직한 오버로드로 권장됩니다.
참고
Windows Vista에서는 UAC(사용자 계정 컨트롤)가 사용자 권한을 결정합니다. 기본 제공 Administrators 그룹의 멤버인 경우 두 개의 런타임 액세스 토큰(표준 사용자 액세스 토큰 및 관리자 액세스 토큰)이 할당됩니다. 기본적으로 표준 사용자 역할이 지정됩니다. 관리 권한이 필요한 작업을 수행 하려고 할 때 동의 대화 상자를 사용 하 여 사용자의 역할을 동적으로 높일 수 있습니다. 실행 하는 코드는 IsInRole 메서드 동의 대화 상자를 표시 하지 않습니다. 기본 제공 관리자 그룹에 있는 경우에 표준 사용자 역할이 있는 경우 false를 반환 하는 코드입니다. 애플리케이션 아이콘을 마우스 오른쪽 단추로 클릭 하 고 관리자 권한으로 실행을 클릭 하 여 코드를 실행 하기 전에 귀하의 권한을 높일 수 있습니다.
RID(상대 식별자)는 Windows 사용자 그룹의 SID(보안 식별자)의 구성 요소이며 플랫폼 간 지역화 문제를 방지하는 데 도움이 됩니다. 많은 사용자 계정, 로컬 그룹 및 전역 그룹에는 모든 버전의 Windows에서 일정하게 유지되는 기본 RID 값이 있습니다.
예를 들어 BUILTIN\Administrators 역할에 대한 RID는 0x220. 0x220 메서드 true
의 입력 매개 변수 IsInRole 로 사용하면 현재 보안 주체가 관리자인 경우 반환됩니다.
다음 표에는 기본 RID 값이 나열되어 있습니다.
기본 제공 사용자 | RID |
---|---|
DOMAINNAME\Administrator | 0x1F4 |
DOMAINNAME\Guest | 0x1F5 |
기본 제공 전역 그룹 | RID |
---|---|
DOMAINNAME\Domain Admins | 0x200 |
DOMAINNAME\Domain Users | 0x201 |
DOMAINNAME\Domain Guests | 0x202 |
기본 제공 로컬 그룹 | RID |
---|---|
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
할 수 있습니다.
참고
Windows Vista에서는 UAC(사용자 계정 컨트롤)가 사용자 권한을 결정합니다. 기본 제공 Administrators 그룹의 멤버인 경우 두 개의 런타임 액세스 토큰(표준 사용자 액세스 토큰 및 관리자 액세스 토큰)이 할당됩니다. 기본적으로 표준 사용자 역할이 지정됩니다. 관리 권한이 필요한 작업을 수행 하려고 할 때 동의 대화 상자를 사용 하 여 사용자의 역할을 동적으로 높일 수 있습니다. 실행 하는 코드는 IsInRole 메서드 동의 대화 상자를 표시 하지 않습니다. 기본 제공 관리자 그룹에 있는 경우에 표준 사용자 역할이 있는 경우 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 값 중 하나입니다.
반환
현재 보안 주체가 지정된 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) 이유로 오버로드는 사용자의 역할을 결정하는 데 바람직한 오버로드로 권장됩니다.
참고
Windows Vista에서는 UAC(사용자 계정 컨트롤)가 사용자 권한을 결정합니다. 기본 제공 Administrators 그룹의 멤버인 경우 두 개의 런타임 액세스 토큰(표준 사용자 액세스 토큰 및 관리자 액세스 토큰)이 할당됩니다. 기본적으로 표준 사용자 역할이 지정됩니다. 관리 권한이 필요한 작업을 수행 하려고 할 때 동의 대화 상자를 사용 하 여 사용자의 역할을 동적으로 높일 수 있습니다. 실행 하는 코드는 IsInRole 메서드 동의 대화 상자를 표시 하지 않습니다. 기본 제공 관리자 그룹에 있는 경우에 표준 사용자 역할이 있는 경우 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) 이유로 오버로드는 사용자의 역할을 결정하는 데 바람직한 오버로드로 권장됩니다.
참고
Windows Vista에서는 UAC(사용자 계정 컨트롤)가 사용자 권한을 결정합니다. 기본 제공 Administrators 그룹의 멤버인 경우 두 개의 런타임 액세스 토큰(표준 사용자 액세스 토큰 및 관리자 액세스 토큰)이 할당됩니다. 기본적으로 표준 사용자 역할이 지정됩니다. 관리 권한이 필요한 작업을 수행 하려고 할 때 동의 대화 상자를 사용 하 여 사용자의 역할을 동적으로 높일 수 있습니다. 실행 하는 코드는 IsInRole 메서드 동의 대화 상자를 표시 하지 않습니다. 기본 제공 관리자 그룹에 있는 경우에 표준 사용자 역할이 있는 경우 false를 반환 하는 코드입니다. 애플리케이션 아이콘을 마우스 오른쪽 단추로 클릭 하 고 관리자 권한으로 실행을 클릭 하 여 코드를 실행 하기 전에 귀하의 권한을 높일 수 있습니다.
기본 제공 역할의 경우 문자열은 role
"BUILTIN\RoleNameHere" 형식이어야 합니다. 예를 들어 Windows 관리자 역할의 멤버 자격을 테스트하려면 역할을 나타내는 문자열은 "BUILTIN\Administrators"여야 합니다. 백슬래시를 이스케이프해야 할 수도 있습니다. 다음 표에서는 기본 제공 역할을 나열합니다.
참고
문자열 형식의 BUILTIN 역할에 대한 맞춤법은 열거형에 WindowsBuiltInRole 사용되는 맞춤법과 다릅니다. 예를 들어 열거형의 관리자에 대한 맞춤법은 "관리자"가 아니라 "관리자"입니다. 이 오버로드를 사용하는 경우 다음 표의 역할에 대한 맞춤법을 사용합니다.
기본 제공 로컬 그룹 |
---|
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