Dil

WindowsPrincipal.IsInRole Yöntem

Tanım

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

Aşırı Yüklemeler

Name Description
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 WindowsBuiltInRole sahip 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ği, yöntemlerin IsInRole kullanımını gösterir. 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 yeni 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.

Note

Windows Vista'da Kullanıcı Hesabı Denetimi (UAC), bir kullanıcının ayrıcalıklarını belirler. Yerleşik Yöneticiler grubunun üyesiyseniz, 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ündesiniz. 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, tüm Windows sürümlerinde sabit bir varsayılan RID değerine sahiptir.

Örneğin, BUILTIN\Administrators rolü için RID 0x220. Yöntemin IsInRole giriş parametresi true 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 RID
ETKİALANIADı\Yönetici 0x1F4
ETKİALANIADı\Konuk 0x1F5
Yerleşik genel gruplar RID
DOMAINNAME\Domain Admins 0x200
DOMAINNAME\Domain Users 0x201
DOMAINNAME\Domain Guests 0x202
Yerleşik yerel gruplar RID
BUILTIN\Yöneticiler 0x220
Buıltın\users 0x221
BUILTIN\Guests 0x222
BUILTIN\Account Operators 0x224
BUILTIN\Server İş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

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

Döndürülenler

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

Öznitelikler

Özel durumlar

sid, null'e eşittir.

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

Örnekler

Aşağıdaki kod örneği, yönteminin WindowsPrincipal.IsInRole(SecurityIdentifier) kullanımını gösterir. Sabit BuiltinAdministratorsSid listesi 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

SecurityIdentifier, Windows üzerinde bir kullanıcıyı veya grubu benzersiz olarak tanımlar. Yeni oluşturulan yeni kullanıcı veya yeni 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.

Note

Windows Vista'da Kullanıcı Hesabı Denetimi (UAC), bir kullanıcının ayrıcalıklarını belirler. Yerleşik Yöneticiler grubunun üyesiyseniz, 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ündesiniz. 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 edilebilir aşırı yüklemedir.

Şunlara uygulanır

IsInRole(WindowsBuiltInRole)

Geçerli sorumlunun belirtilen WindowsBuiltInRole sahip 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

Geçerli sorumlu belirtilen Windows kullanıcı grubunun üyesiyse true; 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 yeni 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.

Note

Windows Vista'da Kullanıcı Hesabı Denetimi (UAC), bir kullanıcının ayrıcalıklarını belirler. Yerleşik Yöneticiler grubunun üyesiyseniz, 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ündesiniz. 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

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

Uygulamalar

Örnekler

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

ve BUILTIN\Administrators dizeleriBUILTIN\Users, 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 yeni 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.

Note

Windows Vista'da Kullanıcı Hesabı Denetimi (UAC), bir kullanıcının ayrıcalıklarını belirler. Yerleşik Yöneticiler grubunun üyesiyseniz, 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ündesiniz. 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 dize role "BUILTIN\RoleNameHere" biçiminde olmalıdır. Ö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.

Note

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ı "Yöneticiler" değil "Yönetici"dir. 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\Yöneticiler
Buıltın\users
BUILTIN\Guests
BUILTIN\Account Operators
BUILTIN\Server İşleçleri
BUILTIN\Print İşleçleri
BUILTIN\Backup İşleçleri
BUILTIN\Replicator

Makineye özgü roller için role 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".

Note

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

Ayrıca bkz.

Şunlara uygulanır