SetAccessRule Methode (EventWaitHandleAccessRule)
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

EventWaitHandleSecurity.SetAccessRule-Methode (EventWaitHandleAccessRule)

 

Entfernt alle Zugriffssteuerungsregeln mit demselben Benutzer und demselben AccessControlType (gewähren oder verweigern) wie die angegebene Regel und fügt anschließend die angegebene Regel hinzu.

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

public void SetAccessRule(
	EventWaitHandleAccessRule rule
)

Parameter

rule

Die zu addierende EventWaitHandleAccessRule.Der Benutzer und der AccessControlType dieser Regel bestimmen die Regeln, die vor dem Hinzufügen dieser Regel entfernt werden sollen.

Exception Condition
ArgumentNullException

rule ist null.

Wenn die angegebene Regel über Allow verfügt, entfernt diese Methode alle Allow-Regeln für den angegebenen Benutzer und ersetzt diese durch die angegebene Regel.Wenn die angegebene Regel über Deny verfügt, werden alle Deny-Regeln für den angegebenen Benutzer durch die angegebene Regel ersetzt.

Wenn keine Regeln vorhanden sind, deren Benutzer und AccessControlType der angegebenen Regel entsprechen, wird rule hinzugefügt.

Im folgenden Codebeispiel wird veranschaulicht, wie mit der SetAccessRule-Methode alle Regeln entfernt werden, die sowohl mit dem Benutzer als auch mit dem AccessControlType von rule übereinstimmen, und diese durch rule ersetzt werden.

Im Beispiel wird ein EventWaitHandleSecurity-Objekt erstellt, und es werden Regeln hinzugefügt, die dem aktuellen Benutzer verschiedene Rechte gewähren und verweigern.Anschließend wird im Beispiel eine neue Regel erstellt, die dem aktuellen Benutzer die uneingeschränkte Kontrolle zuweist, und mithilfe der SetAccessRule-Methode wird die vorhandene Allow-Regel durch die neue Regel ersetzt.Die Regel, die den Zugriff verweigert, ist nicht betroffen.

System_CAPS_noteHinweis

In diesem Beispiel wird das Sicherheitsobjekt nicht an ein EventWaitHandle-Objekt angefügt.Beispiele, in denen Sicherheitsobjekte angefügt werden, finden Sie unter 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 and read the
        // permissions on the event.
        EventWaitHandleAccessRule rule = new EventWaitHandleAccessRule(user, 
            EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify
                | EventWaitHandleRights.ReadPermissions, 
            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);

        // Create a rule that grants the current user 
        // the full control over the event. Use the
        // SetAccessRule method to replace the 
        // existing Allow rule with the new rule. 
        rule = new EventWaitHandleAccessRule(user,
            EventWaitHandleRights.FullControl,
            AccessControlType.Allow);
        mSec.SetAccessRule(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, ReadPermissions, Synchronize


Current access rules:

        User: TestDomain\TestUser
        Type: Deny
      Rights: ChangePermissions

        User: TestDomain\TestUser
        Type: Allow
      Rights: FullControl
 */

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