EventWaitHandleSecurity.RemoveAccessRule(EventWaitHandleAccessRule) Método

Definição

Procura uma regra de controlo de acesso com o mesmo utilizador e AccessControlType (permitir ou recusar) que a regra de acesso especificada, e com flags de herança e propagação compatíveis; se tal regra for encontrada, os direitos contidos na regra de acesso especificada são removidos dela.

public:
 bool RemoveAccessRule(System::Security::AccessControl::EventWaitHandleAccessRule ^ rule);
public bool RemoveAccessRule(System.Security.AccessControl.EventWaitHandleAccessRule rule);
override this.RemoveAccessRule : System.Security.AccessControl.EventWaitHandleAccessRule -> bool
Public Function RemoveAccessRule (rule As EventWaitHandleAccessRule) As Boolean

Parâmetros

rule
EventWaitHandleAccessRule

Um que especifica o utilizador e EventWaitHandleAccessRule a procurar, e um conjunto de flags de herança e propagação que indicam que uma regra correspondente, se encontradaAccessControlType, deve ser compatível. Especifica os direitos de remoção da regra compatível, se forem encontrados.

Devoluções

true se for encontrada uma regra compatível; caso contrário, false.

Exceções

rule é null.

Exemplos

O exemplo de código seguinte demonstra a utilização do RemoveAccessRule método para remover direitos de uma Allow regra num EventWaitHandleSecurity objeto. Também mostra que outros direitos rule são ignorados.

O exemplo cria um EventWaitHandleSecurity objeto e adiciona regras que permitem e negam vários direitos ao utilizador atual. Os direitos permitidos incluem Modify, ReadPermissions, e Synchronize. O exemplo cria então uma nova regra para o utilizador atual, incluindo ReadPermissions os direitos and TakeOwnership , e usa essa regra com o RemoveAccessRule método para remover ReadPermissions da Allow regra no EventWaitHandleSecurity objeto. A TakeOwnership direita é rule ignorada.

Note

Este exemplo não associa o objeto de segurança a um EventWaitHandle objeto. Exemplos que anexam objetos de segurança podem ser encontrados em 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 right to read permissions on the event, and
        // take ownership of the event. 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 EventWaitHandleAccessRule(user, 
            EventWaitHandleRights.TakeOwnership | 
                EventWaitHandleRights.ReadPermissions, 
            AccessControlType.Allow);
        mSec.RemoveAccessRule(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: Modify, Synchronize
 */
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, and to 
        ' read its permissions.
        Dim rule As New EventWaitHandleAccessRule(user, _
            EventWaitHandleRights.Synchronize _
            Or EventWaitHandleRights.Modify _
            Or 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 right to read permissions on the event, and
        ' take ownership of the event. 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 EventWaitHandleAccessRule(user, _
            EventWaitHandleRights.TakeOwnership _
            Or EventWaitHandleRights.ReadPermissions, _
            AccessControlType.Allow)
        mSec.RemoveAccessRule(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, ReadPermissions, Synchronize
'
'
'Current access rules:
'
'        User: TestDomain\TestUser
'        Type: Deny
'      Rights: ChangePermissions
'
'        User: TestDomain\TestUser
'        Type: Allow
'      Rights: Modify, Synchronize

Observações

A corrente EventWaitHandleSecurity é pesquisada por uma regra que tenha o mesmo utilizador e o mesmo AccessControlType valor que rule. Se tal regra não for encontrada, nenhuma ação é tomada, e o método devolve false. Se forem encontradas regras correspondentes, as suas flags de herança e compatibilidade são verificadas quanto à compatibilidade com as flags especificadas em rule. Se não for encontrada regra compatível, não é tomada qualquer ação e o método devolve false. Se for encontrada uma regra com flags compatíveis, os direitos especificados em rule são removidos da regra compatível, e o método devolve true. Se rule especificar direitos não contidos na regra compatível, não é tomada qualquer ação relativamente a esses direitos. Se todos os direitos forem removidos da regra compatível, toda a regra é removida do objeto atual EventWaitHandleSecurity .

Importante

Embora possa especificar flags de herança e propagação para regras de acesso a eventos, ao criá-las com o AccessRuleFactory método, isso não é recomendado. Herança e propagação não têm significado para eventos nomeados, e tornam a manutenção das regras de acesso mais complicada.

Aplica-se a