War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
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.RemoveAccessRuleSpecific-Methode

Sucht nach einer Zugriffssteuerungsregel, die genau mit der angegebenen Regel übereinstimmt, und entfernt diese (falls vorhanden).

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

public void RemoveAccessRuleSpecific(
	RegistryAccessRule rule
)

AusnahmeBedingung
ArgumentNullException

rule ist null.

Die Regel wird nur entfernt, wenn sie mit rule in allen Details (einschließlich der Flags) übereinstimmt. Andere Regeln mit demselben Benutzer und demselben AccessControlType sind davon nicht betroffen.

Wichtiger HinweisWichtig

Eine Regel wird durch einen oder mehrere zugrunde liegende ACEs (Access Control Entries, Zugriffssteuerungseintrag) dargestellt, und diese Einträge werden je nach Bedarf aufgeteilt oder kombiniert, wenn Sie die Zugriffssicherheitsregeln für einen Benutzer ändern. Deshalb ist eine Regel möglicherweise nicht länger in dem spezifischen Format vorhanden, in dem sie hinzugefügt wurde. In diesem Fall kann sie von der RemoveAccessRuleSpecific-Methode nicht entfernt werden.

Im folgenden Codebeispiel wird veranschaulicht, dass die RemoveAccessRuleSpecific-Methode eine Regel nur dann entfernt, wenn sie eine genaue Übereinstimmung darstellt.

Im Beispiel werden zwei Regeln erstellt, die unterschiedliche Rechte gewähren. Die Regeln verfügen über kompatible Vererbungs- und Weitergabeflags. Daher wird die zweite Regel beim Hinzufügen mit der ersten Regel zusammengeführt. Im Beispiel wird die RemoveAccessRuleSpecific-Methode aufgerufen, die die erste Regel angibt. Da die Regeln zusammengeführt wurden, ist keine übereinstimmende Regel vorhanden. Anschließend wird die RemoveAccessRule-Methode aufgerufen, um die zweite Regel aus der zusammengeführten Regel zu entfernen. Schließlich wird die RemoveAccessRuleSpecific-Methode aufgerufen, um die erste Regel zu entfernen.

HinweisHinweis

In diesem Beispiel wird das Sicherheitsobjekt nicht an ein RegistryKey-Objekt angefügt. Informationen hierzu finden Sie in der RegistryKey.GetAccessControl-Methode und in der 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

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