WindowsPrincipal.IsInRole Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje, zda aktuální objekt zabezpečení patří do zadané skupiny uživatelů systému Windows.
Přetížení
IsInRole(Int32) |
Určuje, zda aktuální objekt zabezpečení patří do skupiny uživatelů systému Windows se zadaným relativním identifikátorem (RID). |
IsInRole(SecurityIdentifier) |
Určuje, zda aktuální objekt zabezpečení patří do skupiny uživatelů systému Windows se zadaným identifikátorem zabezpečení (SID). |
IsInRole(WindowsBuiltInRole) |
Určuje, zda aktuální objekt zabezpečení patří do skupiny uživatelů systému Windows se zadaným WindowsBuiltInRoleobjektem . |
IsInRole(String) |
Určuje, zda aktuální objekt zabezpečení patří do skupiny uživatelů systému Windows se zadaným názvem. |
Poznámky
Pro tuto metodu existují čtyři přetížení. Z důvodů výkonu IsInRole(SecurityIdentifier) se přetížení důrazně doporučuje.
IsInRole(Int32)
Určuje, zda aktuální objekt zabezpečení patří do skupiny uživatelů systému Windows se zadaným relativním identifikátorem (RID).
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
Parametry
- rid
- Int32
Identifikátor RID skupiny uživatelů systému Windows, ve které se má zkontrolovat stav členství objektu zabezpečení.
Návraty
true
pokud je aktuální objekt zabezpečení členem zadané skupiny uživatelů systému Windows, to znamená v určité roli; v opačném případě . false
Příklady
Následující příklad kódu ukazuje použití IsInRole metod. Výčet se WindowsBuiltInRole používá jako zdroj pro identifikátory RID, které identifikují předdefinované role. Identifikátory RID se používají k určení rolí aktuálního objektu zabezpečení.
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
Poznámky
Při testování nově vytvořených informací o rolích, jako je například nový uživatel nebo nová skupina, je důležité se odhlásit a přihlásit, aby se vynutil šíření informací o rolích v rámci domény. Pokud to neuděláte, může IsInRole test vrátit false
.
Z důvodů výkonu IsInRole(SecurityIdentifier) se přetížení doporučuje jako vhodnější přetížení pro určení role uživatele.
Poznámka
Ve Windows Vista nástroj Řízení uživatelských účtů (UAC) určuje oprávnění uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazeny dva přístupové tokeny run-time: token přístupu uživatele se standardním oprávněním a token přístupu správce. Ve výchozím nastavení máte roli standardního uživatele. Když se pokusíte provést úlohu, která vyžaduje oprávnění správce, můžete dynamicky zvýšit svoji roli pomocí dialogového okna Souhlas. Kód, který spouští metodu IsInRole , nezobrazí dialogové okno Souhlas. Kód vrátí hodnotu false, pokud jste ve standardní roli uživatele, a to i v případě, že jste ve skupině Předdefinovaní správci. Před spuštěním kódu můžete zvýšit oprávnění tak, že kliknete pravým tlačítkem na ikonu aplikace a označíte, že chcete spustit jako správce.
Relativní identifikátory (RID) jsou součásti identifikátoru zabezpečení skupiny uživatelů systému Windows a podporují se, aby se zabránilo problémům s lokalizací napříč platformami. Mnoho uživatelských účtů, místních skupin a globálních skupin má výchozí hodnotu RID, která je konstantní ve všech verzích Windows.
Například identifikátor RID pro roli BUILTIN\Administrators je 0x220. Použití 0x220 jako vstupního parametru pro metodu IsInRole má za následek true
vrácení, pokud je aktuálním objektem zabezpečení správce.
V následujících tabulkách jsou uvedeny výchozí hodnoty RID.
Předdefinované uživatele | ZBAVIT |
---|---|
NÁZEV_DOMÉNY\Správce | 0x1F4 |
NÁZEV_DOMÉNY\Host | 0x1F5 |
Předdefinované globální skupiny | ZBAVIT |
---|---|
DOMAINNAME\Domain Admins | 0x200 |
NÁZEV_DOMÉNY\Uživatelé domény | 0x201 |
NÁZEV_DOMÉNY\Hosté domény | 0x202 |
Předdefinované místní skupiny | ZBAVIT |
---|---|
BUILTIN\Administrators | 0x220 |
Builtin\users | 0x221 |
BUILTIN\Guests | 0x222 |
BUILTIN\Account Operators | 0x224 |
BUILTIN\Server – operátory | 0x225 |
BUILTIN\Print – operátory | 0x226 |
BUILTIN\Backup – operátory | 0x227 |
BUILTIN\Replicator | 0x228 |
Platí pro
IsInRole(SecurityIdentifier)
Určuje, zda aktuální objekt zabezpečení patří do skupiny uživatelů systému Windows se zadaným identifikátorem zabezpečení (SID).
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
Parametry
A SecurityIdentifier , který jednoznačně identifikuje skupinu uživatelů systému Windows.
Návraty
true
pokud je aktuální objekt zabezpečení členem zadané skupiny uživatelů systému Windows; v opačném případě . false
- Atributy
Výjimky
sid
je null
.
Systém Windows vrátil chybu Win32.
Příklady
Následující příklad kódu ukazuje použití WindowsPrincipal.IsInRole(SecurityIdentifier) metody. Hodnota BuiltinAdministratorsSid výčtu se používá k určení, jestli je aktuálním objektem zabezpečení správce. Úplný příklad kódu najdete v WindowsPrincipal.IsInRole(Int32) metodě.
// 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
Poznámky
Jedinečně SecurityIdentifier identifikuje uživatele nebo skupinu ve Windows. Při testování nově vytvořených informací o rolích, jako je například nový uživatel nebo nová skupina, je důležité se odhlásit a přihlásit, aby se vynutil šíření informací o rolích v rámci domény. Pokud to neuděláte, může IsInRole test vrátit false
.
Poznámka
Ve Windows Vista nástroj Řízení uživatelských účtů (UAC) určuje oprávnění uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazeny dva přístupové tokeny run-time: token přístupu uživatele se standardním oprávněním a token přístupu správce. Ve výchozím nastavení máte roli standardního uživatele. Když se pokusíte provést úlohu, která vyžaduje oprávnění správce, můžete dynamicky zvýšit svoji roli pomocí dialogového okna Souhlas. Kód, který spouští metodu IsInRole , nezobrazí dialogové okno Souhlas. Kód vrátí hodnotu false, pokud jste ve standardní roli uživatele, a to i v případě, že jste ve skupině Předdefinovaní správci. Před spuštěním kódu můžete zvýšit oprávnění tak, že kliknete pravým tlačítkem na ikonu aplikace a označíte, že chcete spustit jako správce.
Z důvodů výkonu se jedná o vhodnější přetížení pro určení role uživatele.
Platí pro
IsInRole(WindowsBuiltInRole)
Určuje, zda aktuální objekt zabezpečení patří do skupiny uživatelů systému Windows se zadaným WindowsBuiltInRoleobjektem .
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
Parametry
- role
- WindowsBuiltInRole
Jedna z WindowsBuiltInRole hodnot.
Návraty
true
Pokud je aktuální objekt zabezpečení členem zadané skupiny uživatelů systému Windows; v opačném případě . false
Výjimky
role
není platná WindowsBuiltInRole hodnota.
Příklady
Následující příklad používá WindowsBuiltInRole výčet, který se používá k určení, jestli je aktuální objekt zabezpečení .Administrator Úplný příklad kódu najdete v WindowsPrincipal.IsInRole(Int32) metodě.
// 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))
Poznámky
Při testování nově vytvořených informací o rolích, jako je například nový uživatel nebo nová skupina, je důležité se odhlásit a přihlásit, aby se vynutil šíření informací o rolích v rámci domény. Pokud to neuděláte, může IsInRole test vrátit false
.
Z důvodů výkonu IsInRole(SecurityIdentifier) se přetížení doporučuje jako vhodnější přetížení pro určení role uživatele.
Poznámka
Ve Windows Vista nástroj Řízení uživatelských účtů (UAC) určuje oprávnění uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazeny dva přístupové tokeny run-time: token přístupu uživatele se standardním oprávněním a token přístupu správce. Ve výchozím nastavení máte roli standardního uživatele. Když se pokusíte provést úlohu, která vyžaduje oprávnění správce, můžete dynamicky zvýšit svoji roli pomocí dialogového okna Souhlas. Kód, který spouští metodu IsInRole , nezobrazí dialogové okno Souhlas. Kód vrátí hodnotu false, pokud máte standardní roli uživatele, a to i v případě, že jste ve skupině Předdefinovaní správci. Před spuštěním kódu můžete zvýšit oprávnění tak, že kliknete pravým tlačítkem na ikonu aplikace a označíte, že chcete spustit jako správce.
Platí pro
IsInRole(String)
Určuje, zda aktuální objekt zabezpečení patří do skupiny uživatelů systému Windows se zadaným názvem.
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
Parametry
- role
- String
Název skupiny uživatelů systému Windows, pro kterou chcete zkontrolovat členství.
Návraty
true
Pokud je aktuální objekt zabezpečení členem zadané skupiny uživatelů systému Windows; v opačném případě . false
Implementuje
Příklady
Následující příklad kódu ukazuje použití WindowsPrincipal.IsInRole(String) metody .
Řetězce BUILTIN\Administrators
a BUILTIN\Users
slouží k určení, jestli je aktuálním objektem zabezpečení správce nebo uživatel. Úplný příklad kódu najdete v WindowsPrincipal.IsInRole(Int32) metodě .
// 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"))
Poznámky
Při testování nově vytvořených informací o rolích, jako je nový uživatel nebo nová skupina, je důležité se odhlásit a přihlásit, aby se vynutil šíření informací o rolích v rámci domény. Pokud to neuděláte, může IsInRole test vrátit false
.
Z důvodů výkonu IsInRole(SecurityIdentifier) se přetížení doporučuje jako nejvhodnější přetížení pro určení role uživatele.
Poznámka
V systému Windows Vista nástroj Řízení uživatelských účtů (UAC) určuje oprávnění uživatele. Pokud jste členem předdefinované skupiny Administrators, máte přiřazeny dva přístupové tokeny run-time: token přístupu uživatele se standardním oprávněním a token přístupu správce. Ve výchozím nastavení máte roli standardního uživatele. Když se pokusíte provést úlohu, která vyžaduje oprávnění správce, můžete pomocí dialogového okna Souhlas dynamicky zvýšit úroveň své role. Kód, který spouští metodu IsInRole , nezobrazí dialogové okno Souhlas. Kód vrátí hodnotu false, pokud máte standardní roli uživatele, a to i v případě, že jste ve skupině Předdefinovaní správci. Před spuštěním kódu můžete zvýšit oprávnění tak, že kliknete pravým tlačítkem na ikonu aplikace a označíte, že chcete spustit jako správce.
U předdefinovaných rolí role
by řetězec měl být ve formátu BUILTIN\RoleNameHere. Pokud například chcete otestovat členství v roli správce systému Windows, řetězec představující roli by měl být BUILTIN\Administrators. Všimněte si, že zpětné lomítko může být potřeba udát řídicím znakem. Následující tabulka uvádí předdefinované role.
Poznámka
Pravopis pro předdefinované role ve formátu řetězce se liší od pravopisu použitého ve výčtu WindowsBuiltInRole . Například pravopis pro správce ve výčtu je "Administrator", nikoli "Administrators". Při použití tohoto přetížení použijte pravopis pro roli z následující tabulky.
Předdefinované místní skupiny |
---|
BUILTIN\Administrators |
Builtin\users |
BUILTIN\Guests |
BUILTIN\Account Operators |
BUILTIN\Server Operators |
BUILTIN\Print – operátory |
BUILTIN\Backup Operators |
BUILTIN\Replicator |
U rolí role
specifických pro počítač by měl být řetězec ve formátu MachineName\RoleNameHere.
U rolí role
specifických pro doménu by měl být řetězec ve formátu DomainName\RoleNameHere, "SomeDomain\Domain Users
například .
Poznámka
V rozhraní .NET Framework verze 1.0 role
parametr rozlišuje velká a malá písmena. V rozhraní .NET Framework verze 1.1 a novějším role
parametr nerozlišuje velká a malá písmena.