Share via


RegistrySecurity Klasse

Definition

Stellt die Windows-Zugriffssteuerungssicherheit für einen Registrierungsschlüssel dar. Diese Klasse kann nicht vererbt werden.

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
Vererbung
Attribute

Beispiele

Dieser Abschnitt enthält zwei Codebeispiele. Das erste Beispiel zeigt, wie kompatible Regeln zusammengeführt werden, wenn sie hinzugefügt und entfernt werden, und das zweite zeigt, wie Vererbungs- und Weitergabeflags sich auf das Hinzufügen und Löschen von Regeln auswirken.

Beispiel 1

Das folgende Codebeispiel zeigt, wie die RemoveAccessRule -Methode Rechte aus einer kompatiblen Regel entfernt und wie die AddAccessRule Methode Rechte mit kompatiblen Regeln zusammenführt.

Im Beispiel wird ein RegistrySecurity -Objekt erstellt und eine Regel hinzugefügt, die die aktuellen Benutzerrechte RegistryRights.ReadKey zulässt. Im Beispiel wird dann eine Regel erstellt, die dem Benutzer RegistryRights.SetValuedie gleichen Vererbungs- und Weitergaberechte wie die erste Regel gewährt, und verwendet die RemoveAccessRule -Methode, um diese neue Regel aus dem RegistrySecurity -Objekt zu entfernen. SetValue ist ein Bestandteil von ReadKey, sodass er aus der kompatiblen Regel entfernt wird. Die Regeln im RegistrySecurity -Objekt werden mit den verbleibenden Bestandteilen von ReadKeyangezeigt.

Der Beispielcode ruft dann die AddAccessRule -Methode auf, um das SetValue Recht wieder in die Regel im RegistrySecurity -Objekt zusammenzuführen.

Hinweis

In diesem Beispiel wird das Sicherheitsobjekt nicht an ein RegistryKey -Objekt angefügt. Im zweiten Beispiel in diesem Abschnitt wird ein Sicherheitsobjekt angefügt, ebenso die Beispiele in RegistryKey.GetAccessControl und 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
'

Beispiel 2

Im folgenden Codebeispiel werden Zugriffsregeln mit Vererbung und Weitergabe veranschaulicht. Im Beispiel wird ein RegistrySecurity -Objekt erstellt und dann zwei Regeln mit dem ContainerInherit Flag erstellt und hinzugefügt. Die erste Regel verfügt über keine Weitergabeflags, während die zweite über und InheritOnlyverfügtNoPropagateInherit.

Das Programm zeigt die Regeln im RegistrySecurity -Objekt an und verwendet dann das RegistrySecurity -Objekt, um einen Unterschlüssel zu erstellen. Das Programm erstellt einen untergeordneten Unterschlüssel und einen Enkelunterschlüssel und zeigt dann die Sicherheit für jeden Unterschlüssel an. Schließlich löscht das Programm die Testschlüssel.


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

Hinweise

Ein RegistrySecurity -Objekt gibt Zugriffsrechte für einen Registrierungsschlüssel an und gibt außerdem an, wie Zugriffsversuche überwacht werden. Zugriffsrechte für den Registrierungsschlüssel werden als Regeln ausgedrückt, wobei jede Zugriffsregel durch ein RegistryAccessRule -Objekt dargestellt wird. Jede Überwachungsregel wird durch ein RegistryAuditRule -Objekt dargestellt.

Dies spiegelt das zugrunde liegende Windows-Sicherheitssystem wider, in dem jedes sicherungsfähige Objekt höchstens über eine daCL (Discretionary Access Control List) verfügt, die den Zugriff auf das gesicherte Objekt steuert, und höchstens eine SACL (System Access Control List), die angibt, welche Zugriffsversuche überwacht werden. Die DACL und SACL sind geordnete Listen von Zugriffssteuerungseinträgen (ACCESS Control Entries, ACE), die den Zugriff und die Überwachung für Benutzer und Gruppen angeben. Ein RegistryAccessRule - oder RegistryAuditRule -Objekt kann mehrere ACE-Objekte darstellen.

Hinweis

Die Sicherheit der Windows-Zugriffssteuerung kann nur auf Registrierungsschlüssel angewendet werden. Sie kann nicht auf einzelne Schlüssel-Wert-Paare angewendet werden, die in einem Schlüssel gespeichert sind.

