다음을 통해 공유


WindowsPrincipal.IsInRole 메서드

정의

현재 보안 주체가 지정된 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

매개 변수

sid
SecurityIdentifier

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\AdministratorsBUILTIN\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 대/소문자를 구분하지 않습니다.

추가 정보

적용 대상