(0) exportieren 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

MutexSecurity.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(
	MutexAccessRule 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 gezeigt, dass die RemoveAccessRuleSpecific-Methode eine genaue Übereinstimmung erfordert, um eine Regel entfernen zu können, und dass Regeln zum Gewähren und Verweigern von Benutzerrechten voneinander unabhängig sind.

Im Beispiel wird ein MutexSecurity-Objekt erstellt. Außerdem werden Regeln hinzugefügt, die dem aktuellen Benutzer eine Reihe von Rechten gewähren und verweigern, und anschließend wird die Allow-Zugriffsregel mit zusätzlichen Rechten zusammengeführt. Anschließend wird im Beispiel die ursprüngliche Allow-Regel an die RemoveAccessRuleSpecific-Methode übergeben. In den Ergebnissen ist ersichtlich, dass nichts gelöscht wurde. Danach wird im Beispiel eine Regel erstellt, die mit der Allow-Regel im MutexSecurity-Objekt übereinstimmt, und mithilfe der RemoveAccessRuleSpecific-Methode wird die Regel erfolgreich entfernt.

HinweisHinweis

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


using System;
using System.Threading;
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.
        MutexSecurity mSec = new MutexSecurity();

        // Add a rule that grants the current user the 
        // right to enter or release the mutex.
        MutexAccessRule ruleA = new MutexAccessRule(user, 
            MutexRights.Synchronize | MutexRights.Modify, 
            AccessControlType.Allow);
        mSec.AddAccessRule(ruleA);

        // Add a rule that denies the current user the 
        // right to change permissions on the mutex.
        MutexAccessRule rule = new MutexAccessRule(user, 
            MutexRights.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 mutex. This rule
        // is merged with the existing Allow rule.
        rule = new MutexAccessRule(user, 
            MutexRights.ReadPermissions, 
            AccessControlType.Allow);
        mSec.AddAccessRule(rule);

        ShowSecurity(mSec);

        // Attempt to remove the original rule (granting
        // the right to enter or release the mutex) with 
        // RemoveAccessRuleSpecific. The removal fails,
        // because the right to read the permissions on the 
        // mutex has been added to the rule, so that it no 
        // longer matches the original rule.
        Console.WriteLine("Attempt to use RemoveAccessRuleSpecific on the original rule.");
        mSec.RemoveAccessRuleSpecific(ruleA);

        ShowSecurity(mSec);

        // Create a rule that grants the current user 
        // the right to enter or release the mutex, and
        // to read permissions. Use this rule to remove
        // the Allow rule for the current user.
        Console.WriteLine("Use RemoveAccessRuleSpecific with the correct rights.");
        rule = new MutexAccessRule(user, 
            MutexRights.Synchronize | MutexRights.Modify | 
                MutexRights.ReadPermissions, 
            AccessControlType.Allow);
        mSec.RemoveAccessRuleSpecific(rule);

        ShowSecurity(mSec);
    }

    private static void ShowSecurity(MutexSecurity security)
    {
        Console.WriteLine("\r\nCurrent access rules:\r\n");

        foreach(MutexAccessRule 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.MutexRights);
            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: Modify, Synchronize


Current access rules:

        User: TestDomain\TestUser
        Type: Deny
      Rights: ChangePermissions

        User: TestDomain\TestUser
        Type: Allow
      Rights: Modify, ReadPermissions, Synchronize

Attempt to use RemoveAccessRuleSpecific on the original rule.

Current access rules:

        User: TestDomain\TestUser
        Type: Deny
      Rights: ChangePermissions

        User: TestDomain\TestUser
        Type: Allow
      Rights: Modify, ReadPermissions, Synchronize

Use RemoveAccessRuleSpecific with the correct rights.

Current access rules:

        User: TestDomain\TestUser
        Type: Deny
      Rights: ChangePermissions
 */


.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:
© 2014 Microsoft