Die RegistrySecurityKlassen , RegistryAccessRuleund RegistryAuditRule blenden die Implementierungsdetails von ACLs und ACEs aus. Sie ermöglichen es Ihnen, die siebzehn verschiedenen ACE-Typen und die Komplexität der ordnungsgemäßen Aufrechterhaltung der Vererbung und Weitergabe von Zugriffsrechten zu ignorieren. Diese Objekte wurden auch entwickelt, um die folgenden häufigen Zugriffssteuerungsfehler zu verhindern:

  • Erstellen eines Sicherheitsdeskriptors mit einer NULL-DACL. Ein NULL-Verweis auf eine DACL ermöglicht jedem Benutzer das Hinzufügen von Zugriffsregeln zu einem Objekt, wodurch möglicherweise ein Denial-of-Service-Angriff entsteht. Ein neues RegistrySecurity Objekt beginnt immer mit einer leeren DACL, die allen Zugriff für alle Benutzer verweigert.

  • Verstoß gegen die kanonische Reihenfolge von ACEs. Wenn die ACE-Liste in der DACL nicht in der kanonischen Reihenfolge aufbewahrt wird, erhalten Benutzer möglicherweise versehentlich Zugriff auf das gesicherte Objekt. Beispielsweise müssen verweigerte Zugriffsrechte immer vor den zulässigen Zugriffsrechten angezeigt werden. RegistrySecurity -Objekte behalten intern die richtige Reihenfolge bei.

  • Bearbeiten von Sicherheitsbeschreibungsflags, die sich nur unter Resource Manager-Kontrolle befinden sollten.

  • Erstellen ungültiger Kombinationen von ACE-Flags.

  • Bearbeiten geerbter ACEs. Vererbung und Weitergabe werden vom Ressourcen-Manager als Reaktion auf Änderungen verarbeitet, die Sie an Zugriffs- und Überwachungsregeln vornehmen.

  • Einfügen von bedeutungslosen ACEs in ACLs.

Die einzigen Funktionen, die von den .NET-Sicherheitsobjekten nicht unterstützt werden, sind gefährliche Aktivitäten, die von der Mehrheit der Anwendungsentwickler vermieden werden sollten, z. B. die folgenden:

  • Aufgaben auf niedriger Ebene, die normalerweise vom Ressourcen-Manager ausgeführt werden.

  • Hinzufügen oder Entfernen von Zugriffssteuerungseinträgen auf eine Weise, die die kanonische Reihenfolge nicht aufrechterhalten.

Verwenden Sie zum Ändern der Windows-Zugriffssteuerungssicherheit für einen Registrierungsschlüssel die RegistryKey.GetAccessControl -Methode, um das RegistrySecurity -Objekt abzurufen. Ändern Sie das Sicherheitsobjekt, indem Sie Regeln hinzufügen und entfernen, und verwenden Sie dann die RegistryKey.SetAccessControl -Methode, um es erneut anzufügen.

Wichtig

Änderungen, die Sie an einem RegistrySecurity Objekt vornehmen, wirken sich erst auf die Zugriffsebenen des Registrierungsschlüssels aus, wenn Sie die RegistryKey.SetAccessControl -Methode aufrufen, um dem Registrierungsschlüssel das geänderte Sicherheitsobjekt zuzuweisen.

Verwenden Sie zum Kopieren der Zugriffssteuerungssicherheit von einem Registrierungsschlüssel in einen anderen die RegistryKey.GetAccessControl -Methode, um ein RegistrySecurity Objekt abzurufen, das die Zugriffs- und Überwachungsregeln für den ersten Registrierungsschlüssel darstellt, und verwenden Sie dann die RegistryKey.SetAccessControl -Methode, um diese Regeln dem zweiten Registrierungsschlüssel zuzuweisen. Sie können die Regeln auch einem zweiten Registrierungsschlüssel mit einer -Methode oder RegistryKey.CreateSubKey -RegistryKey.OpenSubKeyMethode zuweisen, die einen RegistrySecurity Objektparameter akzeptiert.

Benutzer mit einer Investition in die Sicherheitsbeschreibungsdefinitionssprache (Security Descriptor Definition Language, SDDL) können die SetSecurityDescriptorSddlForm -Methode verwenden, um Zugriffsregeln für einen Registrierungsschlüssel festzulegen, und die GetSecurityDescriptorSddlForm -Methode, um eine Zeichenfolge abzurufen, die die Zugriffsregeln im SDDL-Format darstellt. Dies wird für die Neuentwicklung nicht empfohlen.

Konstruktoren

RegistrySecurity()

Initialisiert eine neue Instanz der RegistrySecurity-Klasse mit Standardwerten.

