Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo EventWaitHandleSecurity.SetAccessRule (EventWaitHandleAccessRule)

 

Data di pubblicazione: ottobre 2016

Rimuove tutte le regole di controllo di accesso con lo stesso utente e AccessControlType (Consenti o Nega) della regola specificata e quindi aggiunge la regola specificata.

Spazio dei nomi:   System.Security.AccessControl
Assembly:  mscorlib (in mscorlib.dll)

public void SetAccessRule(
	EventWaitHandleAccessRule rule
)

Parametri

rule
Type: System.Security.AccessControl.EventWaitHandleAccessRule

Oggetto EventWaitHandleAccessRule da aggiungere. L'utente e AccessControlType di questa regola determinano le regole da rimuovere prima di aggiunta questa regola.

Exception Condition
ArgumentNullException

rule è null.

Se la regola specificata dispone Allow, l'effetto di questo metodo consiste nel rimuovere tutti Allow regole per l'utente specificato, sostituirli con la regola specificata. Se la regola specificata dispone Deny, tutti Deny vengono sostituite le regole per l'utente specificato con la regola specificata.

Se non sono presenti regole il cui utente e AccessControlType corrisponde alla regola specificata, rule viene aggiunto.

Nell'esempio di codice riportato di seguito viene illustrato come il SetAccessRule metodo rimuove tutte le regole che corrispondono all'utente e la AccessControlType di rule, sostituendoli con rule.

Nell'esempio viene creato un EventWaitHandleSecurity dell'oggetto e aggiunge le regole che concedono e negano diversi diritti per l'utente corrente. Nell'esempio viene quindi crea una nuova regola che consente il controllo completo all'utente corrente e Usa il SetAccessRule per sostituire il metodo Allow regola con la nuova regola. La regola che nega l'accesso non è interessata.

System_CAPS_noteNota

In questo esempio non viene associato l'oggetto di sicurezza per un EventWaitHandle oggetto. Esempi di associazione di oggetti di sicurezza disponibili in EventWaitHandle.GetAccessControl e 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
Disponibile da 2.0
Torna all'inizio
Mostra: