WindowsPrincipal.IsInRole Yöntem

Tanım

Geçerli sorumlunun belirtilen bir Windows kullanıcı grubuna ait olup olmadığını belirler.

Aşırı Yüklemeler

IsInRole(Int32)

Geçerli sorumlunun belirtilen göreli tanımlayıcıya (RID) sahip Windows kullanıcı grubuna ait olup olmadığını belirler.

IsInRole(SecurityIdentifier)

Geçerli sorumlunun belirtilen güvenlik tanımlayıcısına (SID) sahip Windows kullanıcı grubuna ait olup olmadığını belirler.

IsInRole(WindowsBuiltInRole)

Geçerli sorumlunun belirtilen WindowsBuiltInRoleile Windows kullanıcı grubuna ait olup olmadığını belirler.

IsInRole(String)

Geçerli sorumlunun belirtilen ada sahip Windows kullanıcı grubuna ait olup olmadığını belirler.

Açıklamalar

Bu yöntem için dört aşırı yükleme vardır. Performans nedenleriyle aşırı IsInRole(SecurityIdentifier) yükleme kesinlikle önerilir.

IsInRole(Int32)

Geçerli sorumlunun belirtilen göreli tanımlayıcıya (RID) sahip Windows kullanıcı grubuna ait olup olmadığını belirler.

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

Parametreler

rid
Int32

Sorumlunun üyelik durumunun denetlendiği Windows kullanıcı grubunun RID'i.

Döndürülenler

true geçerli sorumlu belirtilen Windows kullanıcı grubunun bir üyesiyse, yani belirli bir roldeyse; aksi takdirde , false.

Örnekler

Aşağıdaki kod örneğinde yöntemlerin IsInRole kullanımı gösterilmektedir. Sabit WindowsBuiltInRole listesi, yerleşik rolleri tanımlayan RID'lerin kaynağı olarak kullanılır. RID'ler geçerli sorumlunun rollerini belirlemek için kullanılır.

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

Açıklamalar

Yeni oluşturulan yeni kullanıcı veya grup gibi rol bilgilerini test ederken, etki alanı içinde rol bilgilerinin yayılmasını zorlamak için oturumu kapatıp oturum açmak önemlidir. Bunun yapılmaması testin IsInRole döndürülmesine falseneden olabilir.

Performans nedenleriyle aşırı yükleme, IsInRole(SecurityIdentifier) kullanıcının rolünü belirlemek için tercih edilen aşırı yükleme olarak önerilir.

Not

Windows Vista'da Kullanıcı Hesabı Denetimi (UAC), bir kullanıcının ayrıcalıklarını belirler. Yerleşik Yöneticiler grubunun bir üyesi iseniz, size iki çalışma zamanı erişim belirteci atanır: Standart kullanıcı erişim belirteci ve yönetici erişim belirteci. Varsayılan olarak, standart kullanıcı rolünde olursunuz. Yönetim ayrıcalıkları gerektiren bir görevi gerçekleştirmeye çalıştığınızda, Onay iletişim kutusunu kullanarak rolünüzü dinamik olarak yükseltebilirsiniz. Yöntemini yürüten IsInRole kod, Onay iletişim kutusunu görüntülemez. Yerleşik Yöneticiler grubunda olsanız bile standart kullanıcı rolündeyseniz kod false döndürür. Uygulama simgesine sağ tıklayıp yönetici olarak çalıştırmak istediğinizi belirterek kodu yürütmeden önce ayrıcalıklarınızı yükseltebilirsiniz.

Göreli tanımlayıcılar (RID), Windows kullanıcı grubunun güvenlik tanımlayıcısının (SID) bileşenleridir ve platformlar arası yerelleştirme sorunlarını önlemeye yardımcı olmak için desteklenir. Birçok kullanıcı hesabı, yerel grup ve genel grup, Windows'un tüm sürümlerinde sabit olan varsayılan bir RID değerine sahiptir.

Örneğin, BUILTIN\Administrators rolü için RID 0x220. Yöntem true için IsInRole giriş parametresi olarak 0x220 kullanılması, geçerli sorumlu bir yöneticiyse döndürülür.

Aşağıdaki tablolarda varsayılan RID değerleri listelemektedir.

Yerleşik kullanıcılar KURTULMAK
ETKİALANIADı\Yönetici 0x1F4
ETKİALANI ADI\Konuk 0x1F5
Yerleşik genel gruplar KURTULMAK
DOMAINNAME\Domain Admins 0x200
DOMAINNAME\Domain Users 0x201
DOMAINNAME\Domain Guests 0x202
Yerleşik yerel gruplar KURTULMAK
BUILTIN\Administrators 0x220
Buıltın\users 0x221
BUILTIN\Guests 0x222
BUILTIN\Account Operators 0x224
BUILTIN\Sunucu İşleçleri 0x225
BUILTIN\Print İşleçleri 0x226
BUILTIN\Backup İşleçleri 0x227
BUILTIN\Replicator 0x228

Şunlara uygulanır

IsInRole(SecurityIdentifier)

Geçerli sorumlunun belirtilen güvenlik tanımlayıcısına (SID) sahip Windows kullanıcı grubuna ait olup olmadığını belirler.

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

Parametreler

sid
SecurityIdentifier

Bir SecurityIdentifier Windows kullanıcı grubunu benzersiz olarak tanımlayan bir.

Döndürülenler

true geçerli sorumlu belirtilen Windows kullanıcı grubunun bir üyesiyse; aksi takdirde , false.

Öznitelikler

Özel durumlar

sid, null değeridir.

Windows bir Win32 hatası döndürdü.

Örnekler

Aşağıdaki kod örneği yönteminin WindowsPrincipal.IsInRole(SecurityIdentifier) kullanımını gösterir. Numaralandırma BuiltinAdministratorsSid değeri, geçerli sorumlunun yönetici olup olmadığını belirlemek için kullanılır. Tam kod örneği için yöntemine WindowsPrincipal.IsInRole(Int32) bakın.

// 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

Açıklamalar

, Windows'da SecurityIdentifier bir kullanıcıyı veya grubu benzersiz olarak tanımlar. Yeni oluşturulan yeni kullanıcı veya grup gibi rol bilgilerini test ederken, etki alanı içinde rol bilgilerinin yayılmasını zorlamak için oturumu kapatıp oturum açmak önemlidir. Bunun yapılmaması testin IsInRole döndürülmesine falseneden olabilir.

Not

Windows Vista'da Kullanıcı Hesabı Denetimi (UAC), bir kullanıcının ayrıcalıklarını belirler. Yerleşik Yöneticiler grubunun bir üyesi iseniz, size iki çalışma zamanı erişim belirteci atanır: Standart kullanıcı erişim belirteci ve yönetici erişim belirteci. Varsayılan olarak, standart kullanıcı rolünde olursunuz. Yönetim ayrıcalıkları gerektiren bir görevi gerçekleştirmeye çalıştığınızda, Onay iletişim kutusunu kullanarak rolünüzü dinamik olarak yükseltebilirsiniz. Yöntemini yürüten IsInRole kod, Onay iletişim kutusunu görüntülemez. Yerleşik Yöneticiler grubunda olsanız bile standart kullanıcı rolündeyseniz kod false döndürür. Uygulama simgesine sağ tıklayıp yönetici olarak çalıştırmak istediğinizi belirterek kodu yürütmeden önce ayrıcalıklarınızı yükseltebilirsiniz.

Performans nedenleriyle bu, kullanıcının rolünü belirlemek için tercih edilir bir aşırı yüklemedir.

Şunlara uygulanır

IsInRole(WindowsBuiltInRole)

Geçerli sorumlunun belirtilen WindowsBuiltInRoleile Windows kullanıcı grubuna ait olup olmadığını belirler.

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

Parametreler

role
WindowsBuiltInRole

Değerlerden WindowsBuiltInRole biri.

Döndürülenler

true geçerli sorumlu belirtilen Windows kullanıcı grubunun bir üyesiyse; aksi takdirde , false.

Özel durumlar

role geçerli WindowsBuiltInRole bir değer değil.

Örnekler

Aşağıdaki örnekte, geçerli sorumlunun WindowsBuiltInRole bir Administratorolup olmadığını belirlemek için sabit listesi kullanılır. Tam kod örneği için yöntemine WindowsPrincipal.IsInRole(Int32) bakın.

// 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))

Açıklamalar

Yeni oluşturulan yeni kullanıcı veya grup gibi rol bilgilerini test ederken, etki alanı içinde rol bilgilerinin yayılmasını zorlamak için oturumu kapatıp oturum açmak önemlidir. Bunun yapılmaması testin IsInRole döndürülmesine falseneden olabilir.

Performans nedenleriyle aşırı yükleme, IsInRole(SecurityIdentifier) kullanıcının rolünü belirlemek için tercih edilen aşırı yükleme olarak önerilir.

Not