Eigenschaften

AccessRightType

Ruft den Enumerationstyp ab, mit dessen Hilfe die RegistrySecurity-Klasse Zugriffsrechte darstellt.

AccessRulesModified

Dient zum Abrufen oder Festlegen eines booleschen Werts, der angibt, ob die Zugriffsregeln, die diesem ObjectSecurity-Objekt zugeordnet sind, geändert wurden.

(Geerbt von ObjectSecurity)
AccessRuleType

Ruft den Typ ab, mit dessen Hilfe die RegistrySecurity-Klasse die Zugriffsregeln darstellt.

AreAccessRulesCanonical

Ruft einen booleschen Wert ab, der angibt, ob sich die Zugriffsregeln, die diesem ObjectSecurity-Objekt zugeordnet sind, in kanonischer Reihenfolge befinden.

(Geerbt von ObjectSecurity)
AreAccessRulesProtected

Ruft einen booleschen Wert ab, der angibt, ob die freigegebene Zugriffssteuerungsliste (Discretionary Access Control List, DACL), die diesem ObjectSecurity-Objekt zugeordnet ist, geschützt ist.

(Geerbt von ObjectSecurity)
AreAuditRulesCanonical

Ruft einen booleschen Wert ab, der angibt, ob sich die Überwachungsregeln, die diesem ObjectSecurity-Objekt zugeordnet sind, in kanonischer Reihenfolge befinden.

(Geerbt von ObjectSecurity)
AreAuditRulesProtected

Ruft einen booleschen Wert ab, der angibt, ob die Systemzugriffssteuerungsliste (System Access Control List, SACL), die diesem ObjectSecurity-Objekt zugeordnet ist, geschützt ist.

(Geerbt von ObjectSecurity)
AuditRulesModified

Dient zum Abrufen oder Festlegen eines booleschen Werts, der angibt, ob sich die Überwachungsregeln, die diesem ObjectSecurity-Objekt zugeordnet sind, geändert wurden.

(Geerbt von ObjectSecurity)
AuditRuleType

Ruft den Typ ab, mit dessen Hilfe die RegistrySecurity-Klasse Überwachungsregeln darstellt.

GroupModified

Ruft einen booleschen Wert ab, der angibt, ob die Gruppe, die dem sicherungsfähigen Objekt zugeordnet ist, geändert wurde, oder legt diesen booleschen Wert fest.

(Geerbt von ObjectSecurity)
IsContainer

Ruft einen booleschen Wert ab, der angibt, ob das ObjectSecurity-Objekt ein Containerobjekt ist.

(Geerbt von ObjectSecurity)
IsDS

Ruft einen booleschen Wert ab, der angibt, ob das ObjectSecurity-Objekt ein Verzeichnisobjekt ist.

(Geerbt von ObjectSecurity)
OwnerModified

Ruft einen booleschen Wert ab, der angibt, ob der Besitzer des sicherungsfähigen Objekts geändert wurde, oder legt diesen booleschen Wert fest.

(Geerbt von ObjectSecurity)
SecurityDescriptor

Ruft die Sicherheitsbeschreibung für diese Instanz ab

(Geerbt von ObjectSecurity)

Methoden

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

Erstellt eine neue Zugriffssteuerungsregel für den angegebenen Benutzer mit den angegebenen Zugriffsrechten und Flags sowie der angegebenen Zugriffssteuerung.

AddAccessRule(AccessRule)

Fügt der freigegebenen Zugriffssteuerungsliste (DACL – Discretionary Access Control List), die diesem CommonObjectSecurity-Objekt zugeordnet ist, die angegebene Zugriffsregel hinzu.

(Geerbt von CommonObjectSecurity)
AddAccessRule(RegistryAccessRule)

Sucht nach einer übereinstimmenden Zugriffssteuerung, mit der die neue Regel zusammengeführt werden kann. Wenn keine Regel gefunden wurde, wird die neue Regel hinzugefügt.

AddAuditRule(AuditRule)

Fügt der Systemzugriffssteuerungsliste (SACL – System Access Control List), die diesem CommonObjectSecurity-Objekt zugeordnet ist, die angegebene Überwachungsregel hinzu.

(Geerbt von CommonObjectSecurity)
AddAuditRule(RegistryAuditRule)

Sucht nach einer Überwachungsregel, mit der die neue Regel zusammengeführt werden kann. Wenn keine Regel gefunden wurde, wird die neue Regel hinzugefügt.

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

Erstellt eine neue Überwachungsregel, die den Benutzer angibt, auf den diese Regel angewendet wird, sowie die zu überwachenden Zugriffsrechte, die Vererbung und Weitergabe der Regel und das Ergebnis, das die Überwachungsregel auslöst.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetAccessRules(Boolean, Boolean, Type)

Ruft eine Auflistung der Zugriffsregeln ab, die der angegebenen Sicherheits-ID zugeordnet sind.

(Geerbt von CommonObjectSecurity)
GetAuditRules(Boolean, Boolean, Type)

Ruft eine Auflistung der Überwachungsregeln ab, die der angegebenen Sicherheits-ID zugeordnet sind.

(Geerbt von CommonObjectSecurity)
GetGroup(Type)

Ruft die dem angegebenen Besitzer zugeordnete primäre Gruppe ab.

(Geerbt von ObjectSecurity)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetOwner(Type)

Ruft den der angegebenen primären Gruppe zugeordneten Besitzer ab.

(Geerbt von ObjectSecurity)
GetSecurityDescriptorBinaryForm()

Gibt ein Array von Bytewerten zurück, das die Sicherheitsbeschreibungsinformationen für dieses ObjectSecurity-Objekt darstellt.

(Geerbt von ObjectSecurity)
GetSecurityDescriptorSddlForm(AccessControlSections)

Gibt die SDDL-Darstellung (Security Descriptor Definition Language) der angegebenen Abschnitte der diesem ObjectSecurity-Objekt zugeordneten Sicherheitsbeschreibung zurück.

(Geerbt von ObjectSecurity)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ModifyAccess(AccessControlModification, AccessRule, Boolean)

Wendet die angegebene Änderung auf die freigegebene Zugriffssteuerungsliste (Discretionary Access Control List, DACL) an, die diesem CommonObjectSecurity-Objekt zugeordnet ist.

(Geerbt von CommonObjectSecurity)
ModifyAccessRule(AccessControlModification, AccessRule, Boolean)

Wendet die angegebene Änderung auf die freigegebene Zugriffssteuerungsliste (Discretionary Access Control List, DACL) an, die diesem ObjectSecurity-Objekt zugeordnet ist.

(Geerbt von ObjectSecurity)
ModifyAudit(AccessControlModification, AuditRule, Boolean)

Wendet die angegebene Änderung auf die System-Zugriffssteuerungsliste (System Access Control List, SACL) an, die diesem CommonObjectSecurity-Objekt zugeordnet ist.

(Geerbt von CommonObjectSecurity)
ModifyAuditRule(AccessControlModification, AuditRule, Boolean)

Wendet die angegebene Änderung auf die System-Zugriffssteuerungsliste (System Access Control List, SACL) an, die diesem ObjectSecurity-Objekt zugeordnet ist.

(Geerbt von ObjectSecurity)
Persist(Boolean, String, AccessControlSections)

Speichert die angegebenen Abschnitte der diesem ObjectSecurity-Objekt zugeordneten Sicherheitsbeschreibung im dauerhaften Speicher. Die Werte der includeSections-Parameter, die an die Konstruktor- und die Persist-Methoden übergeben werden, sollten identisch sein.

(Geerbt von ObjectSecurity)
Persist(SafeHandle, AccessControlSections)

Speichert die angegebenen Abschnitte der diesem NativeObjectSecurity-Objekt zugeordneten Sicherheitsbeschreibung im dauerhaften Speicher. Die Werte der includeSections-Parameter, die an die Konstruktor- und die Persist-Methoden übergeben werden, sollten identisch sein.

(Geerbt von NativeObjectSecurity)
Persist(SafeHandle, AccessControlSections, Object)

Speichert die angegebenen Abschnitte der diesem NativeObjectSecurity-Objekt zugeordneten Sicherheitsbeschreibung im dauerhaften Speicher. Die Werte der includeSections-Parameter, die an die Konstruktor- und die Persist-Methoden übergeben werden, sollten identisch sein.

(Geerbt von NativeObjectSecurity)
Persist(String, AccessControlSections)

Speichert die angegebenen Abschnitte der diesem NativeObjectSecurity-Objekt zugeordneten Sicherheitsbeschreibung im dauerhaften Speicher. Die Werte der includeSections-Parameter, die an die Konstruktor- und die Persist-Methoden übergeben werden, sollten identisch sein.

(Geerbt von NativeObjectSecurity)
Persist(String, AccessControlSections, Object)

Speichert die angegebenen Abschnitte der diesem NativeObjectSecurity-Objekt zugeordneten Sicherheitsbeschreibung im dauerhaften Speicher. Die Werte der includeSections-Parameter, die an die Konstruktor- und die Persist-Methoden übergeben werden, sollten identisch sein.

(Geerbt von NativeObjectSecurity)
PurgeAccessRules(IdentityReference)

Entfernt alle Zugriffsregeln, die dem angegebenen IdentityReference zugeordnet sind.

(Geerbt von ObjectSecurity)
PurgeAuditRules(IdentityReference)

Entfernt alle Überwachungsregeln, die dem angegebenen IdentityReference zugeordnet sind.

(Geerbt von ObjectSecurity)
ReadLock()

Sperrt dieses ObjectSecurity-Objekt für den Lesezugriff.

(Geerbt von ObjectSecurity)
ReadUnlock()

Entsperrt dieses ObjectSecurity-Objekt für den Lesezugriff.

(Geerbt von ObjectSecurity)
RemoveAccessRule(AccessRule)

Entfernt Zugriffsregeln, die dieselbe Sicherheits-ID und dieselbe Zugriffsmaske wie die angegebene Zugriffsregel enthalten, aus der DACL, die diesem CommonObjectSecurity-Objekt zugeordnet ist.

(Geerbt von CommonObjectSecurity)
RemoveAccessRule(RegistryAccessRule)

Sucht nach einer Zugriffssteuerungsregel mit demselben Benutzer und demselben AccessControlType (gewähren oder verweigern) wie die angegebene Zugriffsregel sowie mit kompatiblen Vererbungs- und Weitergabeflags. Wenn eine solche Regel gefunden wird, werden die in der angegebenen Zugriffsregel enthaltenen Rechte daraus entfernt.

RemoveAccessRuleAll(AccessRule)

Entfernt alle Zugriffsregeln, die dieselbe Sicherheits-ID enthalten wie die angegebene Zugriffsregel aus der DACL, die diesem CommonObjectSecurity-Objekt zugeordnet ist.

(Geerbt von CommonObjectSecurity)
RemoveAccessRuleAll(RegistryAccessRule)

Sucht nach allen Zugriffssteuerungsregeln mit demselben Benutzer und demselben AccessControlType (gewähren oder verweigern) wie die angegebene Regel und entfernt diese (falls vorhanden).

RemoveAccessRuleSpecific(AccessRule)

Entfernt alle Zugriffsregeln, die eine genaue Entsprechung zu der angegebenen Zugriffsregel aus der DACL (Discretionary Access Control List, freigegebene Zugriffssteuerungsliste) bilden, die diesem CommonObjectSecurity-Objekt zugeordnet ist.

(Geerbt von CommonObjectSecurity)
RemoveAccessRuleSpecific(RegistryAccessRule)

Sucht nach einer Zugriffssteuerungsregel, die genau mit der angegebenen Regel übereinstimmt, und entfernt diese (falls vorhanden).

RemoveAuditRule(AuditRule)

Entfernt Überwachungsregeln, die dieselbe Sicherheits-ID und Zugriffsmaske enthalten wie die angegebene Überwachungsregel aus der SACL, die diesem CommonObjectSecurity-Objekt zugeordnet ist.

(Geerbt von CommonObjectSecurity)
RemoveAuditRule(RegistryAuditRule)

Sucht nach einer Überwachungssteuerungsregel mit demselben Benutzer wie die angegebene Regel und mit kompatiblen Vererbungs- und Weitergabeflags; wenn eine solche Regel gefunden wird, werden die in der angegebenen Regel enthaltenen Rechte daraus entfernt.

RemoveAuditRuleAll(AuditRule)

Entfernt alle Überwachungsregeln, die dieselbe Sicherheits-ID wie die angegebene Überwachungsregel aus der SACL enthalten, die diesem CommonObjectSecurity-Objekt zugeordnet ist.

(Geerbt von CommonObjectSecurity)
RemoveAuditRuleAll(RegistryAuditRule)

Sucht alle Überwachungsregeln, die denselben Benutzer wie die angegebene Regel aufweisen, und entfernt sie, sofern sie gefunden wurden.

RemoveAuditRuleSpecific(AuditRule)

Entfernt alle Überwachungsregeln, die der angegebenen Überwachungsregel genau entsprechen, aus der SACL, die diesem CommonObjectSecurity-Objekt zugeordnet ist.

(Geerbt von CommonObjectSecurity)
RemoveAuditRuleSpecific(RegistryAuditRule)

Sucht nach einer Überwachungsregel, die genau mit der angegebenen Regel übereinstimmt, und entfernt diese (falls vorhanden).

ResetAccessRule(AccessRule)

Entfernt alle Zugriffsregeln in der DACL, die diesem CommonObjectSecurity-Objekt zugeordnet ist, und fügt anschließend die angegebene Zugriffsregel hinzu.

(Geerbt von CommonObjectSecurity)
ResetAccessRule(RegistryAccessRule)

Entfernt alle Zugriffssteuerungsregeln mit demselben Benutzer wie in der angegebenen Regel, unabhängig von AccessControlType, und fügt anschließend die angegebene Regel hinzu.

SetAccessRule(AccessRule)

Entfernt alle Zugriffsregeln, die dieselbe Sicherheits-ID und denselben Qualifizierer wie die angegebene Zugriffsregel in der DACL enthalten, die diesem CommonObjectSecurity-Objekt zugeordnet ist, und fügt anschließend die angegebene Zugriffsregel hinzu.

(Geerbt von CommonObjectSecurity)
SetAccessRule(RegistryAccessRule)

Entfernt alle Zugriffssteuerungsregeln mit demselben Benutzer und demselben AccessControlType (gewähren oder verweigern) wie die angegebene Regel und fügt anschließend die angegebene Regel hinzu.

SetAccessRuleProtection(Boolean, Boolean)

Legt den Schutz der Zugriffsregeln fest, die diesem ObjectSecurity-Objekt zugeordnet sind, oder entfernt diesen Schutz. Geschützte Zugriffsregeln können von übergeordneten Objekten nicht durch Vererbung geändert werden.

(Geerbt von ObjectSecurity)
SetAuditRule(AuditRule)

Entfernt alle Überwachungsregeln, die dieselbe Sicherheits-ID und denselben Qualifizierer enthalten wie die angegebene Überwachungsregel in der SACL, die diesem CommonObjectSecurity-Objekt zugeordnet ist, und fügt anschließend die angegebene Zugriffsregel hinzu.

(Geerbt von CommonObjectSecurity)
SetAuditRule(RegistryAuditRule)

Entfernt alle Überwachungsregeln mit demselben Benutzer wie in der angegebenen Regel, unabhängig vom AuditFlags-Wert, und fügt danach die angegebene Regel hinzu.

SetAuditRuleProtection(Boolean, Boolean)

Legt den Schutz der Überwachungsregeln fest, die diesem ObjectSecurity-Objekt zugeordnet sind, oder entfernt diesen Schutz. Geschützte Überwachungsregeln können von übergeordneten Objekten nicht durch Vererbung geändert werden.

(Geerbt von ObjectSecurity)
SetGroup(IdentityReference)

Legt die primäre Gruppe für die Sicherheitsbeschreibung fest, die diesem ObjectSecurity-Objekt zugeordnet ist.

(Geerbt von ObjectSecurity)
SetOwner(IdentityReference)

Legt den Besitzer der Sicherheitsbeschreibung fest, die diesem ObjectSecurity-Objekt zugeordnet ist.

(Geerbt von ObjectSecurity)
SetSecurityDescriptorBinaryForm(Byte[])

Legt die Sicherheitsbeschreibung für dieses ObjectSecurity-Objekt aus dem angegebenen Array von Bytewerten fest.

(Geerbt von ObjectSecurity)
SetSecurityDescriptorBinaryForm(Byte[], AccessControlSections)

Legt die angegebenen Abschnitte der Sicherheitsbeschreibung für dieses ObjectSecurity-Objekt aus dem angegebenen Array von Bytewerten fest.

(Geerbt von ObjectSecurity)
SetSecurityDescriptorSddlForm(String)

Legt die Sicherheitsbeschreibung für dieses ObjectSecurity-Objekt aus der angegebenen SDDL-Zeichenfolge (Security Descriptor Definition Language) fest.

(Geerbt von ObjectSecurity)
SetSecurityDescriptorSddlForm(String, AccessControlSections)

Legt die angegebenen Abschnitte der Sicherheitsbeschreibung für dieses ObjectSecurity-Objekt aus der angegebenen SDDL-Zeichenfolge (Security Descriptor Definition Language) fest.

(Geerbt von ObjectSecurity)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
WriteLock()

Sperrt dieses ObjectSecurity-Objekt für den Schreibzugriff.

(Geerbt von ObjectSecurity)
WriteUnlock()

Entsperrt dieses ObjectSecurity-Objekt für den Schreibzugriff.

(Geerbt von ObjectSecurity)

Gilt für: