RegistrySecurity Classe

Definizione

Rappresenta la sicurezza del controllo di accesso 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

Questa sezione contiene due esempi di codice. Il primo esempio mostra come le regole compatibili si uniscono 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 il modo in cui 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 i componenti rimanenti di ReadKey.

Il codice di esempio chiama quindi il AddAccessRule metodo per unire nuovamente il SetValue diritto alla regola nell'oggetto RegistrySecurity .

Note

In questo esempio non viene associato l'oggetto di sicurezza a un RegistryKey oggetto . Il secondo esempio in questa sezione collega un oggetto di sicurezza e quindi 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 la seconda ha NoPropagateInherit e InheritOnly.

Il programma visualizza le regole nell'oggetto RegistrySecurity e quindi usa l'oggetto 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 sono 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 di Windows sottostante, 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.

Note

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 tutto l'accesso per tutti gli utenti.

  • Violazione dell'ordine canonico degli ACL. Se l'elenco ACE nell'elenco DACL non viene mantenuto nell'ordine canonico, agli utenti potrebbe inavvertitamente essere concesso l'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 da Resource Manager, in risposta alle modifiche apportate alle regole di accesso e controllo.

  • Inserimento di ACL senza significato negli 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 la sicurezza del controllo di accesso per una chiave del Registro di sistema, utilizzare il metodo RegistryKey.GetAccessControl per ottenere l'oggetto RegistrySecurity. Modificare l'oggetto di sicurezza aggiungendo e rimuovendo 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, utilizzare 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

Nome Descrizione
RegistrySecurity()

Inizializza una nuova istanza della RegistrySecurity classe con valori predefiniti.

Proprietà

Nome Descrizione
AccessRightType

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

AccessRulesModified

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

(Ereditato da ObjectSecurity)
AccessRuleType

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

AreAccessRulesCanonical

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

(Ereditato da ObjectSecurity)
AreAccessRulesProtected

Ottiene un valore booleano che specifica se l'elenco DACL (Discretionary Controllo di accesso List) associato a questo ObjectSecurity oggetto è protetto.

(Ereditato da ObjectSecurity)
AreAuditRulesCanonical

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

(Ereditato da ObjectSecurity)
AreAuditRulesProtected

Ottiene un valore booleano che specifica se l'elenco sacl (System Controllo di accesso List) associato a questo ObjectSecurity oggetto è protetto.

(Ereditato da ObjectSecurity)
AuditRulesModified

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

(Ereditato da ObjectSecurity)
AuditRuleType

Ottiene il tipo utilizzato dalla RegistrySecurity classe 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

Nome Descrizione
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 all'elenco DACL (Discretionary Controllo di accesso List) associato a questo CommonObjectSecurity oggetto.

(Ereditato da CommonObjectSecurity)
AddAccessRule(RegistryAccessRule)

Cerca un controllo di accesso corrispondente con cui è possibile unire la nuova regola. Se non viene trovato alcun elemento, aggiunge la nuova regola.

AddAuditRule(AuditRule)

Aggiunge la regola di controllo specificata all'elenco SACL (System Controllo di accesso List) associato a questo CommonObjectSecurity oggetto.

(Ereditato da CommonObjectSecurity)
AddAuditRule(RegistryAuditRule)

Cerca una regola di controllo con cui è possibile unire la nuova regola. Se non viene trovato alcun elemento, aggiunge la nuova regola.

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

Crea una nuova regola di controllo, specificando l'utente a cui si applica la regola, i diritti di accesso per il controllo, 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 una raccolta delle regole di accesso associate all'identificatore di sicurezza specificato.

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

Ottiene una raccolta delle regole di controllo 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 di byte che rappresenta le informazioni sul descrittore di sicurezza per questo ObjectSecurity oggetto.

(Ereditato da ObjectSecurity)
GetSecurityDescriptorSddlForm(AccessControlSections)

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

(Ereditato da ObjectSecurity)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

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

Applica la modifica specificata all'elenco DACL (Discretionary Controllo di accesso List) associato a questo CommonObjectSecurity oggetto.

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

Applica la modifica specificata all'elenco DACL (Discretionary Controllo di accesso List) associato a questo ObjectSecurity oggetto.

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

Applica la modifica specificata all'elenco SACL (System Controllo di accesso List) associato a questo CommonObjectSecurity oggetto.

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

Applica la modifica specificata all'elenco SACL (System Controllo di accesso List) associato a questo ObjectSecurity oggetto.

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

Salva le sezioni specificate del descrittore di sicurezza associato a questo ObjectSecurity oggetto in una risorsa di archiviazione permanente. È consigliabile che i valori dei includeSections parametri passati al costruttore e rendere persistenti i metodi siano identici.

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

Salva le sezioni specificate del descrittore di sicurezza associato a questo NativeObjectSecurity oggetto in una risorsa di archiviazione permanente. È consigliabile che i valori dei includeSections parametri passati al costruttore e rendere persistenti i metodi siano identici.

(Ereditato da NativeObjectSecurity)
Persist(SafeHandle, AccessControlSections)

Salva le sezioni specificate del descrittore di sicurezza associato a questo NativeObjectSecurity oggetto in una risorsa di archiviazione permanente. È consigliabile mantenere che i valori dei includeSections parametri passati al costruttore e rendere persistenti i metodi siano identici.

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

Salva le sezioni specificate del descrittore di sicurezza associato a questo NativeObjectSecurity oggetto in una risorsa di archiviazione permanente. È consigliabile che i valori dei includeSections parametri passati al costruttore e rendere persistenti i metodi siano identici.

(Ereditato da NativeObjectSecurity)
Persist(String, AccessControlSections)

Salva le sezioni specificate del descrittore di sicurezza associato a questo NativeObjectSecurity oggetto in una risorsa di archiviazione permanente. È consigliabile che i valori dei includeSections parametri passati al costruttore e rendere persistenti i metodi siano identici.

(Ereditato da NativeObjectSecurity)
PurgeAccessRules(IdentityReference)

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

(Ereditato da ObjectSecurity)
PurgeAuditRules(IdentityReference)

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

(Ereditato da ObjectSecurity)
ReadLock()

Blocca questo ObjectSecurity oggetto per l'accesso in lettura.

(Ereditato da ObjectSecurity)
ReadUnlock()

Sblocca questo ObjectSecurity oggetto per l'accesso in lettura.

(Ereditato da ObjectSecurity)
RemoveAccessRule(AccessRule)

Rimuove le regole di accesso che contengono lo stesso identificatore di sicurezza e la stessa maschera di accesso della regola di accesso specificata dall'elenco DACL (Discretionary Controllo di accesso List) associato a questo CommonObjectSecurity oggetto.

(Ereditato da CommonObjectSecurity)
RemoveAccessRule(RegistryAccessRule)

Cerca una regola di controllo di accesso con lo stesso utente e AccessControlType (consenti o nega) della regola di accesso specificata e con flag di ereditarietà e propagazione compatibili. Se tale regola viene trovata, i diritti contenuti nella regola di accesso specificata vengono rimossi da esso.

RemoveAccessRuleAll(AccessRule)

Rimuove tutte le regole di accesso con lo stesso identificatore di sicurezza della regola di accesso specificata dall'elenco DACL (Discretionary Controllo di accesso List) associato a questo CommonObjectSecurity oggetto.

(Ereditato da CommonObjectSecurity)
RemoveAccessRuleAll(RegistryAccessRule)

Cerca tutte le regole di controllo di accesso con lo stesso utente e AccessControlType (consenti o nega) della regola specificata e, se trovato, le rimuove.

RemoveAccessRuleSpecific(AccessRule)

Rimuove tutte le regole di accesso che corrispondono esattamente alla regola di accesso specificata dall'elenco DACL (Discretionary Controllo di accesso List) associato a questo CommonObjectSecurity oggetto.

(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 identificatore di sicurezza e la stessa maschera di accesso della regola di controllo specificata dall'elenco SACL (System Controllo di accesso List) associato a questo CommonObjectSecurity oggetto.

(Ereditato da CommonObjectSecurity)
RemoveAuditRule(RegistryAuditRule)

Cerca una regola di controllo con lo stesso utente della regola specificata e con flag di ereditarietà e propagazione compatibili; se viene trovata una regola compatibile, i diritti contenuti nella regola specificata vengono rimossi.

RemoveAuditRuleAll(AuditRule)

Rimuove tutte le regole di controllo con lo stesso identificatore di sicurezza della regola di controllo specificata dall'elenco SACL (System Controllo di accesso List) associato a questo CommonObjectSecurity oggetto.

(Ereditato da CommonObjectSecurity)
RemoveAuditRuleAll(RegistryAuditRule)

Cerca tutte le regole di controllo con lo stesso utente della regola specificata e, se trovato, le rimuove.

RemoveAuditRuleSpecific(AuditRule)

Rimuove tutte le regole di controllo che corrispondono esattamente alla regola di controllo specificata dall'elenco SACL (System Controllo di accesso List) associato a questo CommonObjectSecurity oggetto.

(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 nell'elenco DACL (Discretionary Controllo di accesso List) associato a questo CommonObjectSecurity oggetto e quindi aggiunge la regola di accesso specificata.

(Ereditato da CommonObjectSecurity)
ResetAccessRule(RegistryAccessRule)

Rimuove tutte le regole di controllo di AccessControlTypeaccesso con lo stesso utente della regola specificata, indipendentemente da e quindi aggiunge la regola specificata.

SetAccessRule(AccessRule)

Rimuove tutte le regole di accesso che contengono lo stesso identificatore di sicurezza e qualificatore della regola di accesso specificata nell'elenco DACL (Discretionary Controllo di accesso List) associato a questo CommonObjectSecurity oggetto e quindi aggiunge la regola di accesso specificata.

(Ereditato da CommonObjectSecurity)
SetAccessRule(RegistryAccessRule)

Rimuove tutte le regole di controllo di accesso con lo stesso utente e AccessControlType (consenti o nega) della regola specificata e quindi aggiunge la regola specificata.

SetAccessRuleProtection(Boolean, Boolean)

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

(Ereditato da ObjectSecurity)
SetAuditRule(AuditRule)

Rimuove tutte le regole di controllo che contengono lo stesso identificatore di sicurezza e qualificatore della regola di controllo specificata nell'elenco SACL (System Controllo di accesso List) associato a questo CommonObjectSecurity oggetto e quindi aggiunge la regola di controllo specificata.

(Ereditato da CommonObjectSecurity)
SetAuditRule(RegistryAuditRule)

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

SetAuditRuleProtection(Boolean, Boolean)

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

(Ereditato da ObjectSecurity)
SetGroup(IdentityReference)

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

(Ereditato da ObjectSecurity)
SetOwner(IdentityReference)

Imposta il proprietario del descrittore di sicurezza associato a questo ObjectSecurity oggetto.

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

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

(Ereditato da ObjectSecurity)
SetSecurityDescriptorBinaryForm(Byte[])

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

(Ereditato da ObjectSecurity)
SetSecurityDescriptorSddlForm(String, AccessControlSections)

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

(Ereditato da ObjectSecurity)
SetSecurityDescriptorSddlForm(String)

Imposta il descrittore di sicurezza per questo ObjectSecurity oggetto 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 questo ObjectSecurity oggetto per l'accesso in scrittura.

(Ereditato da ObjectSecurity)
WriteUnlock()

Sblocca questo ObjectSecurity oggetto per l'accesso in scrittura.

(Ereditato da ObjectSecurity)

Si applica a