Windows Vista'da Kullanıcı Hesabı Denetimi (UAC), bir kullanıcının ayrıcalıklarını belirler. Yerleşik Yöneticiler grubunun bir üyesi iseniz, size iki çalışma zamanı erişim belirteci atanır: Standart kullanıcı erişim belirteci ve yönetici erişim belirteci. Varsayılan olarak, standart kullanıcı rolünde olursunuz. Yönetim ayrıcalıkları gerektiren bir görevi gerçekleştirmeye çalıştığınızda, Onay iletişim kutusunu kullanarak rolünüzü dinamik olarak yükseltebilirsiniz. Yöntemini yürüten IsInRole kod, Onay iletişim kutusunu görüntülemez. Yerleşik Yöneticiler grubunda olsanız bile standart kullanıcı rolündeyseniz kod false döndürür. Uygulama simgesine sağ tıklayıp yönetici olarak çalıştırmak istediğinizi belirterek kodu yürütmeden önce ayrıcalıklarınızı yükseltebilirsiniz.

Şunlara uygulanır

IsInRole(String)

Geçerli sorumlunun belirtilen ada sahip Windows kullanıcı grubuna ait olup olmadığını belirler.

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

Parametreler

role
String

Üyeliğin denetlendiği Windows kullanıcı grubunun adı.

Döndürülenler

true geçerli sorumlu belirtilen Windows kullanıcı grubunun bir üyesiyse; aksi takdirde , false.

Uygulamalar

Örnekler

Aşağıdaki kod örneği yönteminin WindowsPrincipal.IsInRole(String) kullanımını gösterir.

ve BUILTIN\Users dizeleriBUILTIN\Administrators, geçerli sorumlunun yönetici mi yoksa kullanıcı mı olduğunu belirlemek için kullanılır. Tam kod örneği için yöntemine WindowsPrincipal.IsInRole(Int32) bakın.

// 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"))

Açıklamalar

Yeni oluşturulan yeni kullanıcı veya grup gibi rol bilgilerini test ederken, etki alanı içinde rol bilgilerinin yayılmasını zorlamak için oturumu kapatıp oturum açmak önemlidir. Bunun yapılmaması testin IsInRole döndürülmesine falseneden olabilir.

Performans nedenleriyle aşırı yükleme, IsInRole(SecurityIdentifier) kullanıcının rolünü belirlemek için tercih edilen aşırı yükleme olarak önerilir.

Not

Windows Vista'da Kullanıcı Hesabı Denetimi (UAC), bir kullanıcının ayrıcalıklarını belirler. Yerleşik Yöneticiler grubunun bir üyesi iseniz, size iki çalışma zamanı erişim belirteci atanır: Standart kullanıcı erişim belirteci ve yönetici erişim belirteci. Varsayılan olarak, standart kullanıcı rolünde olursunuz. Yönetim ayrıcalıkları gerektiren bir görevi gerçekleştirmeye çalıştığınızda, Onay iletişim kutusunu kullanarak rolünüzü dinamik olarak yükseltebilirsiniz. Yöntemini yürüten IsInRole kod, Onay iletişim kutusunu görüntülemez. Yerleşik Yöneticiler grubunda olsanız bile standart kullanıcı rolündeyseniz kod false döndürür. Uygulama simgesine sağ tıklayıp yönetici olarak çalıştırmak istediğinizi belirterek kodu yürütmeden önce ayrıcalıklarınızı yükseltebilirsiniz.

Yerleşik roller için dizenin role "BUILTIN\RoleNameHere" biçiminde olması gerekir. Örneğin, Windows yönetici rolü üyeliğini test etmek için rolü temsil eden dize "BUILTIN\Administrators" olmalıdır. Ters eğik çizginin kaçılması gerekebileceğini unutmayın. Aşağıdaki tabloda yerleşik roller listelenmiştir.

Not

BuiltIN rollerinin dize biçimindeki yazım denetimi, numaralandırmada WindowsBuiltInRole kullanılan yazım denetiminden farklıdır. Örneğin, numaralandırmadaki bir yöneticinin yazım denetimi "Yöneticiler" değil "Yönetici" olur. Bu aşırı yüklemeyi kullanırken, aşağıdaki tabloda yer alan rolün yazımını kullanın.

Yerleşik yerel gruplar
BUILTIN\Administrators
Buıltın\users
BUILTIN\Guests
BUILTIN\Account Operators
BUILTIN\Sunucu İşleçleri
BUILTIN\Print İşleçleri
BUILTIN\Backup İşleçleri
BUILTIN\Replicator

Makineye role özgü roller için, dize "MachineName\RoleNameHere" biçiminde olmalıdır.

Etki alanına özgü roller için, role dize "DomainName\RoleNameHere" biçiminde olmalıdır; örneğin, "SomeDomain\Domain Users".

Not

.NET Framework sürüm 1.0'da parametresi büyük/küçük harfe role duyarlıdır. .NET Framework sürüm 1.1 ve sonraki role sürümlerinde parametresi büyük/küçük harfe duyarlı değildir.

Ayrıca bkz.

Şunlara uygulanır