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'entità corrente appartiene a un Windows gruppo di utenti specificato.
Overload
| Nome | Descrizione |
|---|---|
| IsInRole(Int32) |
Determina se l'entità 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 WindowsBuiltInRole specificato. |
| IsInRole(String) |
Determina se l'entità corrente appartiene al gruppo di utenti Windows con il nome specificato. |
Commenti
Esistono quattro overload per questo metodo. Per motivi di prestazioni, l'overload IsInRole(SecurityIdentifier) è fortemente consigliato.
IsInRole(Int32)
Determina se l'entità 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 in cui verificare lo stato di appartenenza dell'entità.
Valori restituiti
true se l'entità corrente è membro del gruppo di utenti Windows specificato, ovvero in 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 sul ruolo all'interno del dominio. In caso contrario, è possibile che il IsInRole test restituisca false.
Per motivi di prestazioni, l'overload IsInRole(SecurityIdentifier) è consigliato come overload preferibile per determinare il ruolo dell'utente.
Note
In Windows Vista il controllo dell'account utente determina i privilegi di un utente. Se si è membri del gruppo Administrators predefinito, vengono assegnati due token di accesso in fase di esecuzione: un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, si è nel ruolo 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 di un identificatore di sicurezza (SID) di un gruppo di utenti 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\Amministratori | 0x220 |
| BUILTIN\Users | 0x221 |
| BUILTIN\Guest | 0x222 |
| BUILTIN\Account Operators | 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.
Valori restituiti
true se l'entità corrente è membro del gruppo di utenti specificato Windows; in caso contrario, false.
- Attributi
Eccezioni
sid è null.
Windows 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
Il SecurityIdentifier identifica 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 sul ruolo all'interno del dominio. In caso contrario, è possibile che il IsInRole test restituisca false.
Note
In Windows Vista il controllo dell'account utente determina i privilegi di un utente. Se si è membri del gruppo Administrators predefinito, vengono assegnati due token di accesso in fase di esecuzione: un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, si è nel ruolo 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 WindowsBuiltInRole specificato.
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 WindowsBuiltInRole valori.
Valori restituiti
true se l'entità corrente è membro del gruppo di utenti specificato Windows; in caso contrario, false.
Eccezioni
role non è un valore valido WindowsBuiltInRole .
Esempio
Nell'esempio seguente viene utilizzata l'enumerazione per determinare se l'entità WindowsBuiltInRole corrente è un Administratoroggetto . 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 sul ruolo all'interno del dominio. In caso contrario, è possibile che il IsInRole test restituisca false.
Per motivi di prestazioni, l'overload IsInRole(SecurityIdentifier) è consigliato come overload preferibile per determinare il ruolo dell'utente.
Note
In Windows Vista il controllo dell'account utente determina i privilegi di un utente. Se si è membri del gruppo Administrators predefinito, vengono assegnati due token di accesso in fase di esecuzione: un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, si è nel ruolo 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 cui controllare l'appartenenza.
Valori restituiti
true se l'entità corrente è membro del gruppo di utenti specificato Windows; 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 usate 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 sul ruolo all'interno del dominio. In caso contrario, è possibile che il IsInRole test restituisca false.
Per motivi di prestazioni, l'overload IsInRole(SecurityIdentifier) è consigliato come overload preferibile per determinare il ruolo dell'utente.
Note
In Windows Vista il controllo dell'account utente determina i privilegi di un utente. Se si è membri del gruppo Administrators predefinito, vengono assegnati due token di accesso in fase di esecuzione: un token di accesso utente standard e un token di accesso amministratore. Per impostazione predefinita, si è nel ruolo 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 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.
Note
L'ortografia per i ruoli BUILTIN in formato stringa è diversa dall'ortografia usata 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\Amministratori |
| BUILTIN\Users |
| BUILTIN\Guest |
| BUILTIN\Account Operators |
| 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".
Note
In .NET Framework versione 1.0 il parametro role fa distinzione tra maiuscole e minuscole. In .NET Framework versione 1.1 e successive, il parametro role non fa distinzione tra maiuscole e minuscole.