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 Enumeration 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.

Imports System
Imports System.Reflection
Imports System.Security
Imports System.Security.AccessControl
Imports Microsoft.Win32

Public Class Example
    Public Shared Sub Main()
        ' Delete the example key if it exists.
        Try
            Registry.CurrentUser.DeleteSubKey("RegistryRightsExample")
            Console.WriteLine("Example key has been deleted.")
        Catch ex As ArgumentException
            ' ArgumentException is thrown if the key does not exist. In
            ' this case, there is no reason to display a message.
        Catch ex As Exception
            Console.WriteLine("Unable to delete the example key: {0}", ex)
            Return
        End Try

        Dim user As String = Environment.UserDomainName & "\" & Environment.UserName

        Dim rs As New RegistrySecurity()

        ' Allow the current user to read and delete the key.
        '
        rs.AddAccessRule(new RegistryAccessRule(user, _
            RegistryRights.ReadKey Or 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 Or RegistryRights.ChangePermissions, _
            InheritanceFlags.None, _
            PropagationFlags.None, _
            AccessControlType.Deny))

        ' Create the example key with registry security.
        Dim rk As RegistryKey = Nothing
        Try
            rk = Registry.CurrentUser.CreateSubKey("RegistryRightsExample", _
                RegistryKeyPermissionCheck.Default, rs)
            Console.WriteLine(vbCrLf & "Example key created.")
            rk.SetValue("ValueName", "StringValue")
        Catch ex As Exception
            Console.WriteLine(vbCrLf & "Unable to create the example key: {0}", ex)
        End Try

        If rk IsNot Nothing Then rk.Close()

        rk = Registry.CurrentUser

        Dim rk2 As RegistryKey

        ' Open the key with read access.
        rk2 = rk.OpenSubKey("RegistryRightsExample", False)
        Console.WriteLine(vbCrLf & "Retrieved value: {0}", rk2.GetValue("ValueName"))
        rk2.Close()

        ' Attempt to open the key with write access.
        Try
            rk2 = rk.OpenSubKey("RegistryRightsExample", True)
        Catch ex As SecurityException
            Console.WriteLine(vbCrLf & "Unable to write to the example key." _
                & " Caught SecurityException: {0}", ex.Message)
        End Try
        If rk2 IsNot Nothing Then 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(vbCrLf & "Example key permissions were changed.")
        Catch ex As UnauthorizedAccessException
            Console.WriteLine(vbCrLf & "Unable to change permissions for the example key." _
                & " Caught UnauthorizedAccessException: {0}", ex.Message)
        End Try
        If rk2 IsNot Nothing Then rk2.Close()

        Console.WriteLine(vbCrLf & "Press Enter to delete the example key.")
        Console.ReadLine()

        Try
            rk.DeleteSubKey("RegistryRightsExample")
            Console.WriteLine("Example key was deleted.")
        Catch ex As Exception
            Console.WriteLine("Unable to delete the example key: {0}", ex)
        End Try

        rk.Close()
    End Sub
End Class

' This code 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: