WindowsPrincipal.IsInRole Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
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.