EventWaitHandleSecurity.RemoveAccessRuleAll(EventWaitHandleAccessRule) Methode

Definition

Sucht nach allen Zugriffssteuerungsregeln mit demselben Benutzer und AccessControlType (zulassen oder verweigern) wie die angegebene Regel und entfernt sie, falls gefunden,.

public:
 void RemoveAccessRuleAll(System::Security::AccessControl::EventWaitHandleAccessRule ^ rule);
public void RemoveAccessRuleAll(System.Security.AccessControl.EventWaitHandleAccessRule rule);
override this.RemoveAccessRuleAll : System.Security.AccessControl.EventWaitHandleAccessRule -> unit
Public Sub RemoveAccessRuleAll (rule As EventWaitHandleAccessRule)

Parameter

rule
EventWaitHandleAccessRule

Ein EventWaitHandleAccessRule Wert, der den Benutzer angibt und AccessControlType nach dem gesucht werden soll. Alle von dieser Regel angegebenen Rechte werden ignoriert.

Ausnahmen

rule ist null.

Beispiele

Im folgenden Codebeispiel wird gezeigt, dass die RemoveAccessRuleAll Methode alle Regeln entfernt, die dem Benutzer entsprechen, und AccessControlTypedie Rechte ignorieren.

Das Beispiel erstellt ein EventWaitHandleSecurity Objekt, fügt Regeln hinzu, die verschiedene Rechte für den aktuellen Benutzer zulassen und verweigern, und führt dann zusätzliche Rechte mit der Allow Regel zusammen. Anschließend wird eine neue Regel erstellt, die es dem aktuellen Benutzer ermöglicht, den Besitz zu übernehmen, und verwendet diese Regel, um die Allow Regel aus dem EventWaitHandleSecurity Objekt zu entfernen.

Note

In diesem Beispiel wird das Sicherheitsobjekt nicht an ein EventWaitHandle Objekt angefügt. Beispiele zum Anfügen von Sicherheitsobjekten finden Sie in EventWaitHandle.GetAccessControl und EventWaitHandle.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.
        EventWaitHandleSecurity mSec = new EventWaitHandleSecurity();

        // Add a rule that grants the current user the 
        // right to wait on or signal the event.
        EventWaitHandleAccessRule rule = new EventWaitHandleAccessRule(user, 
            EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify, 
            AccessControlType.Allow);
        mSec.AddAccessRule(rule);

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

        ShowSecurity(mSec);

        // Create a rule that allows the current user to
        // take ownership of the event, and use that rule 
        // to remove the existing Allow rule from the
        // EventWaitHandleSecurity object, showing that the user
        // and access type must match, while the rights are
        // ignored.
        Console.WriteLine("Use RemoveAccessRuleAll to remove the Allow rule.");
        rule = new EventWaitHandleAccessRule(user, 
            EventWaitHandleRights.TakeOwnership, 
            AccessControlType.Allow);
        mSec.RemoveAccessRuleAll(rule);

        ShowSecurity(mSec);
    }

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

        foreach(EventWaitHandleAccessRule 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.EventWaitHandleRights);
            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

Use RemoveAccessRuleAll to remove the Allow rule.

Current access rules:

        User: TestDomain\TestUser
        Type: Deny
      Rights: ChangePermissions
 */
Imports System.Threading
Imports System.Security.AccessControl
Imports System.Security.Principal

Public Class Example

    Public Shared Sub Main()

        ' Create a string representing the current user.
        Dim user As String = Environment.UserDomainName _ 
            & "\" & Environment.UserName

        ' Create a security object that grants no access.
        Dim mSec As New EventWaitHandleSecurity()

        ' Add a rule that grants the current user the 
        ' right to wait on or signal the event.
        Dim rule As New EventWaitHandleAccessRule(user, _
            EventWaitHandleRights.Synchronize _
            Or EventWaitHandleRights.Modify, _
            AccessControlType.Allow)
        mSec.AddAccessRule(rule)

        ' Add a rule that denies the current user the 
        ' right to change permissions on the event.
        rule = New EventWaitHandleAccessRule(user, _
            EventWaitHandleRights.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 event. This rule
        ' is merged with the existing Allow rule.
        rule = New EventWaitHandleAccessRule(user, _
            EventWaitHandleRights.ReadPermissions, _
            AccessControlType.Allow)
        mSec.AddAccessRule(rule)

        ShowSecurity(mSec)

        ' Create a rule that allows the current user to
        ' take ownership of the event, and use that rule 
        ' to remove the existing allow access rule from 
        ' the EventWaitHandleSecurity object, showing that the user
        ' and access type must match, while the rights are
        ' ignored.
        Console.WriteLine("Use RemoveAccessRuleAll to remove the Allow rule.")
        rule = New EventWaitHandleAccessRule(user, _
            EventWaitHandleRights.TakeOwnership, _
            AccessControlType.Allow)
        mSec.RemoveAccessRuleAll(rule)

        ShowSecurity(mSec)
        
    End Sub 

    Private Shared Sub ShowSecurity(ByVal security As EventWaitHandleSecurity)
        Console.WriteLine(vbCrLf & "Current access rules:" & vbCrLf)

        For Each ar As EventWaitHandleAccessRule In _
            security.GetAccessRules(True, True, GetType(NTAccount))

            Console.WriteLine("        User: {0}", ar.IdentityReference)
            Console.WriteLine("        Type: {0}", ar.AccessControlType)
            Console.WriteLine("      Rights: {0}", ar.EventWaitHandleRights)
            Console.WriteLine()
        Next

    End Sub
End Class 

'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
'
'Use RemoveAccessRuleAll to remove the Allow rule.
'
'Current access rules:
'
'        User: TestDomain\TestUser
'        Type: Deny
'      Rights: ChangePermissions

Hinweise

Die aktuelle EventWaitHandleSecurity Wird nach Regeln gesucht, die denselben Benutzer und denselben AccessControlType Wert wie rule. Alle von rule ihnen angegebenen Rechte werden beim Ausführen dieser Suche ignoriert. Alle Abgleichsregeln werden entfernt. Wenn keine übereinstimmenden Regeln gefunden werden, wird keine Aktion ausgeführt.

Gilt für: