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

Esistono quattro overload per questo metodo. Per motivi di prestazioni, IsInRole(SecurityIdentifier) l'overload è 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

Boolean

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'utilizzo dei IsInRole metodi . WindowsBuiltInRoleL'enumerazione viene utilizzata 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 esegue il test delle informazioni sui ruoli 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 di non esecuzione di questa operazione, IsInRole il test può restituire false .

Per motivi di prestazioni, IsInRole(SecurityIdentifier) l'overload è 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 fa parte del 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 Windows id di sicurezza (SID) di un gruppo di utenti 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. Se 0x220 come parametro di input per il metodo, viene restituito se IsInRole true 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 Guests 0x202
Gruppi locali predefiniti RID
BUILTIN\Administrators 0x220
BUILTIN\Users 0x221
BUILTIN\Guests 0x222
BUILTIN\Account Operators 0x224
BUILTIN\Server Operators 0x225
BUILTIN\Print Operators 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

Boolean

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'utilizzo del WindowsPrincipal.IsInRole(SecurityIdentifier) metodo . Il BuiltinAdministratorsSid valore dell'enumerazione viene usato 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 Windows. Quando si esegue il test delle informazioni sui ruoli 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 di non esecuzione di questa operazione, IsInRole il test può restituire 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 fa parte del 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

Boolean

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 WindowsBuiltInRole utilizzata l'enumerazione per determinare se l'entità corrente è un Administrator oggetto . 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 esegue il test delle informazioni sui ruoli 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 di non esecuzione di questa operazione, IsInRole il test può restituire false .

Per motivi di prestazioni, IsInRole(SecurityIdentifier) l'overload è 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 fa parte del 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

Boolean

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'utilizzo del WindowsPrincipal.IsInRole(String) metodo .

Le stringhe BUILTIN\Administrators e vengono usate per BUILTIN\Users 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 esegue il test delle 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 non è possibile che il IsInRole test restituirà false .

Per motivi di prestazioni, IsInRole(SecurityIdentifier) l'overload è 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 fa parte del 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 Windows amministratore, 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 è diversa dall'ortografia usata WindowsBuiltInRole nell'enumerazione . Ad esempio, l'ortografia per un amministratore nell'enumerazione è "Administrator", non "Administrators". Quando si usa questo overload, usare l'ortografia per il ruolo nella tabella seguente.

Gruppi locali predefiniti
BUILTIN\Administrators
BUILTIN\Users
BUILTIN\Guests
BUILTIN\Account Operators
BUILTIN\Server Operators
BUILTIN\Print Operators
BUILTIN\Backup Operators
BUILTIN\Replicator

Per i ruoli specifici del computer, la stringa deve role essere nel formato "MachineName \ RoleNameHere".

Per i ruoli specifici del dominio, la stringa deve essere role nel formato "NomeDominioNomeDominioHere", \ ad esempio "SomeDomain\Domain Users ".

Nota

Nella versione .NET Framework 1.0 il parametro fa distinzione role tra maiuscole e minuscole. Nella versione .NET Framework versione 1.1 e successive, il parametro non fa distinzione tra maiuscole role e minuscole.

Vedi anche

Si applica a