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 beim Hinzufügen und Entfernen zusammenführen und zweitens zeigt, wie Vererbungs- und Verbreitungsflaggen sich auf die Ergänzung und Löschung von Regeln auswirken.

Beispiel 1

Im folgenden Codebeispiel wird gezeigt, wie die Methode Rechte aus einer kompatiblen Regel entfernt und wie die RemoveAccessRule 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 ermöglicht. Im Beispiel wird dann eine Regel erstellt, die dem Benutzer RegistryRights.SetValuedie gleichen Vererbungs- und Verteilungsrechte als erste Regel gewährt und die RemoveAccessRule Methode verwendet, um diese neue Regel aus dem RegistrySecurity Objekt zu entfernen. SetValue ist ein Bestandteil von ReadKey, sodass es aus der kompatiblen Regel entfernt wird. Die Regeln im RegistrySecurity Objekt werden angezeigt, wobei die verbleibenden Bestandteile von ReadKey.

Der Beispielcode ruft dann die AddAccessRule Methode auf, um das SetValue Recht zurück 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, und 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 Verteilung veranschaulicht. Das Beispiel erstellt ein RegistrySecurity Objekt, erstellt dann zwei Regeln, die über das ContainerInherit Flag verfügen. Die erste Regel weist keine Verbreitungsflaggen auf, während der zweite NoPropagateInherit über und InheritOnly.

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 Grandchild-Unterschlüssel, 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 auch 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 über eine ermessensfähige Zugriffssteuerungsliste (DACL) verfügt, die den Zugriff auf das gesicherte Objekt steuert, und am meisten eine Systemzugriffssteuerungsliste (SACL), die angibt, welche Zugriffsversuche überwacht werden. Die DACL und SACL sind sortierte Listen von Zugriffssteuerungseinträgen (ACE), die Zugriff und Überwachung für Benutzer und Gruppen angeben. Ein RegistryAccessRule oder RegistryAuditRule Objekt kann mehrere ACE darstellen.

Hinweis

Windows Zugriffssteuerungssicherheit kann nur auf Registrierungsschlüssel angewendet werden. Es kann nicht auf einzelne Schlüssel-/Wertpaare angewendet werden, die in einem Schlüssel gespeichert sind.

RegistryAccessRuleDie RegistrySecurity, , und Klassen ausblenden die Implementierungsdetails von ACLs und RegistryAuditRule ACEs. Sie ermöglichen es Ihnen, die siebenzehn verschiedenen ACE-Typen und die Komplexität der ordnungsgemäßen Erhaltung von Vererbungs- und Verbreitungsrechten zu ignorieren. Diese Objekte sind auch so konzipiert, dass die folgenden allgemeinen Zugriffssteuerungsfehler verhindert werden:

  • Erstellen eines Sicherheitsdeskriptors mit einem NULL-DACL. Ein Nullverweis auf ein DACL ermöglicht jedem Benutzer das Hinzufügen von Zugriffsregeln zu einem Objekt, möglicherweise zum Erstellen eines Denial-of-Service-Angriffs. Ein neues RegistrySecurity Objekt beginnt immer mit einem leeren DACL, das allen Benutzern den Zugriff verweigert.

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

  • Bearbeiten von Sicherheitsdeskriptor-Flags, die nur unter Ressourcen-Manager-Kontrolle stehen sollen.

  • Erstellen ungültiger Kombinationen von ACE-Flags.

  • Bearbeiten geerbter ACEs. Vererbung und Verteilung werden vom Ressourcen-Manager behandelt, als Reaktion auf Änderungen, die Sie für den Zugriff und die Ü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 den meisten Anwendungsentwicklern vermieden werden sollten, z. B. folgendes:

  • Vorgänge mit niedriger Ebene, die normalerweise vom Ressourcen-Manager ausgeführt werden.

  • Hinzufügen oder Entfernen von Zugriffssteuerungseinträgen auf Arten, die die kanonische Reihenfolge nicht beibehalten.

Um Windows Zugriffssteuerungssicherheit für einen Registrierungsschlüssel zu ändern, verwenden Sie die RegistryKey.GetAccessControl Methode zum Abrufen des RegistrySecurity Objekts. Ändern Sie das Sicherheitsobjekt, indem Sie Regeln hinzufügen und entfernen, und verwenden Sie dann die RegistryKey.SetAccessControl Methode zum Erneuten Anfügen.

Wichtig

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

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

Benutzer mit einer Investition in die Sicherheitsdeskriptordefinitionssprache (SDDL) können die Methode verwenden, um Zugriffsregeln für einen Registrierungsschlüssel festzulegen, und die GetSecurityDescriptorSddlForm Methode zum Abrufen einer Zeichenfolge, die SetSecurityDescriptorSddlForm die Zugriffsregeln im SDDL-Format darstellt. Dies wird für neue Entwicklung 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