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

RegistrySecurity.AddAccessRule-Methode: (RegistryAccessRule)

 

Veröffentlicht: Oktober 2016

Sucht nach einer übereinstimmenden Zugriffskontrolle, die mit dem die neue Regel zusammengeführt werden kann. Wenn keine gefunden wird, fügt die neue Regel hinzu.

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

public void AddAccessRule(
	RegistryAccessRule rule
)

Parameter

rule
Type: System.Security.AccessControl.RegistryAccessRule

Die Regel hinzu.

Exception Condition
ArgumentNullException

rule ist null.

Die AddAccessRule -Methode sucht nach Regeln mit demselben Benutzer oder die Gruppe und die gleiche AccessControlType als rule. Wenn keine gefunden wird, rule hinzugefügt wird. Wenn eine übereinstimmende Regel gefunden wird, werden die Rechte in rule werden mit der vorhandenen Regel zusammengeführt.

Regeln können nicht zusammengeführt werden, wenn sie über unterschiedliche Vererbungsflags verfügen. Beispielsweise, wenn ein Benutzer Lesezugriff ohne Vererbungsflags und AddAccessRule Dient zum Hinzufügen einer Regel, die der Benutzer Schreibzugriff mit Vererbung für Unterschlüssel (InheritanceFlags.ContainerInherit), die beiden Regeln nicht zusammengeführt werden.

Regeln mit unterschiedlichen AccessControlType -Werten werden nie zusammengeführt.

Regeln auszudrücken Rechte auf die meisten wirtschaftlichen Weise. Wenn ein Benutzer z. B. QueryValues, Notify und ReadPermissions Rechte, und Sie fügen eine Regel zum gewähren EnumerateSubKeys Zugriffsrechte der Benutzer hat alle Bestandteile des ReadKey Rechte. Wenn Sie die Rechte des Benutzers Abfragen ausführen, sehen Sie eine Regel mit ReadKey Rechte. Auf ähnliche Weise entfernen EnumerateSubKeys Rechte, die anderen Bestandteile der ReadKey -Rechte wieder angezeigt.

Im folgenden Codebeispiel wird erstellt, und fügt sie einer RegistrySecurity -Objekt wie Regeln, zulassen und Verweigern von Benutzerrechten, getrennt, während der gleichen-kompatible Regeln bleiben Kind zusammengeführt werden.

System_CAPS_noteHinweis

In diesem Beispiel wird das Sicherheitsobjekt nicht angefügt ein RegistryKey Objekt. Beispiele, die Sicherheitsobjekte angefügt werden, finden Sie RegistryKey.GetAccessControl und RegistryKey.SetAccessControl.

Ein Codebeispiel, das Flags für Vererbung und Weitergabe veranschaulicht, finden Sie in der RegistryAccessRule Klasse.

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

public class Example
{
    public static void Main()
    {
        // Create a string representing the current user.
        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 the key.
        RegistryAccessRule rule = new RegistryAccessRule(user, 
            RegistryRights.ReadKey, 
            AccessControlType.Allow);
        mSec.AddAccessRule(rule);

        // Add a rule that denies the current user the 
        // right to change permissions on the Registry.
        rule = new RegistryAccessRule(user, 
            RegistryRights.ChangePermissions, 
            AccessControlType.Deny);
        mSec.AddAccessRule(rule);

        // Display the rules in the security object.
        ShowSecurity(mSec);

        // Add a rule that allows the current user the 
        // right to read permissions on the Registry. This 
        // rule is merged with the existing Allow rule.
        rule = new RegistryAccessRule(user, 
            RegistryRights.WriteKey, 
            AccessControlType.Allow);
        mSec.AddAccessRule(rule);

        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();
        }
    }
}

/* This code example produces output similar to following:

Current access rules:

        User: TestDomain\TestUser
        Type: Deny
      Rights: ChangePermissions

        User: TestDomain\TestUser
        Type: Allow
      Rights: ReadKey


Current access rules:

        User: TestDomain\TestUser
        Type: Deny
      Rights: ChangePermissions

        User: TestDomain\TestUser
        Type: Allow
      Rights: SetValue, CreateSubKey, ReadKey
 */

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