Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

RegistryAccessRule-Klasse

 

Veröffentlicht: Oktober 2016

Stellt einen Satz von Zugriffsrechten gewährt oder verweigert, die für einen Benutzer oder eine Gruppe. Diese Klasse kann nicht vererbt werden.

Namespace:   System.Security.AccessControl
Assembly:  mscorlib (in mscorlib.dll)

System.Object
  System.Security.AccessControl.AuthorizationRule
    System.Security.AccessControl.AccessRule
      System.Security.AccessControl.RegistryAccessRule

public sealed class RegistryAccessRule : AccessRule

NameBeschreibung
System_CAPS_pubmethodRegistryAccessRule(IdentityReference, RegistryRights, AccessControlType)

Initialisiert eine neue Instanz der RegistryAccessRule -Klasse und gibt den Benutzer oder die Gruppe, die die Regel für die Zugriffsrechte gilt und gibt an, ob die angegebenen Zugriffsrechte gewährt oder verweigert werden.

System_CAPS_pubmethodRegistryAccessRule(IdentityReference, RegistryRights, InheritanceFlags, PropagationFlags, AccessControlType)

Initialisiert eine neue Instanz der RegistryAccessRule -Klasse, Benutzer oder Gruppe, die die Regel für die Zugriffsrechte, die Vererbungsflags und gilt die Weitergabe flags und gibt an, ob die angegebenen Zugriffsrechte gewährt oder verweigert werden.

System_CAPS_pubmethodRegistryAccessRule(String, RegistryRights, AccessControlType)

Initialisiert eine neue Instanz der RegistryAccessRule -Klasse und gibt den Namen des Benutzers oder der Gruppe, die die Regel für die Zugriffsrechte gilt und gibt an, ob die angegebenen Zugriffsrechte gewährt oder verweigert werden.

System_CAPS_pubmethodRegistryAccessRule(String, RegistryRights, InheritanceFlags, PropagationFlags, AccessControlType)

Initialisiert eine neue Instanz der RegistryAccessRule -Klasse gibt den Namen des Benutzers oder der Gruppe, die die Regel für die Zugriffsrechte, die Vererbungsflags und gilt die Weitergabe flags und gibt an, ob die angegebenen Zugriffsrechte gewährt oder verweigert werden.

NameBeschreibung
System_CAPS_pubpropertyAccessControlType

Ruft die AccessControlType zugeordneten Wert AccessRule Objekt.(Geerbt von „AccessRule“.)

System_CAPS_protpropertyAccessMask

Ruft die Zugriffsmaske für diese Regel ab.(Geerbt von „AuthorizationRule“.)

System_CAPS_pubpropertyIdentityReference

Ruft den IdentityReference ab, für den diese Regel gilt.(Geerbt von „AuthorizationRule“.)

System_CAPS_pubpropertyInheritanceFlags

Ruft den Wert von Flags ab, die bestimmen, wie diese Regel von untergeordneten Objekten geerbt wird.(Geerbt von „AuthorizationRule“.)

System_CAPS_pubpropertyIsInherited

Ruft einen Wert ab, der angibt, ob diese Regel explizit festgelegt oder von einem übergeordneten Containerobjekt geerbt wird.(Geerbt von „AuthorizationRule“.)

System_CAPS_pubpropertyPropagationFlags

Ruft den Wert der Weitergabeflags ab, die bestimmen, wie die Vererbung dieser Regel an untergeordnete Objekte weitergegeben wird. Diese Eigenschaft ist nur dann wesentlich, wenn der Wert der InheritanceFlags-Enumeration nicht None ist.(Geerbt von „AuthorizationRule“.)

System_CAPS_pubpropertyRegistryRights

Ruft die Rechte gewährt oder verweigert, durch die Regel ab.

NameBeschreibung
System_CAPS_pubmethodEquals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.(Geerbt von „Object“.)

System_CAPS_pubmethodGetHashCode()

Fungiert als die Standardhashfunktion.(Geerbt von „Object“.)

System_CAPS_pubmethodGetType()

Ruft den Type der aktuellen Instanz ab.(Geerbt von „Object“.)

System_CAPS_pubmethodToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.(Geerbt von „Object“.)

