Condividi tramite


WindowsPrincipal.IsInRole Metodo

Definizione

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

sid
SecurityIdentifier

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.

Vedi anche

Si applica a