RegistrySecurity Classe

Definizione

Rappresenta la sicurezza del controllo di accesso di Windows per una chiave del Registro di sistema. La classe non può essere ereditata.

public ref class RegistrySecurity sealed : System::Security::AccessControl::NativeObjectSecurity
public sealed class RegistrySecurity : System.Security.AccessControl.NativeObjectSecurity
[System.Security.SecurityCritical]
public sealed class RegistrySecurity : System.Security.AccessControl.NativeObjectSecurity
type RegistrySecurity = class
    inherit NativeObjectSecurity
[<System.Security.SecurityCritical>]
type RegistrySecurity = class
    inherit NativeObjectSecurity
Public NotInheritable Class RegistrySecurity
Inherits NativeObjectSecurity
Ereditarietà
Attributi

Esempio

In questa sezione sono riportati due esempi di codice. Il primo esempio mostra il modo in cui le regole compatibili vengono unite quando vengono aggiunte e rimosse e la seconda mostra come i flag di ereditarietà e propagazione influiscono sull'aggiunta e l'eliminazione delle regole.

Esempio 1

Nell'esempio di codice seguente viene illustrato come il RemoveAccessRule metodo rimuove i diritti da una regola compatibile e come il AddAccessRule metodo unisce i diritti con regole compatibili.

Nell'esempio viene creato un RegistrySecurity oggetto e viene aggiunta una regola che consente i diritti utente RegistryRights.ReadKey correnti. Nell'esempio viene quindi creata una regola che concede all'utente RegistryRights.SetValue, con gli stessi diritti di ereditarietà e propagazione della prima regola e usa il RemoveAccessRule metodo per rimuovere la nuova regola dall'oggetto RegistrySecurity . SetValue è un componente di ReadKey, quindi viene rimosso dalla regola compatibile. Vengono visualizzate le regole nell'oggetto RegistrySecurity , che mostrano gli elementi costitutivi rimanenti di ReadKey.

Il codice di esempio chiama quindi il AddAccessRule metodo per unire nuovamente la SetValue proprietà destra nella regola nell'oggetto RegistrySecurity .

Nota

In questo esempio l'oggetto di sicurezza non viene associato a un RegistryKey oggetto . Il secondo esempio in questa sezione associa un oggetto di sicurezza e quindi esegue gli esempi in RegistryKey.GetAccessControl e RegistryKey.SetAccessControl.


using System;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Security;
using Microsoft.Win32;

public class Example
{

    public static void Main()
    {

        string user = Environment.UserDomainName + "\\"
            + Environment.UserName;

        // Create a security object that grants no access.
        RegistrySecurity mSec = new RegistrySecurity();

        // Add a rule that grants the current user ReadKey
        // rights. ReadKey is a combination of four other 
        // rights. The rule is inherited by all 
        // contained subkeys.
        RegistryAccessRule rule = new RegistryAccessRule(user, 
            RegistryRights.ReadKey, 
            InheritanceFlags.ContainerInherit, 
            PropagationFlags.None, 
            AccessControlType.Allow);
        mSec.AddAccessRule(rule);

        // Create a rule that allows the current user only the 
        // right to query the key/value pairs of a key, using  
        // the same inheritance and propagation flags as the
        // first rule. QueryValues is a constituent of 
        // ReadKey, so when this rule is removed, using the 
        // RemoveAccessRule method, ReadKey is broken into
        // its constituent parts.
        rule = new RegistryAccessRule(user, 
            RegistryRights.QueryValues, 
            InheritanceFlags.ContainerInherit, 
            PropagationFlags.None, 
            AccessControlType.Allow);
        mSec.RemoveAccessRule(rule);

        // Display the rules in the security object.
        ShowSecurity(mSec);

        // Add the second rule back. It merges with the 
        // existing rule, so that the rule is now displayed
        // as ReadKey.
        mSec.AddAccessRule(rule);

        // Display the rules in the security object.
        ShowSecurity(mSec);
    }

    private static void ShowSecurity(RegistrySecurity security)
    {
        Console.WriteLine("\r\nCurrent access rules:\r\n");

        foreach( RegistryAccessRule ar in security.GetAccessRules(true, true, typeof(NTAccount)) )
        {
            Console.WriteLine("        User: {0}", ar.IdentityReference);
            Console.WriteLine("        Type: {0}", ar.AccessControlType);
            Console.WriteLine("      Rights: {0}", ar.RegistryRights);
            Console.WriteLine(" Inheritance: {0}", ar.InheritanceFlags);
            Console.WriteLine(" Propagation: {0}", ar.PropagationFlags);
            Console.WriteLine("   Inherited? {0}", ar.IsInherited);
            Console.WriteLine();
        }
    }
}

/* This code example produces output similar to following:

Current access rules:

        User: TestDomain\TestUser
        Type: Allow
      Rights: EnumerateSubKeys, Notify, ReadPermissions
 Inheritance: ContainerInherit
 Propagation: None
   Inherited? False


Current access rules:

        User: TestDomain\TestUser
        Type: Allow
      Rights: ReadKey
 Inheritance: ContainerInherit
 Propagation: None
   Inherited? False
 */
Option Explicit
Imports System.Security.AccessControl
Imports System.Security.Principal
Imports System.Security
Imports Microsoft.Win32

Public Class Example

    Public Shared Sub Main()

        Dim user As String = Environment.UserDomainName _ 
            & "\" & Environment.UserName

        ' Create a security object that grants no access.
        Dim mSec As New RegistrySecurity()

        ' Add a rule that grants the current user ReadKey
        ' rights. ReadKey is a combination of four other 
        ' rights. The rule is inherited by all 
        ' contained subkeys.
        Dim rule As New RegistryAccessRule(user, _
            RegistryRights.ReadKey, _
            InheritanceFlags.ContainerInherit, _
            PropagationFlags.None, _
            AccessControlType.Allow)
        mSec.AddAccessRule(rule)

        ' Create a rule that allows the current user only the 
        ' right to query the key/value pairs of a key, using  
        ' the same inheritance and propagation flags as the
        ' first rule. QueryValues is a constituent of 
        ' ReadKey, so when this rule is removed, using the 
        ' RemoveAccessRule method, ReadKey is broken into
        ' its constituent parts.
        rule = New RegistryAccessRule(user, _
            RegistryRights.QueryValues, _
            InheritanceFlags.ContainerInherit, _
            PropagationFlags.None, _
            AccessControlType.Allow)
        mSec.RemoveAccessRule(rule)

        ' Display the rules in the security object.
        ShowSecurity(mSec)

        ' Add the second rule back. It merges with the 
        ' existing rule, so that the rule is now displayed
        ' as ReadKey.
        mSec.AddAccessRule(rule)

        ' Display the rules in the security object.
        ShowSecurity(mSec)

    End Sub 

    Private Shared Sub ShowSecurity(ByVal security As RegistrySecurity)
        Console.WriteLine(vbCrLf & "Current access rules:" & vbCrLf)

        For Each ar As RegistryAccessRule In _
            security.GetAccessRules(True, True, GetType(NTAccount))

            Console.WriteLine("        User: {0}", ar.IdentityReference)
            Console.WriteLine("        Type: {0}", ar.AccessControlType)
            Console.WriteLine("      Rights: {0}", ar.RegistryRights)
            Console.WriteLine(" Inheritance: {0}", ar.InheritanceFlags)
            Console.WriteLine(" Propagation: {0}", ar.PropagationFlags)
            Console.WriteLine("   Inherited? {0}", ar.IsInherited)
            Console.WriteLine()
        Next

    End Sub
End Class 

'This code example produces output similar to following:
'
'Current access rules:
'
'        User: TestDomain\TestUser
'        Type: Allow
'      Rights: EnumerateSubKeys, Notify, ReadPermissions
' Inheritance: ContainerInherit
' Propagation: None
'   Inherited? False
'
'
'Current access rules:
'
'        User: TestDomain\TestUser
'        Type: Allow
'      Rights: ReadKey
' Inheritance: ContainerInherit
' Propagation: None
'   Inherited? False
'

Esempio 2

Nell'esempio di codice seguente vengono illustrate le regole di accesso con ereditarietà e propagazione. Nell'esempio viene creato un RegistrySecurity oggetto , quindi vengono create e aggiunte due regole con il ContainerInherit flag . La prima regola non ha flag di propagazione, mentre il secondo ha NoPropagateInherit e InheritOnly.

Il programma visualizza le regole nell'oggetto e quindi usa l'oggetto RegistrySecurity RegistrySecurity per creare una sottochiave. Il programma crea una sottochiave figlio e una sottochiave nipote, quindi visualizza la sicurezza per ogni sottochiave. Infine, il programma elimina le chiavi di test.


using System;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Security;
using Microsoft.Win32;

public class Example
{
    public static void Main()
    {
        const string TestKey = "TestKey3927";
        RegistryKey cu = Registry.CurrentUser;

        string user = Environment.UserDomainName + 
            "\\" + Environment.UserName;

        // Create a security object that grants no access.
        RegistrySecurity mSec = new RegistrySecurity();

        // Add a rule that grants the current user the right
        // to read and enumerate the name/value pairs in a key, 
        // to read its access and audit rules, to enumerate
        // its subkeys, to create subkeys, and to delete the key. 
        // The rule is inherited by all contained subkeys.
        //
        RegistryAccessRule rule = new RegistryAccessRule(user, 
           RegistryRights.ReadKey | RegistryRights.WriteKey 
               | RegistryRights.Delete, 
           InheritanceFlags.ContainerInherit, 
           PropagationFlags.None, 
           AccessControlType.Allow
        );
        mSec.AddAccessRule(rule);

        // Add a rule that allows the current user the right
        // right to set the name/value pairs in a key. 
        // This rule is inherited by contained subkeys, but
        // propagation flags limit it to immediate child 
        // subkeys.
        rule = new RegistryAccessRule(user, 
            RegistryRights.ChangePermissions, 
            InheritanceFlags.ContainerInherit, 
            PropagationFlags.InheritOnly | 
                PropagationFlags.NoPropagateInherit, 
            AccessControlType.Allow);
        mSec.AddAccessRule(rule);

        // Display the rules in the security object.
        ShowSecurity(mSec);

        // Create the test key using the security object.
        //
        RegistryKey rk = cu.CreateSubKey(TestKey, 
            RegistryKeyPermissionCheck.ReadWriteSubTree, mSec);

        // Create a child subkey and a grandchild subkey, 
        // without security.
        RegistryKey rkChild = rk.CreateSubKey("ChildKey", 
            RegistryKeyPermissionCheck.ReadWriteSubTree);
        RegistryKey rkGrandChild = 
            rkChild.CreateSubKey("GrandChildKey", 
                RegistryKeyPermissionCheck.ReadWriteSubTree);

        Show(rk);
        Show(rkChild);
        Show(rkGrandChild);

        rkGrandChild.Close();
        rkChild.Close();
        rk.Close();

        cu.DeleteSubKeyTree(TestKey);
    }

    private static void Show(RegistryKey rk)
    {
        Console.WriteLine(rk.Name);
        ShowSecurity(rk.GetAccessControl());
    }

    private static void ShowSecurity(RegistrySecurity security)
    {
        Console.WriteLine("\r\nCurrent access rules:\r\n");

        foreach( RegistryAccessRule ar in security.GetAccessRules(true, true, typeof(NTAccount)) )
        {

            Console.WriteLine("        User: {0}", ar.IdentityReference);
            Console.WriteLine("        Type: {0}", ar.AccessControlType);
            Console.WriteLine("      Rights: {0}", ar.RegistryRights);
            Console.WriteLine(" Inheritance: {0}", ar.InheritanceFlags);
            Console.WriteLine(" Propagation: {0}", ar.PropagationFlags);
            Console.WriteLine("   Inherited? {0}", ar.IsInherited);
            Console.WriteLine();
        }
    }
}

/* This code example produces output similar to following:

Current access rules:

        User: TestDomain\TestUser
        Type: Allow
      Rights: SetValue, CreateSubKey, Delete, ReadKey
 Inheritance: ContainerInherit
 Propagation: None
   Inherited? False

        User: TestDomain\TestUser
        Type: Allow
      Rights: ChangePermissions
 Inheritance: ContainerInherit
 Propagation: NoPropagateInherit, InheritOnly
   Inherited? False

HKEY_CURRENT_USER\TestKey3927

Current access rules:

        User: TestDomain\TestUser
        Type: Allow
      Rights: SetValue, CreateSubKey, Delete, ReadKey
 Inheritance: ContainerInherit
 Propagation: None
   Inherited? False

        User: TestDomain\TestUser
        Type: Allow
      Rights: ChangePermissions
 Inheritance: ContainerInherit
 Propagation: NoPropagateInherit, InheritOnly
   Inherited? False

HKEY_CURRENT_USER\TestKey3927\ChildKey

Current access rules:

        User: TestDomain\TestUser
        Type: Allow
      Rights: SetValue, CreateSubKey, Delete, ReadKey
 Inheritance: ContainerInherit
 Propagation: None
   Inherited? True

        User: TestDomain\TestUser
        Type: Allow
      Rights: ChangePermissions
 Inheritance: None
 Propagation: None
   Inherited? True

HKEY_CURRENT_USER\TestKey3927\ChildKey\GrandChildKey

Current access rules:

        User: TestDomain\TestUser
        Type: Allow
      Rights: SetValue, CreateSubKey, Delete, ReadKey
 Inheritance: ContainerInherit
 Propagation: None
   Inherited? True
 */
Option Explicit
Imports System.Security.AccessControl
Imports System.Security.Principal
Imports System.Security
Imports Microsoft.Win32

Public Class Example

    Public Shared Sub Main()

        Const TestKey As String = "TestKey3927"
        Dim cu As RegistryKey = Registry.CurrentUser

        Dim user As String = Environment.UserDomainName _ 
            & "\" & Environment.UserName

        ' Create a security object that grants no access.
        Dim mSec As New RegistrySecurity()

        ' Add a rule that grants the current user the right
        ' to read and enumerate the name/value pairs in a key, 
        ' to read its access and audit rules, to enumerate
        ' its subkeys, to create subkeys, and to delete the key. 
        ' The rule is inherited by all contained subkeys.
        '
        Dim rule As New RegistryAccessRule(user, _
            RegistryRights.ReadKey Or RegistryRights.WriteKey _
                Or RegistryRights.Delete, _
            InheritanceFlags.ContainerInherit, _
            PropagationFlags.None, _
            AccessControlType.Allow)
        mSec.AddAccessRule(rule)

        ' Add a rule that allows the current user the right
        ' right to set the name/value pairs in a key. 
        ' This rule is inherited by contained subkeys, but
        ' propagation flags limit it to immediate child 
        ' subkeys.
        rule = New RegistryAccessRule(user, _
            RegistryRights.ChangePermissions, _
            InheritanceFlags.ContainerInherit, _
            PropagationFlags.InheritOnly Or PropagationFlags.NoPropagateInherit, _
            AccessControlType.Allow)
        mSec.AddAccessRule(rule)

        ' Display the rules in the security object.
        ShowSecurity(mSec)

        ' Create the test key using the security object.
        '
        Dim rk As RegistryKey = cu.CreateSubKey(TestKey, _
            RegistryKeyPermissionCheck.ReadWriteSubTree, _
            mSec)

        ' Create a child subkey and a grandchild subkey, 
        ' without security.
        Dim rkChild As RegistryKey= rk.CreateSubKey("ChildKey", _
            RegistryKeyPermissionCheck.ReadWriteSubTree)
        Dim rkGrandChild As RegistryKey = _
            rkChild.CreateSubKey("GrandChildKey", _
                RegistryKeyPermissionCheck.ReadWriteSubTree)

        Show(rk)
        Show(rkChild)
        Show(rkGrandChild)

        rkGrandChild.Close()
        rkChild.Close()
        rk.Close()

        cu.DeleteSubKeyTree(TestKey)
    End Sub 

    Private Shared Sub Show(ByVal rk As RegistryKey)
        Console.WriteLine(rk.Name)            
        ShowSecurity(rk.GetAccessControl())
    End Sub

    Private Shared Sub ShowSecurity(ByVal security As RegistrySecurity)
        Console.WriteLine(vbCrLf & "Current access rules:" & vbCrLf)

        For Each ar As RegistryAccessRule In _
            security.GetAccessRules(True, True, GetType(NTAccount))

            Console.WriteLine("        User: {0}", ar.IdentityReference)
            Console.WriteLine("        Type: {0}", ar.AccessControlType)
            Console.WriteLine("      Rights: {0}", ar.RegistryRights)
            Console.WriteLine(" Inheritance: {0}", ar.InheritanceFlags)
            Console.WriteLine(" Propagation: {0}", ar.PropagationFlags)
            Console.WriteLine("   Inherited? {0}", ar.IsInherited)
            Console.WriteLine()
        Next

    End Sub
End Class 

'This code example produces output similar to following:
'
'Current access rules:
'
'        User: TestDomain\TestUser
'        Type: Allow
'      Rights: SetValue, CreateSubKey, Delete, ReadKey
' Inheritance: ContainerInherit
' Propagation: None
'   Inherited? False
'
'        User: TestDomain\TestUser
'        Type: Allow
'      Rights: ChangePermissions
' Inheritance: ContainerInherit
' Propagation: NoPropagateInherit, InheritOnly
'   Inherited? False
'
'HKEY_CURRENT_USER\TestKey3927
'
'Current access rules:
'
'        User: TestDomain\TestUser
'        Type: Allow
'      Rights: SetValue, CreateSubKey, Delete, ReadKey
' Inheritance: ContainerInherit
' Propagation: None
'   Inherited? False
'
'        User: TestDomain\TestUser
'        Type: Allow
'      Rights: ChangePermissions
' Inheritance: ContainerInherit
' Propagation: NoPropagateInherit, InheritOnly
'   Inherited? False
'
'HKEY_CURRENT_USER\TestKey3927\ChildKey
'
'Current access rules:
'
'        User: TestDomain\TestUser
'        Type: Allow
'      Rights: SetValue, CreateSubKey, Delete, ReadKey
' Inheritance: ContainerInherit
' Propagation: None
'   Inherited? True
'
'        User: TestDomain\TestUser
'        Type: Allow
'      Rights: ChangePermissions
' Inheritance: None
' Propagation: None
'   Inherited? True
'
'HKEY_CURRENT_USER\TestKey3927\ChildKey\GrandChildKey
'
'Current access rules:
'
'        User: TestDomain\TestUser
'        Type: Allow
'      Rights: SetValue, CreateSubKey, Delete, ReadKey
' Inheritance: ContainerInherit
' Propagation: None
'   Inherited? True

Commenti

Un RegistrySecurity oggetto specifica i diritti di accesso per una chiave del Registro di sistema e specifica anche come vengono controllati i tentativi di accesso. I diritti di accesso alla chiave del Registro di sistema vengono espressi come regole, con ogni regola di accesso rappresentata da un RegistryAccessRule oggetto . Ogni regola di controllo è rappresentata da un RegistryAuditRule oggetto .

Questo rispecchia il sistema di sicurezza sottostante Windows, in cui ogni oggetto a protezione diretta ha al massimo un elenco di controllo di accesso discrezionale (DACL) che controlla l'accesso all'oggetto protetto e al massimo un elenco di controllo di accesso di sistema (SACL) che specifica quali tentativi di accesso vengono controllati. DACL e SACL sono elenchi ordinati di voci di controllo di accesso (ACE) che specificano l'accesso e il controllo per utenti e gruppi. Un RegistryAccessRule oggetto o RegistryAuditRule può rappresentare più ace.

Nota

Windows la sicurezza del controllo di accesso può essere applicata solo alle chiavi del Registro di sistema. Non può essere applicato a singole coppie chiave/valore archiviate in una chiave.

Le RegistrySecurityclassi , RegistryAccessRulee RegistryAuditRule nascondono i dettagli di implementazione degli ACL e degli ACL. Consentono di ignorare i diciassette tipi ACE diversi e la complessità di mantenere correttamente l'ereditarietà e la propagazione dei diritti di accesso. Questi oggetti sono progettati anche per evitare i seguenti errori comuni di controllo di accesso:

  • Creazione di un descrittore di sicurezza con un DACL Null. Un riferimento Null a un DACL consente a qualsiasi utente di aggiungere regole di accesso a un oggetto, creando potenzialmente un attacco Denial of Service. Un nuovo RegistrySecurity oggetto inizia sempre con un DACL vuoto, che nega l'accesso a tutti gli utenti.

  • Violazione dell'ordinamento canonico degli ACL. Se l'elenco ACE nell'elenco DACL non viene mantenuto nell'ordine canonico, gli utenti potrebbero inavvertitamente avere accesso all'oggetto protetto. Ad esempio, i diritti di accesso negato devono essere sempre visualizzati prima dei diritti di accesso consentiti. RegistrySecurity gli oggetti mantengono l'ordine corretto internamente.

  • Modifica dei flag del descrittore di sicurezza, che devono essere solo sotto il controllo di Resource Manager.

  • Creazione di combinazioni non valide di flag ACE.

  • Modifica degli ACL ereditati. L'ereditarietà e la propagazione vengono gestite dal gestore risorse, in risposta alle modifiche apportate alle regole di accesso e controllo.

  • Inserimento di ACL senza significato in ACL.

Le uniche funzionalità non supportate dagli oggetti di sicurezza .NET sono attività pericolose che devono essere evitate dalla maggior parte degli sviluppatori di applicazioni, ad esempio:

  • Attività di basso livello che vengono normalmente eseguite dal gestore risorse.

  • Aggiunta o rimozione delle voci di controllo di accesso in modi che non mantengono l'ordinamento canonico.

Per modificare Windows sicurezza del controllo di accesso per una chiave del Registro di sistema, usare il RegistryKey.GetAccessControl metodo per ottenere l'oggetto RegistrySecurity . Modificare l'oggetto di sicurezza aggiungendo e rimuovendo le regole e quindi usare il RegistryKey.SetAccessControl metodo per ricollegarlo.

Importante

Le modifiche apportate a un RegistrySecurity oggetto non influiscono sui livelli di accesso della chiave del Registro di sistema finché non si chiama il RegistryKey.SetAccessControl metodo per assegnare l'oggetto di sicurezza modificato alla chiave del Registro di sistema.

Per copiare la sicurezza del controllo di accesso da una chiave del Registro di sistema a un'altra, usare il RegistryKey.GetAccessControl metodo per ottenere un RegistrySecurity oggetto che rappresenta le regole di accesso e controllo per la prima chiave del Registro di sistema e quindi usare il RegistryKey.SetAccessControl metodo per assegnare tali regole alla seconda chiave del Registro di sistema. È anche possibile assegnare le regole a una seconda chiave del Registro di sistema con un RegistryKey.OpenSubKey metodo o RegistryKey.CreateSubKey che accetta un RegistrySecurity parametro oggetto.

Gli utenti con un investimento nel linguaggio di definizione del descrittore di sicurezza (SDDL) possono usare il SetSecurityDescriptorSddlForm metodo per impostare le regole di accesso per una chiave del Registro di sistema e il GetSecurityDescriptorSddlForm metodo per ottenere una stringa che rappresenta le regole di accesso in formato SDDL. Questo non è consigliato per il nuovo sviluppo.

Costruttori

RegistrySecurity()

Inizializza una nuova istanza della classe RegistrySecurity con i valori predefiniti.

Proprietà

AccessRightType

Ottiene il tipo di enumerazione utilizzato dalla classe RegistrySecurity per rappresentare i diritti di accesso.

AccessRulesModified

Ottiene o imposta un valore booleano che specifica se le regole di accesso associate all'oggetto ObjectSecurity sono state modificate.

(Ereditato da ObjectSecurity)
AccessRuleType

Ottiene il tipo utilizzato dalla classe RegistrySecurity per rappresentare le regole di accesso.

AreAccessRulesCanonical

Ottiene un valore booleano che specifica se le regole di accesso associate a questo oggetto ObjectSecurity sono in ordinamento canonico.

(Ereditato da ObjectSecurity)
AreAccessRulesProtected

Ottiene un valore booleano che specifica se l'elenco di controllo di accesso discrezionale (DACL) associato all'oggetto ObjectSecurity è protetto.

(Ereditato da ObjectSecurity)
AreAuditRulesCanonical

Ottiene un valore booleano che specifica se le regole di controllo associate all'oggetto ObjectSecurity sono in ordinamento canonico.

(Ereditato da ObjectSecurity)
AreAuditRulesProtected

Ottiene un valore booleano che specifica se l'elenco di controllo di accesso di sistema (SACL) associato a questo oggetto ObjectSecurity è protetto.

(Ereditato da ObjectSecurity)
AuditRulesModified

Ottiene o imposta un valore booleano che specifica se le regole di controllo associate all'oggetto ObjectSecurity sono state modificate.

(Ereditato da ObjectSecurity)
AuditRuleType

Ottiene il tipo utilizzato dalla classe RegistrySecurity per rappresentare le regole di controllo.

GroupModified

Ottiene o imposta un valore booleano che specifica se il gruppo associato all'oggetto a protezione diretta è stato modificato.

(Ereditato da ObjectSecurity)
IsContainer

Ottiene un valore booleano che specifica se l'oggetto ObjectSecurity è un oggetto contenitore.

(Ereditato da ObjectSecurity)
IsDS

Ottiene un valore booleano che specifica se l'oggetto ObjectSecurity è un oggetto directory.

(Ereditato da ObjectSecurity)
OwnerModified

Ottiene o imposta un valore booleano che specifica se il proprietario dell'oggetto a protezione diretta è stato modificato.

(Ereditato da ObjectSecurity)
SecurityDescriptor

Ottiene il descrittore di sicurezza per questa istanza.

(Ereditato da ObjectSecurity)

Metodi

AccessRuleFactory(IdentityReference, Int32, Boolean, InheritanceFlags, PropagationFlags, AccessControlType)

Crea una nuova regola di controllo di accesso per l'utente specificato, con i diritti di accesso, il controllo di accesso e i flag specificati.

AddAccessRule(AccessRule)

Aggiunge la regola di accesso specificata al DACL (Discretionary Access Control List, elenco di controllo di accesso discrezionale) associato all'oggetto CommonObjectSecurity.

(Ereditato da CommonObjectSecurity)
AddAccessRule(RegistryAccessRule)

Cerca un controllo di accesso corrispondente al quale è possibile unire la nuova regola. Se non viene trovata alcuna regola, viene aggiunta la nuova regola.

AddAuditRule(AuditRule)

Aggiunge la regola di controllo specificata al SACL (System Access Control List, elenco di controllo di accesso di sistema) associato all'oggetto CommonObjectSecurity.

(Ereditato da CommonObjectSecurity)
AddAuditRule(RegistryAuditRule)

Cerca una regola di controllo a cui è possibile unire la nuova regola. Se non viene trovata alcuna regola, viene aggiunta la nuova regola.

AuditRuleFactory(IdentityReference, Int32, Boolean, InheritanceFlags, PropagationFlags, AuditFlags)

Crea una nuova regola di controllo che specifica l'utente a cui viene applicata la regola, i diritti di accesso da controllare, l'ereditarietà e la propagazione della regola e il risultato che attiva la regola.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetAccessRules(Boolean, Boolean, Type)

Ottiene un insieme delle regole di accesso associate all'identificatore di sicurezza specificato.

(Ereditato da CommonObjectSecurity)
GetAuditRules(Boolean, Boolean, Type)

Ottiene un insieme di regole di accesso associate all'identificatore di sicurezza specificato.

(Ereditato da CommonObjectSecurity)
GetGroup(Type)

Ottiene il gruppo primario associato al proprietario specificato.

(Ereditato da ObjectSecurity)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetOwner(Type)

Ottiene il proprietario associato al gruppo primario specificato.

(Ereditato da ObjectSecurity)
GetSecurityDescriptorBinaryForm()

Restituisce una matrice di valori byte che rappresenta le informazioni del descrittore di sicurezza per questo oggetto ObjectSecurity.

(Ereditato da ObjectSecurity)
GetSecurityDescriptorSddlForm(AccessControlSections)

Restituisce la rappresentazione in formato SDDL (Security Descriptor Definition Language) delle sezioni specificate del descrittore di sicurezza associato a questo oggetto ObjectSecurity.

(Ereditato da ObjectSecurity)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ModifyAccess(AccessControlModification, AccessRule, Boolean)

Applica la modifica specificata all'elenco di controllo di accesso discrezionale (DACL) associato all'oggetto CommonObjectSecurity.

(Ereditato da CommonObjectSecurity)
ModifyAccessRule(AccessControlModification, AccessRule, Boolean)

Applica la modifica specificata all'elenco di controllo di accesso discrezionale (DACL) associato all'oggetto ObjectSecurity.

(Ereditato da ObjectSecurity)
ModifyAudit(AccessControlModification, AuditRule, Boolean)

Applica la modifica specificata all'elenco di controllo di accesso di sistema (SACL) associato all'oggetto CommonObjectSecurity.

(Ereditato da CommonObjectSecurity)
ModifyAuditRule(AccessControlModification, AuditRule, Boolean)

Applica la modifica specificata all'elenco di controllo di accesso di sistema (SACL) associato all'oggetto ObjectSecurity.

(Ereditato da ObjectSecurity)
Persist(Boolean, String, AccessControlSections)

Salva le sezioni specificate del descrittore di sicurezza associato a questo oggetto ObjectSecurity in un archivio permanente. Si consiglia di usare valori identici per i parametri includeSections passati al costruttore e per i metodi Persist.

(Ereditato da ObjectSecurity)
Persist(SafeHandle, AccessControlSections)

Salva le sezioni specificate del descrittore di sicurezza associato a questo oggetto NativeObjectSecurity in un archivio permanente. Si consiglia di usare valori identici per i parametri includeSections passati al costruttore e i metodi Persist.

(Ereditato da NativeObjectSecurity)
Persist(SafeHandle, AccessControlSections, Object)

Salva le sezioni specificate del descrittore di sicurezza associato a questo oggetto NativeObjectSecurity in un archivio permanente. Si consiglia di usare valori identici per i parametri includeSections passati al costruttore e per i metodi Persist.

(Ereditato da NativeObjectSecurity)
Persist(String, AccessControlSections)

Salva le sezioni specificate del descrittore di sicurezza associato a questo oggetto NativeObjectSecurity in un archivio permanente. Si consiglia di usare valori identici per i parametri includeSections passati al costruttore e per i metodi Persist.

(Ereditato da NativeObjectSecurity)
Persist(String, AccessControlSections, Object)

Salva le sezioni specificate del descrittore di sicurezza associato a questo oggetto NativeObjectSecurity in un archivio permanente. Si consiglia di usare valori identici per i parametri includeSections passati al costruttore e per i metodi Persist.

(Ereditato da NativeObjectSecurity)
PurgeAccessRules(IdentityReference)

Rimuove tutte le regole di accesso associate all'oggetto IdentityReference specificato.

(Ereditato da ObjectSecurity)
PurgeAuditRules(IdentityReference)

Rimuove tutte le regole di controllo associate all'oggetto IdentityReference specificato.

(Ereditato da ObjectSecurity)
ReadLock()

Blocca questo oggetto ObjectSecurity per l'accesso in lettura.

(Ereditato da ObjectSecurity)
ReadUnlock()

Sblocca l'oggetto ObjectSecurity per l'accesso in lettura.

(Ereditato da ObjectSecurity)
RemoveAccessRule(AccessRule)

Rimuove le regole di accesso che contengono lo stesso ID di sicurezza e la stessa maschera di accesso della regola di accesso specificata dall'elenco di controllo di accesso discrezionale (DACL) associato all'oggetto CommonObjectSecurity.

(Ereditato da CommonObjectSecurity)
RemoveAccessRule(RegistryAccessRule)

Cerca una regola di controllo di accesso con lo stesso utente e la stessa classe AccessControlType (consenso o negazione) della regola di accesso specificata e con i flag di ereditarietà e propagazione compatibili. Se viene trovata una regola simile, i diritti contenuti nella regola di accesso specificata vengono rimossi da essa.

RemoveAccessRuleAll(AccessRule)

Rimuove tutte le regole di accesso che dispongono dello stesso ID di sicurezza della regola di accesso specificata dall'elenco di controllo di accesso discrezionale (DACL) associato all'oggetto CommonObjectSecurity.

(Ereditato da CommonObjectSecurity)
RemoveAccessRuleAll(RegistryAccessRule)

Cerca tutte le regole di controllo di accesso con lo stesso utente e la stessa classe AccessControlType (consenso o negazione) della regola specificata e, se trovate, le rimuove.

RemoveAccessRuleSpecific(AccessRule)

Rimuove tutte le regole di accesso che corrispondono esattamente alla regola di accesso specificata dall'elenco di controllo di accesso discrezionale (DACL) associato all'oggetto CommonObjectSecurity.

(Ereditato da CommonObjectSecurity)
RemoveAccessRuleSpecific(RegistryAccessRule)

Cerca una regola di controllo di accesso che corrisponde esattamente alla regola specificata e, se trovata, la rimuove.

RemoveAuditRule(AuditRule)

Rimuove le regole di controllo che contengono lo stesso ID di sicurezza e la stessa maschera di accesso della regola di controllo specificata dall'elenco di controllo di accesso di sistema (SACL) associato all'oggetto CommonObjectSecurity.

(Ereditato da CommonObjectSecurity)
RemoveAuditRule(RegistryAuditRule)

Cerca una regola di controllo con lo stesso utente della regola specificata e con i flag di ereditarietà e propagazione compatibili. Se viene trovata una regola simile, i diritti contenuti nella regola specificata vengono rimossi da essa.

RemoveAuditRuleAll(AuditRule)

Rimuove tutte le regole di controllo che dispongono dello stesso ID di sicurezza della regola di controllo specificata dall'elenco di controllo di accesso di sistema (SACL) associato all'oggetto CommonObjectSecurity.

(Ereditato da CommonObjectSecurity)
RemoveAuditRuleAll(RegistryAuditRule)

Cerca tutte le regole di controllo in cui l'utente sia identico a quello della regola specificata e rimuove le regole trovate.

RemoveAuditRuleSpecific(AuditRule)

Rimuove tutte le regole di controllo che corrispondono esattamente alla regola di controllo specificata dall'elenco di controllo di accesso di sistema (SACL) associato all'oggetto CommonObjectSecurity.

(Ereditato da CommonObjectSecurity)
RemoveAuditRuleSpecific(RegistryAuditRule)

Cerca una regola di controllo che corrisponde esattamente alla regola specificata e, se trovata, la rimuove.

ResetAccessRule(AccessRule)

Rimuove tutte le regole di accesso presenti nell'elenco di controllo di accesso discrezionale (DACL) associate all'oggetto CommonObjectSecurity e aggiunge la regola di accesso specificata.

(Ereditato da CommonObjectSecurity)
ResetAccessRule(RegistryAccessRule)

Rimuove tutte le regole di controllo di accesso con lo stesso utente della regola specificata, a prescindere dalla classe AccessControlType, quindi aggiunge la regola specificata.

SetAccessRule(AccessRule)

Rimuove tutte le regole di accesso che contengono lo stesso ID di sicurezza e lo stesso qualificatore della regola di accesso specificata nell'elenco di controllo di accesso discrezionale (DACL) associato all'oggetto CommonObjectSecurity e aggiunge la regola di accesso specificata.

(Ereditato da CommonObjectSecurity)
SetAccessRule(RegistryAccessRule)

Rimuove tutte le regole di controllo di accesso con lo stesso utente e la stessa classe AccessControlType (consenso o negazione) della regola specificata, quindi aggiunge la regola specificata.

SetAccessRuleProtection(Boolean, Boolean)

Imposta o rimuove la protezione delle regole di accesso associate a questo oggetto ObjectSecurity. Le regole di accesso protette non possono essere modificate da oggetti padre mediante l'ereditarietà.

(Ereditato da ObjectSecurity)
SetAuditRule(AuditRule)

Rimuove tutte le regole di controllo che contengono lo stesso ID di sicurezza e lo stesso qualificatore della regola di controllo specificata nell'elenco di controllo di accesso di sistema (SACL) associato all'oggetto CommonObjectSecurity e aggiunge la regola di controllo specificata.

(Ereditato da CommonObjectSecurity)
SetAuditRule(RegistryAuditRule)

Rimuove tutte le regole di controllo con lo stesso utente della regola specificata, a prescindere dal valore di AuditFlags, quindi aggiunge la regola specificata.

SetAuditRuleProtection(Boolean, Boolean)

Imposta o rimuove la protezione delle regole di controllo associate a questo oggetto ObjectSecurity. Le regole di controllo protette non possono essere modificate da oggetti padre usando l'ereditarietà.

(Ereditato da ObjectSecurity)
SetGroup(IdentityReference)

Imposta il gruppo primario per il descrittore di sicurezza associato a questo oggetto ObjectSecurity.

(Ereditato da ObjectSecurity)
SetOwner(IdentityReference)

Imposta il proprietario per il descrittore di sicurezza associato all'oggetto ObjectSecurity.

(Ereditato da ObjectSecurity)
SetSecurityDescriptorBinaryForm(Byte[])

Imposta il descrittore di sicurezza per l'oggetto ObjectSecurity dalla matrice specificata di valori di byte.

(Ereditato da ObjectSecurity)
SetSecurityDescriptorBinaryForm(Byte[], AccessControlSections)

Imposta le sezioni specificate del descrittore di sicurezza per l'oggetto ObjectSecurity dalla matrice specificata di valori in byte.

(Ereditato da ObjectSecurity)
SetSecurityDescriptorSddlForm(String)

Imposta il descrittore di sicurezza per l'oggetto ObjectSecurity dalla stringa SDDL (Security Descriptor Definition Language) specificata.

(Ereditato da ObjectSecurity)
SetSecurityDescriptorSddlForm(String, AccessControlSections)

Imposta le sezioni specificate del descrittore di sicurezza per questo oggetto ObjectSecurity dalla stringa SDDL (Security Descriptor Definition Language) specificata.

(Ereditato da ObjectSecurity)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
WriteLock()

Blocca l'oggetto ObjectSecurity per l'accesso in scrittura.

(Ereditato da ObjectSecurity)
WriteUnlock()

Sblocca l'oggetto ObjectSecurity per l'accesso in scrittura.

(Ereditato da ObjectSecurity)

Si applica a