Die RegistryAccessRule Klasse ist eine von einer Reihe von Klassen, die .NET Framework bietet für die Verwaltung von Windows-zugriffssteuerungssicherheit für Registrierungsschlüssel. Eine Übersicht über diese Klassen und ihre Beziehung zu den zugrunde liegenden Windows Zugriffssteuerungsstrukturen, finden Sie unter RegistrySecurity.

System_CAPS_noteHinweis

Windows-zugriffssteuerungssicherheit kann nur auf Registrierungsschlüssel angewendet werden. Es kann nicht auf einzelne Schlüssel-Wert-Paaren, die in einem Schlüssel gespeicherte angewendet werden.

Verwenden Sie zum Abrufen einer Liste der derzeit auf einen Registrierungsschlüssel angewendeten Regeln die RegistryKey.GetAccessControl Methode zum Abrufen einer RegistrySecurity Objekt, und verwenden Sie dann seine GetAccessRules Methode zum Abrufen einer Auflistung von RegistryAccessRule Objekte.

RegistryAccessRule Objekte werden nicht mit Zugriffssteuerungseinträgen in der zugrunde liegenden discretionary Access Steuerungsliste (DACL) eins zu eins zugeordnet. Wenn Sie den Satz von alle Zugriffsregeln für einen Registrierungsschlüssel erhalten, enthält der Satz die minimale Anzahl von Regeln, die derzeit zur Beschreibung aller Zugriffssteuerungseinträge erforderlich.

System_CAPS_noteHinweis

Die zugrunde liegenden Zugriffssteuerungseinträge ändern, da Sie Regeln anwenden oder entfernen. Die Informationen in Regeln wird wenn möglich, zusammengeführt, um die kleinste Anzahl von Einträgen zu gewährleisten. Folglich beim Lesen der aktuellen Liste der Regeln kann es nicht genau wie die Liste aller Regeln aussieht, die Sie hinzugefügt haben.

Verwendung RegistryAccessRule Objekte, um Zugriffsrechte gewähren oder verweigern einem Benutzer oder die Gruppe anzugeben. Ein RegistryAccessRule -Objekt stellt immer Zugriff oder verweigerten Zugriff, nicht beide.

Verwenden Sie zum Anwenden einer Regelsatzes auf einen Registrierungsschlüssel die RegistryKey.GetAccessControl Methode zum Abrufen der RegistrySecurity Objekt. Ändern der RegistrySecurity Objekt mit der Methode, um die Regel hinzuzufügen, und verwenden Sie dann die RegistryKey.SetAccessControl Methode, um das Sicherheitsobjekt erneut anzufügen.

System_CAPS_importantWichtig

Änderungen an einer RegistrySecurity Objekt haben keinen Einfluss auf die Zugriffsebenen des Registrierungsschlüssels erst nach dem Aufruf der RegistryKey.SetAccessControl Methode, um den Registrierungsschlüssel das geänderte Objekt zuweisen.

RegistryAccessRule -Objekte sind unveränderlich. Ist die Sicherheit für einen Registrierungsschlüssel geändert mithilfe von Methoden der RegistrySecurity Klasse hinzufügen oder Entfernen von Regeln, wie Sie dies tun, werden die zugrunde liegenden Zugriffssteuerungseinträge geändert.

Das folgende Codebeispiel veranschaulicht die Zugriffsregeln mit Vererbung und Weitergabe. Das Beispiel erstellt eine RegistrySecurity Objekt, erstellt und zwei Regeln hinzugefügt, die über die ContainerInherit Flag. Die erste Regel hat keine Weitergabeflags, die zweite NoPropagateInherit und InheritOnly.

Das Programm zeigt die Regeln in der RegistrySecurity -Objekt und dann mithilfe des Objekts einen Unterschlüssel. Das Programm erstellt einen untergeordneten Unterschlüssel sowie einen untergeordneten Unterschlüssel, und zeigt dann die Sicherheit für jeden Unterschlüssel. 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
 */

.NET Framework
Verfügbar seit 2.0

Alle öffentlichen statischen Member ( Shared in Visual Basic) dieses Typs sind threadsicher. Die Threadsicherheit für Instanzmember ist nicht garantiert.

Zurück zum Anfang
Anzeigen: