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

 

Data di pubblicazione: ottobre 2016

Cerca una regola di controllo di accesso con lo stesso utente e AccessControlType (Consenti o Nega) della regola specificata e con ereditarietà compatibile e flag di propagazione; se viene trovata una regola, i diritti contenuti nella regola di accesso specificata vengono rimossi da esso.

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

public bool RemoveAccessRule(
	SemaphoreAccessRule rule
)

Parametri

rule
Type: System.Security.AccessControl.SemaphoreAccessRule

Oggetto SemaphoreAccessRule che specifica l'utente e AccessControlType da cercare e un set di flag di ereditarietà e propagazione di una regola corrispondente, se disponibile, deve essere compatibile con. Specifica i diritti da rimuovere dalla regola compatibile, se trovano.

Valore restituito

Type: System.Boolean

true Se viene trovata una regola compatibile. in caso contrario false.

Exception Condition
ArgumentNullException

rule è null.

Corrente SemaphoreSecurity viene cercata una regola con lo stesso utente e lo stesso AccessControlType valore come rule. Se non viene trovata alcuna regola di questo tipo, viene eseguita alcuna azione e il metodo restituisce false. Se vengono trovate regole corrispondenti, ereditarietà e compatibilità vengono controllate per la compatibilità con i flag specificati in rule. Se viene trovata alcuna regola compatibile, viene eseguita alcuna azione e il metodo restituisce false. Se viene trovata una regola con flag compatibili, i diritti specificati in rule vengono rimossi dalla regola compatibile, e il metodo restituisce true. Se rule Specifica i diritti non contenuti nella regola compatibile, viene eseguita alcuna azione relativamente a tali diritti. Se tutti i diritti vengono rimossi dalla regola compatibile, l'intera regola viene rimossa dall'oggetto SemaphoreSecurity oggetto.

System_CAPS_importantImportante

Sebbene sia possibile specificare flag di ereditarietà e propagazione per le regole di accesso dei semafori creandoli con il AccessRuleFactory (metodo), questa operazione è sconsigliata. Ereditarietà e propagazione non hanno alcun significato per i semafori denominati e rendono più complessa la gestione delle regole di accesso.

Esempio di codice riportato di seguito viene illustrato l'utilizzo di RemoveAccessRule metodo per rimuovere i diritti da un Allow regola in un SemaphoreSecurity oggetto. Viene inoltre illustrato che gli altri diritti in rule vengono ignorati.

Nell'esempio viene creato un SemaphoreSecurity dell'oggetto e aggiunge le regole che concedono e negano diversi diritti per l'utente corrente. I diritti concessi sono Modify, ReadPermissions, e Synchronize. Nell'esempio viene quindi crea una nuova regola per l'utente corrente, inclusi ReadPermissions e TakeOwnership diritti e utilizzata con la RemoveAccessRule per rimuovere ReadPermissions dalla Allow regola nel SemaphoreSecurity oggetto. L'istruzione estranea TakeOwnership destro del mouse rule viene ignorato.

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 right to read permissions on the semaphore, and
        // take ownership of the semaphore. Use this rule to 
        // remove the right to read permissions from the 
        // Allow rule for the current user. The inclusion 
        // of the right to take ownership has no effect.
        rule = new SemaphoreAccessRule(user, 
            SemaphoreRights.TakeOwnership | 
                SemaphoreRights.ReadPermissions, 
            AccessControlType.Allow);
        mSec.RemoveAccessRule(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: Deny
      Rights: ChangePermissions

        User: TestDomain\TestUser
        Type: Allow
      Rights: Modify, Synchronize
 */

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