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

RegistryRights-Enumeration

 

Veröffentlicht: Oktober 2016

Gibt die Zugriffsrechte für das Steuerelement, die auf Registrierungsobjekte angewendet werden können.

Diese Enumeration verfügt über ein FlagsAttribute-Attribut, das eine bitweise Kombination der Memberwerte zulässt.

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

[FlagsAttribute]
public enum RegistryRights

MembernameBeschreibung
ChangePermissions

Das Recht zum Ändern der Zugriffsregeln und Überwachungsregeln, die einem Registrierungsschlüssel zugeordnet.

CreateLink

Für Verwendung durch das System vorgesehen.

CreateSubKey

Das Recht, Unterschlüssel von einem Registrierungsschlüssel zu erstellen.

Delete

Das Recht, einen Registrierungsschlüssel zu löschen.

EnumerateSubKeys

Das Recht, die Unterschlüssel eines Registrierungsschlüssels auflisten.

ExecuteKey

Wie in ReadKey.

FullControl

Das Recht, die vollständige Kontrolle über einen Registrierungsschlüssel auszuüben, ändern seine Zugriffsregeln und Überwachungsregeln.

Notify

Das Recht zum Anfordern von Änderungen auf einen Registrierungsschlüssel.

QueryValues

Das Recht, die Name-Wert-Paare in einem Registrierungsschlüssel abzufragen.

ReadKey

Das Recht zum Abfragen von Name/Wert-Paare in einem Registrierungsschlüssel, um Benachrichtigungen ändert, seine Unterschlüssel auflisten und Lesen seine Zugriffsregeln und Überwachungsregeln zu anzufordern.

ReadPermissions

Das Recht zum Öffnen und kopieren die Zugriffsregeln audit-Regeln für einen Registrierungsschlüssel.

SetValue

Das Recht zum Erstellen, löschen, oder legen Sie Name-Wert-Paare in einem Registrierungsschlüssel.

TakeOwnership

Das Recht, den Besitzer eines Registrierungsschlüssels zu ändern.

WriteKey

Das Recht zum Erstellen, löschen, und legen Sie Name/Wert-Paare in einem Registrierungsschlüssel, erstellen oder Löschen von Unterschlüsseln gespeichert, um Benachrichtigungen zu Änderungen, seine Unterschlüssel auflisten und Lesen seine Zugriffsregeln und Überwachungsregeln zu anzufordern.

Verwenden der RegistryRights -Enumeration, die Zugriff auf die Registrierung geben Rechte beim Erstellen RegistrySecurity Objekte. Zunächst zum Anwenden von Zugriffsrechten auf einen Registrierungsschlüssel hinzufügen RegistryAccessRule Objekte ein RegistrySecurity -Objekt und fügen Sie der RegistrySecurity -Objekt, das mit der RegistryKey.SetAccessControl -Methode oder eine entsprechende Überladung der die RegistryKey.CreateSubKey Methode.

Das folgende Codebeispiel veranschaulicht die Verwendung der RegistryRights Enumeration. Der Code erstellt einen Testschlüssel des aktuellen Benutzers ReadKey und Delete Zugriff auf Administratorrechte jedoch verweigern ChangePermissions und WriteKey Rechte. Nachfolgende versucht, erfolgreich oder Fehler in Abhängigkeit von diesen Berechtigungen.

Bevor der Schlüssel gelöscht wird, wird der Code angehalten. Wechseln Sie zu den Registrierungs-Editor (Regedit.exe oder Regedt32.exe), und stellen Sie sicher, dass die gleichen Zugriffsrechte angewendet werden, wenn der Zugriff auf den Schlüssel im Registrierungs-Editor ist.

In diesem Beispiel funktioniert am besten, wenn Sie verwenden "runas" über die Befehlszeile den Registrierungs-Editor und der Beispielcode als lokaler Benutzer ohne Administratorrechte ausführen. Beispielsweise, wenn Sie einen lokalen Benutzer namens "testuser", mit dem Befehl definiert haben runas /user:TestUser cmd Öffnet ein Befehlsfenster auf dem Sie den Registrierungseditor, und klicken Sie dann den Code ausführen können.

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

