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 SemaphoreSecurity.ResetAccessRule (SemaphoreAccessRule)

 

Data di pubblicazione: ottobre 2016

Rimuove tutte le regole di controllo di accesso con lo stesso utente della regola specificata, indipendentemente da AccessControlType, e quindi aggiunge la regola specificata.

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

public void ResetAccessRule(
	SemaphoreAccessRule rule
)

Parametri

rule
Type: System.Security.AccessControl.SemaphoreAccessRule

Oggetto SemaphoreAccessRule da aggiungere. L'utente specificato da questa regola determina le regole da rimuovere prima di aggiunta questa regola.

Exception Condition
ArgumentNullException

rule è null.

Se non sono presenti regole di accesso il cui utente corrisponde a quello della regola specificata, rule viene aggiunto.

Nell'esempio di codice riportato di seguito viene illustrato come il ResetAccessRule metodo sostituisce tutte le regole per l'utente corrispondente con la regola specificata per la corrispondenza.

Nell'esempio viene creato un SemaphoreSecurity 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 ResetAccessRule metodo per sostituire le regole esistenti con la nuova regola.

System_CAPS_noteNota

In questo esempio non viene associato l'oggetto di sicurezza per un Semaphore oggetto. Esempi di associazione di oggetti di sicurezza disponibili in Semaphore.GetAccessControl e Semaphore.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.
        SemaphoreSecurity mSec = new SemaphoreSecurity();

        // Add a rule that grants the current user the 
        // right to enter or release the semaphore and read the
        // permissions on the semaphore.
        SemaphoreAccessRule rule = new SemaphoreAccessRule(user, 
            SemaphoreRights.Synchronize | SemaphoreRights.Modify
                | SemaphoreRights.ReadPermissions, 
            AccessControlType.Allow);
        mSec.AddAccessRule(rule);

        // Add a rule that denies the current user the 
        // right to change permissions on the semaphore.
        rule = new SemaphoreAccessRule(user, 
            SemaphoreRights.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 semaphore. Use the
        // ResetAccessRule method to replace both of 
        // the existing rules with the new rule. 
        rule = new SemaphoreAccessRule(user,
            SemaphoreRights.FullControl,
            AccessControlType.Allow);
        mSec.ResetAccessRule(rule);

        ShowSecurity(mSec);
    }

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

        foreach(SemaphoreAccessRule 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.SemaphoreRights);
            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: Allow
      Rights: FullControl
 */

.NET Framework
Disponibile da 2.0
Torna all'inizio
Mostra: