Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

RegistrySecurity.AddAccessRule-Methode

Sucht nach einer übereinstimmenden Zugriffssteuerung, mit der die neue Regel zusammengeführt werden kann. Wenn keine Regel gefunden wurde, wird die neue Regel hinzugefügt.

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

public void AddAccessRule(
	RegistryAccessRule rule
)

Parameter

rule
Typ: System.Security.AccessControl.RegistryAccessRule
Die hinzuzufügende Zugriffssteuerungsregel.

AusnahmeBedingung
ArgumentNullException

rule ist null.

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

Regeln können nicht zusammengeführt werden, wenn sie über unterschiedliche Vererbungsflags verfügen. Wenn z. B. einem Benutzer der Lesezugriff ohne Vererbungsflags gewährt wird und mithilfe von AddAccessRule eine Regel hinzugefügt wird, die dem Benutzer den Schreibzugriff mit Vererbung für Unterschlüssel (InheritanceFlags.ContainerInherit), gewährt, können die beiden Regeln nicht zusammengeführt werden.

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

In Regeln werden Rechte auf die effizienteste Weise ausgedrückt. Wenn ein Benutzer z. B. über die Rechte QueryValues, Notify und ReadPermissions verfügt und Sie eine Regel zum Gewähren der EnumerateSubKeys-Rechte hinzufügen, werden dem Benutzer alle Aspekte der ReadKey-Rechte gewährt. Wenn Sie die Rechte des Benutzers abfragen, wird eine Regel angezeigt, die die ReadKey-Rechte enthält. Ebenso werden beim Entfernen der EnumerateSubKeys-Rechte die anderen Bestandteile der ReadKey-Rechte wieder angezeigt.

Im folgenden Codebeispiel werden Registrierungszugriffsregeln erstellt und einem RegistrySecurity-Objekt hinzugefügt. Damit wird veranschaulicht, wie Regeln zum Gewähren und Verweigern von Rechten separat erhalten bleiben, während kompatible Regeln derselben Art zusammengeführt werden.

HinweisHinweis

In diesem Beispiel wird das Sicherheitsobjekt nicht an ein RegistryKey-Objekt angefügt. Beispiele, in denen Sicherheitsobjekte angefügt werden, finden Sie unter RegistryKey.GetAccessControl und RegistryKey.SetAccessControl.

Ein Codebeispiel, in dem veranschaulicht wird, dass Vererbungs- und Weitergabeflags in der RegistryAccessRule-Klasse enthalten sein können.


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

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft