WindowsPrincipal.IsInRole Metodo

Definizione

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

sid
SecurityIdentifier

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.

Vedi anche

Si applica a