public class Example
{
    public static void Main()
    {
        // Delete the example key if it exists.
        try
        {
            Registry.CurrentUser.DeleteSubKey("RegistryRightsExample");
            Console.WriteLine("Example key has been deleted.");
        }
        catch (ArgumentException)
        {
            // ArgumentException is thrown if the key does not exist. In
            // this case, there is no reason to display a message.
        }
        catch (Exception ex)
        {
            Console.WriteLine("Unable to delete the example key: {0}", ex);
            return;
        }

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

        RegistrySecurity rs = new RegistrySecurity();

        // Allow the current user to read and delete the key.
        //
        rs.AddAccessRule(new RegistryAccessRule(user, 
            RegistryRights.ReadKey | RegistryRights.Delete, 
            InheritanceFlags.None, 
            PropagationFlags.None, 
            AccessControlType.Allow));

        // Prevent the current user from writing or changing the
        // permission set of the key. Note that if Delete permission
        // were not allowed in the previous access rule, denying
        // WriteKey permission would prevent the user from deleting the 
        // key.
        rs.AddAccessRule(new RegistryAccessRule(user, 
            RegistryRights.WriteKey | RegistryRights.ChangePermissions, 
            InheritanceFlags.None, 
            PropagationFlags.None, 
            AccessControlType.Deny));

        // Create the example key with registry security.
        RegistryKey rk = null;
        try
        {
            rk = Registry.CurrentUser.CreateSubKey("RegistryRightsExample", 
                RegistryKeyPermissionCheck.Default, rs);
            Console.WriteLine("\r\nExample key created.");
            rk.SetValue("ValueName", "StringValue");
        }
        catch (Exception ex)
        {
            Console.WriteLine("\r\nUnable to create the example key: {0}", ex);
        }
        if (rk != null) rk.Close();

        rk = Registry.CurrentUser;

        RegistryKey rk2;

        // Open the key with read access.
        rk2 = rk.OpenSubKey("RegistryRightsExample", false);
        Console.WriteLine("\r\nRetrieved value: {0}", rk2.GetValue("ValueName"));
        rk2.Close();

        // Attempt to open the key with write access.
        try
        {
            rk2 = rk.OpenSubKey("RegistryRightsExample", true);
        }
        catch (SecurityException ex)
        {
            Console.WriteLine("\nUnable to write to the example key." +
                " Caught SecurityException: {0}", ex.Message);
        }
        if (rk2 != null) rk2.Close();

        // Attempt to change permissions for the key.
        try
        {
            rs = new RegistrySecurity();
            rs.AddAccessRule(new RegistryAccessRule(user, 
                RegistryRights.WriteKey, 
                InheritanceFlags.None, 
                PropagationFlags.None, 
                AccessControlType.Allow));
            rk2 = rk.OpenSubKey("RegistryRightsExample", false);
            rk2.SetAccessControl(rs);
            Console.WriteLine("\r\nExample key permissions were changed.");
        }
        catch (UnauthorizedAccessException ex)
        {
            Console.WriteLine("\nUnable to change permissions for the example key." +
                " Caught UnauthorizedAccessException: {0}", ex.Message);
        }
        if (rk2 != null) rk2.Close();

        Console.WriteLine("\r\nPress Enter to delete the example key.");
        Console.ReadLine();

        try
        {
            rk.DeleteSubKey("RegistryRightsExample");
            Console.WriteLine("Example key was deleted.");
        }
        catch(Exception ex)
        {
            Console.WriteLine("Unable to delete the example key: {0}", ex);
        }

        rk.Close();
    }
}

/* This code example produces the following output:

Example key created.

Retrieved value: StringValue

Unable to write to the example key. Caught SecurityException: Requested registry access is not allowed.

Unable to change permissions for the example key. Caught UnauthorizedAccessException: Cannot write to the registry key.

Press Enter to delete the example key.

Example key was deleted.
 */

.NET Framework
Verfügbar seit 2.0
Zurück zum Anfang
Anzeigen: