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.RemoveAccessRuleSpecific-Methode: (RegistryAccessRule)

 

Veröffentlicht: Oktober 2016

Sucht nach einer Zugriffssteuerungsregel, die mit dem angegebenen übereinstimmt Regel und, sofern gefunden, entfernt es.

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

public void RemoveAccessRuleSpecific(
	RegistryAccessRule rule
)

Parameter

rule
Type: System.Security.AccessControl.RegistryAccessRule

Das zu entfernende RegistryAccessRule-Element.

Exception Condition
ArgumentNullException

rule ist null.

Die Regel wird nur dann, wenn sie genau entfernt rule in alle Details, einschließlich der Flags. Andere Regeln mit demselben Benutzer und AccessControlType sind nicht betroffen.

System_CAPS_importantWichtig

Eine Regel einen oder mehrere zugrunde liegende Access Control Entries (ACE), und diese Einträge werden Teilen oder nach Bedarf kombiniert werden, wenn Sie die Zugriffsregeln für die Sicherheit für einen Benutzer ändern. Folglich eine Regel möglicherweise nicht mehr vorhanden, in dem spezifischen Format er hatte, als er hinzugefügt wurde, und klicken Sie in diesem Fall die RemoveAccessRuleSpecific Methode kann nicht entfernt werden.

Das folgende Codebeispiel zeigt, dass die RemoveAccessRuleSpecific -Methode entfernt eine Regel nur, wenn sie genau übereinstimmt.

Das Beispiel erstellt zwei Regeln, die unterschiedliche Rechte gewähren. Die Regeln haben kompatible Flags für Vererbung und Weitergabe, wenn die zweite Regel hinzugefügt wird mit dem ersten zusammengeführt. Im Beispiel wird die RemoveAccessRuleSpecific Methode, und geben die erste Regel, da die Regeln zusammengeführt werden, es gibt jedoch keine übereinstimmende Regel. Das Beispiel ruft dann die RemoveAccessRule Methode, um das Entfernen der zweiten Regel aus der zusammengeführten Regel und zum Schluss ruft die RemoveAccessRuleSpecific Methode, um die erste Regel zu entfernen.

System_CAPS_noteHinweis

In diesem Beispiel wird das Sicherheitsobjekt nicht angefügt ein RegistryKey Objekt. Siehe die RegistryKey.GetAccessControl Methode und die RegistryKey.SetAccessControl Methode.


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

public class Example
{
    public static void Main()
    {
        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 and enumerate the name/value pairs in a key, 
        // to read its access and audit rules, to enumerate
        // its subkeys, to create subkeys, and to delete the key. 
        // The rule is inherited by all contained subkeys.
        //
        RegistryAccessRule rule1 = new RegistryAccessRule(user, 
            RegistryRights.ReadKey | RegistryRights.WriteKey
                | RegistryRights.Delete, 
            InheritanceFlags.ContainerInherit, 
            PropagationFlags.None, 
            AccessControlType.Allow);
        mSec.AddAccessRule(rule1);

        // Add a rule that allows the current user the right
        // right to take ownership of a key, using the same 
        // inheritance and propagation flags. This rule 
        // merges with the first rule.
        RegistryAccessRule rule2 = new RegistryAccessRule(user, 
            RegistryRights.ChangePermissions, 
            InheritanceFlags.ContainerInherit,
            PropagationFlags.None, 
            AccessControlType.Allow);
        mSec.AddAccessRule(rule2);

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

        // Attempt to use RemoveRuleSpecific to remove the
        // first rule. The removal fails, because the rule
        // in the RegistrySecurity object has been altered.
        mSec.RemoveAccessRuleSpecific(rule1);

        // Show that the rule was not removed.
        ShowSecurity(mSec);

        // Use the RemoveAccessRule method to remove rule2,
        // and then use RemoveAccessRuleSpecific to remove
        // rule1.
        mSec.RemoveAccessRule(rule2);
        mSec.RemoveAccessRuleSpecific(rule1);

        // Show that the rules have been removed.
        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(" Inheritance: {0}", ar.InheritanceFlags);
            Console.WriteLine(" Propagation: {0}", ar.PropagationFlags);
            Console.WriteLine("   Inherited? {0}", ar.IsInherited);
            Console.WriteLine();
        }
    }
}

/* This code example produces output similar to following:

Current access rules:

        User: TestDomain\TestUser
        Type: Allow
      Rights: SetValue, CreateSubKey, Delete, ReadKey, ChangePermissions
 Inheritance: ContainerInherit
 Propagation: None
   Inherited? False


Current access rules:

        User: TestDomain\TestUser
        Type: Allow
      Rights: SetValue, CreateSubKey, Delete, ReadKey, ChangePermissions
 Inheritance: ContainerInherit
 Propagation: None
   Inherited? False


Current access rules:

*/

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