WindowsPrincipal.IsInRole Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Determina se l'oggetto Principal corrente appartiene al gruppo di utenti Windows specificato.
Overload
IsInRole(Int32) |
Determina se l'oggetto Principal corrente appartiene al gruppo di utenti Windows con l'identificatore relativo (RID) specificato. |
IsInRole(SecurityIdentifier) |
Determina se l'entità corrente appartiene al gruppo di utenti Windows con l'identificatore di sicurezza (SID) specificato. |
IsInRole(WindowsBuiltInRole) |
Determina se l'entità corrente appartiene al gruppo di utenti Windows con il nome specificato WindowsBuiltInRole. |
IsInRole(String) |
Determina se l'entità corrente appartiene al gruppo di utenti Windows con il nome specificato. |
Commenti
Per questo metodo sono disponibili quattro overload. Per motivi di prestazioni, l'overload IsInRole(SecurityIdentifier) è fortemente consigliato.
IsInRole(Int32)
Determina se l'oggetto Principal corrente appartiene al gruppo di utenti Windows con l'identificatore relativo (RID) specificato.
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
Parametri
- rid
- Int32
RID del gruppo di utenti Windows nel quale controllare lo stato di appartenenza dell'oggetto Principal.
Restituisce
true
se l'entità corrente è un membro del gruppo di utenti Windows specificato, ossia, è assegnato a un ruolo specifico; in caso contrario, false
.
Esempio
Nell'esempio di codice seguente viene illustrato l'uso dei IsInRole metodi . L'enumerazione WindowsBuiltInRole viene usata come origine per i RID che identificano i ruoli predefiniti. I RID vengono usati per determinare i ruoli dell'entità corrente.
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
Commenti
Quando si testano le informazioni sul ruolo appena create, ad esempio un nuovo utente o un nuovo gruppo, è importante disconnettersi e accedere per forzare la propagazione delle informazioni sui ruoli all'interno del dominio. In caso contrario, il IsInRole test restituirà false
.
Per motivi di prestazioni, l'overload IsInRole(SecurityIdentifier) è consigliato come overload preferibile per determinare il ruolo dell'utente.
Nota
In Windows Vista, la funzionalità Controllo dell'account utente determina i privilegi di un utente. Ai membri del gruppo Administrators predefinito vengono assegnati due token di accesso in fase di esecuzione, ovvero un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, viene assegnato il ruolo dell'utente standard. Quando si tenta di eseguire un'attività che richiede privilegi amministrativi, è possibile elevare dinamicamente il ruolo usando la finestra di dialogo Consenso. Il codice che esegue il IsInRole metodo non visualizza la finestra di dialogo Consenso. Il codice restituisce false se si è nel ruolo utente standard, anche se si è nel gruppo Administrators predefinito. È possibile elevare i privilegi prima di eseguire il codice facendo clic con il pulsante destro del mouse sull'icona dell'applicazione e indicando che si vuole eseguire come amministratore.
Gli identificatori relativi (RID) sono componenti dell'identificatore di sicurezza (SID) di un gruppo di utenti di Windows e sono supportati per evitare problemi di localizzazione multipiattaforma. Molti account utente, gruppi locali e gruppi globali hanno un valore RID predefinito costante in tutte le versioni di Windows.
Ad esempio, il RID per il ruolo BUILTIN\Administrators è 0x220. L'uso di 0x220 come parametro di input per il IsInRole metodo comporta true
la restituzione se l'entità corrente è un amministratore.
Nelle tabelle seguenti sono elencati i valori RID predefiniti.
Utenti predefiniti | RID |
---|---|
DOMAINNAME\Administrator | 0x1F4 |
DOMAINNAME\Guest | 0x1F5 |
Gruppi globali predefiniti | RID |
---|---|
DOMAINNAME\Domain Admins | 0x200 |
DOMAINNAME\Domain Users | 0x201 |
DOMAINNAME\Domain Guest | 0x202 |
Gruppi locali predefiniti | RID |
---|---|
BUILTIN\Administrators | 0x220 |
BUILTIN\Users | 0x221 |
BUILTIN\Guest | 0x222 |
Operatori BUILTIN\Account | 0x224 |
BUILTIN\Server Operators | 0x225 |
Operatori BUILTIN\Print | 0x226 |
BUILTIN\Backup Operators | 0x227 |
BUILTIN\Replicator | 0x228 |
Si applica a
IsInRole(SecurityIdentifier)
Determina se l'entità corrente appartiene al gruppo di utenti Windows con l'identificatore di sicurezza (SID) specificato.
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
Parametri
Oggetto SecurityIdentifier che identifica in modo univoco un gruppo di utenti Windows.
Restituisce
true
se l'oggetto Principal corrente è un membro del gruppo di utenti Windows specificato; in caso contrario, false
.
- Attributi
Eccezioni
sid
è null
.
Windows ha restituito un errore Win32.
Esempio
Nell'esempio di codice seguente viene illustrato l'uso del WindowsPrincipal.IsInRole(SecurityIdentifier) metodo . Il BuiltinAdministratorsSid valore di enumerazione viene utilizzato per determinare se l'entità corrente è un amministratore. Per l'esempio di codice completo, vedere il WindowsPrincipal.IsInRole(Int32) metodo .
// 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
Commenti
Identifica SecurityIdentifier in modo univoco un utente o un gruppo in Windows. Quando si testano le informazioni sul ruolo appena create, ad esempio un nuovo utente o un nuovo gruppo, è importante disconnettersi e accedere per forzare la propagazione delle informazioni sui ruoli all'interno del dominio. In caso contrario, il IsInRole test restituirà false
.
Nota
In Windows Vista, la funzionalità Controllo dell'account utente determina i privilegi di un utente. Ai membri del gruppo Administrators predefinito vengono assegnati due token di accesso in fase di esecuzione, ovvero un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, viene assegnato il ruolo dell'utente standard. Quando si tenta di eseguire un'attività che richiede privilegi amministrativi, è possibile elevare dinamicamente il ruolo usando la finestra di dialogo Consenso. Il codice che esegue il IsInRole metodo non visualizza la finestra di dialogo Consenso. Il codice restituisce false se si è nel ruolo utente standard, anche se si è nel gruppo Administrators predefinito. È possibile elevare i privilegi prima di eseguire il codice facendo clic con il pulsante destro del mouse sull'icona dell'applicazione e indicando che si vuole eseguire come amministratore.
Per motivi di prestazioni, questo è l'overload preferibile per determinare il ruolo di un utente.
Si applica a
IsInRole(WindowsBuiltInRole)
Determina se l'entità corrente appartiene al gruppo di utenti Windows con il nome specificato WindowsBuiltInRole.
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
Parametri
- role
- WindowsBuiltInRole
Uno dei valori di WindowsBuiltInRole.
Restituisce
true
se l'oggetto Principal corrente è un membro del gruppo di utenti Windows specificato; in caso contrario, false
.
Eccezioni
role
non è un valore valido di WindowsBuiltInRole.
Esempio
Nell'esempio seguente viene utilizzata l'enumerazione WindowsBuiltInRole per determinare se l'entità corrente è un oggetto Administrator. Per l'esempio di codice completo, vedere il WindowsPrincipal.IsInRole(Int32) metodo .
// 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))
Commenti
Quando si testano le informazioni sul ruolo appena create, ad esempio un nuovo utente o un nuovo gruppo, è importante disconnettersi e accedere per forzare la propagazione delle informazioni sui ruoli all'interno del dominio. In caso contrario, il IsInRole test restituirà false
.
Per motivi di prestazioni, l'overload IsInRole(SecurityIdentifier) è consigliato come overload preferibile per determinare il ruolo dell'utente.
Nota
In Windows Vista, la funzionalità Controllo dell'account utente determina i privilegi di un utente. Ai membri del gruppo Administrators predefinito vengono assegnati due token di accesso in fase di esecuzione, ovvero un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, viene assegnato il ruolo dell'utente standard. Quando si tenta di eseguire un'attività che richiede privilegi amministrativi, è possibile elevare dinamicamente il ruolo usando la finestra di dialogo Consenso. Il codice che esegue il IsInRole metodo non visualizza la finestra di dialogo Consenso. Il codice restituisce false se si è nel ruolo utente standard, anche se si è nel gruppo Administrators predefinito. È possibile elevare i privilegi prima di eseguire il codice facendo clic con il pulsante destro del mouse sull'icona dell'applicazione e indicando che si vuole eseguire come amministratore.
Si applica a
IsInRole(String)
Determina se l'entità corrente appartiene al gruppo di utenti Windows con il nome specificato.
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
Parametri
- role
- String
Nome del gruppo di utenti Windows per il quale verificare l'appartenenza.
Restituisce
true
se l'oggetto Principal corrente è un membro del gruppo di utenti Windows specificato; in caso contrario, false
.
Implementazioni
Esempio
Nell'esempio di codice seguente viene illustrato l'uso del WindowsPrincipal.IsInRole(String) metodo .
Le stringhe BUILTIN\Administrators
e BUILTIN\Users
vengono utilizzate per determinare se l'entità corrente è un amministratore o un utente. Per l'esempio di codice completo, vedere il WindowsPrincipal.IsInRole(Int32) metodo .
// 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"))
Commenti
Quando si testano le informazioni sul ruolo appena create, ad esempio un nuovo utente o un nuovo gruppo, è importante disconnettersi e accedere per forzare la propagazione delle informazioni sui ruoli all'interno del dominio. In caso contrario, il IsInRole test restituirà false
.
Per motivi di prestazioni, l'overload IsInRole(SecurityIdentifier) è consigliato come overload preferibile per determinare il ruolo dell'utente.
Nota
In Windows Vista, la funzionalità Controllo dell'account utente determina i privilegi di un utente. Ai membri del gruppo Administrators predefinito vengono assegnati due token di accesso in fase di esecuzione, ovvero un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, viene assegnato il ruolo dell'utente standard. Quando si tenta di eseguire un'attività che richiede privilegi amministrativi, è possibile elevare dinamicamente il ruolo usando la finestra di dialogo Consenso. Il codice che esegue il IsInRole metodo non visualizza la finestra di dialogo Consenso. Il codice restituisce false se si è nel ruolo utente standard, anche se si è nel gruppo Administrators predefinito. È possibile elevare i privilegi prima di eseguire il codice facendo clic con il pulsante destro del mouse sull'icona dell'applicazione e indicando che si vuole eseguire come amministratore.
Per i ruoli predefiniti, la role
stringa deve essere nel formato "BUILTIN\RoleNameHere". Ad esempio, per verificare l'appartenenza al ruolo di amministratore di Windows, la stringa che rappresenta il ruolo deve essere "BUILTIN\Administrators". Si noti che potrebbe essere necessario eseguire l'escape della barra rovesciata. Nella tabella seguente sono elencati i ruoli predefiniti.
Nota
L'ortografia per i ruoli BUILTIN in formato stringa differisce dall'ortografia utilizzata nell'enumerazione WindowsBuiltInRole . Ad esempio, l'ortografia per un amministratore nell'enumerazione è "Administrator", non "Administrators". Quando si usa questo overload, usare l'ortografia per il ruolo della tabella seguente.
Gruppi locali predefiniti |
---|
BUILTIN\Administrators |
BUILTIN\Users |
BUILTIN\Guest |
Operatori BUILTIN\Account |
BUILTIN\Server Operators |
Operatori BUILTIN\Print |
BUILTIN\Backup Operators |
BUILTIN\Replicator |
Per i ruoli specifici del computer, la role
stringa deve essere nel formato "MachineName\RoleNameHere".
Per i ruoli specifici del dominio, la role
stringa deve essere nel formato "DomainName\RoleNameHere", ad esempio "SomeDomain\Domain Users
".
Nota
In .NET Framework versione 1.0 il role
parametro fa distinzione tra maiuscole e minuscole. In .NET Framework versione 1.1 e successive il role
parametro non fa distinzione tra maiuscole e minuscole.