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 class 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 namespace System;
using namespace System::Reflection;
using namespace Microsoft::Win32;
using namespace System::Security::AccessControl;
using namespace System::Security;

int 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 (InvalidOperationException^ ex)
    {
        Console::WriteLine(
            "{0}Unable to delete key: it appears to have child subkeys:{0}{1}", 
            Environment::NewLine, ex);
        return 0;
    }
    catch (SecurityException^ ex)
    {
        Console::WriteLine("{0}You do not have the permissions required " +
            "to delete this key:{0}{1}", Environment::NewLine, ex);
        return 0;
    }

    String^ user = Environment::UserDomainName + "\\" + Environment::UserName;

    RegistrySecurity^ regSecurity = gcnew RegistrySecurity();

    // Allow the current user to read and delete the key.
    //
    regSecurity->AddAccessRule(gcnew 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.
    regSecurity->AddAccessRule(gcnew RegistryAccessRule(user,
        RegistryRights::WriteKey | RegistryRights::ChangePermissions,
        InheritanceFlags::None,
        PropagationFlags::None,
        AccessControlType::Deny));

    // Create the example key with registry security.
    RegistryKey^ createdKey = nullptr;
    try
    {
        createdKey = Registry::CurrentUser->CreateSubKey(
            "RegistryRightsExample", RegistryKeyPermissionCheck::Default,
            regSecurity);
        Console::WriteLine("{0}Example key created.", Environment::NewLine);
        createdKey->SetValue("ValueName", "StringValue");
    }
    catch (SecurityException^ ex)
    {
        Console::WriteLine("{0}You do not have the permissions required " +
            "to create the example key:{0}{1}", Environment::NewLine, ex);
        return 0;
    }
    if (createdKey != nullptr)
    {
        createdKey->Close();
    }

    RegistryKey^ openedKey;

    // Open the key with read access.
    openedKey = Registry::CurrentUser->OpenSubKey("RegistryRightsExample",
        false);
    Console::WriteLine("{0}Retrieved value: {1}",
        Environment::NewLine, openedKey->GetValue("ValueName"));
    openedKey->Close();

    // Attempt to open the key with write access.
    try
    {
        openedKey = Registry::CurrentUser->OpenSubKey("RegistryRightsExample",
            true);
    }
    catch (SecurityException^ ex)
    {
        Console::WriteLine("{0}You do not have the permissions required " +
            "to write to the example key:{0}{1}", Environment::NewLine, ex);
    }
    if (openedKey != nullptr)
    {
        openedKey->Close();
    }

    // Attempt to change permissions for the key.
    try
    {
        regSecurity = gcnew RegistrySecurity();
        regSecurity->AddAccessRule(gcnew RegistryAccessRule(user,
            RegistryRights::WriteKey,
            InheritanceFlags::None,
            PropagationFlags::None,
            AccessControlType::Allow));
        openedKey = Registry::CurrentUser->OpenSubKey("RegistryRightsExample",
            false);
        openedKey->SetAccessControl(regSecurity);
        Console::WriteLine("{0}Example key permissions were changed.", 
            Environment::NewLine);
    }
    catch (UnauthorizedAccessException^ ex)
    {
        Console::WriteLine("{0}You are not authorized to change " +
            "permissions for the example key:{0}{1}", Environment::NewLine, ex);
    }
    if (openedKey != nullptr)
    {
        openedKey->Close();
    }

    Console::WriteLine("{0}Press Enter to delete the example key.", 
        Environment::NewLine);
    Console::ReadLine();

    try
    {
        Registry::CurrentUser->DeleteSubKey("RegistryRightsExample");
        Console::WriteLine("Example key was deleted.");
    }
    catch(SecurityException^ ex)
    {
        Console::WriteLine("{0}You do not have the permissions required to "
            + "delete the example key:{0}{1}", Environment::NewLine, ex);
    }
}

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