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 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 false
neden 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
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 false
neden 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 false
neden 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 false
neden 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.