Compartilhar via


EventWaitHandleAccessRule Classe

Definição

Representa um conjunto de direitos de acesso permitidos ou negados para um usuário ou grupo. Essa classe não pode ser herdada.

public ref class EventWaitHandleAccessRule sealed : System::Security::AccessControl::AccessRule
public sealed class EventWaitHandleAccessRule : System.Security.AccessControl.AccessRule
[System.Security.SecurityCritical]
public sealed class EventWaitHandleAccessRule : System.Security.AccessControl.AccessRule
type EventWaitHandleAccessRule = class
    inherit AccessRule
[<System.Security.SecurityCritical>]
type EventWaitHandleAccessRule = class
    inherit AccessRule
Public NotInheritable Class EventWaitHandleAccessRule
Inherits AccessRule
Herança
EventWaitHandleAccessRule
Atributos

Exemplos

O exemplo de código a seguir demonstra a criação e o uso de EventWaitHandleAccessRule objetos. O exemplo cria um EventWaitHandleSecurity objeto, adiciona regras que permitem e negam vários direitos para o usuário atual e exibe o par de regras resultante. O exemplo permite novos direitos para o usuário atual e exibe o resultado, mostrando que os novos direitos são mesclados com a regra existente Allow .

Observação

Este exemplo não anexa 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.
        EventWaitHandleAccessRule rule = new EventWaitHandleAccessRule(user, 
            EventWaitHandleRights.Synchronize | EventWaitHandleRights.Modify, 
            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);

        // Add a rule that allows the current user the 
        // right to read permissions on the event. This rule
        // is merged with the existing Allow rule.
        rule = new EventWaitHandleAccessRule(user, 
            EventWaitHandleRights.ReadPermissions, 
            AccessControlType.Allow);
        mSec.AddAccessRule(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, Synchronize


Current access rules:

        User: TestDomain\TestUser
        Type: Deny
      Rights: ChangePermissions

        User: TestDomain\TestUser
        Type: Allow
      Rights: Modify, ReadPermissions, 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.
        Dim rule As New EventWaitHandleAccessRule(user, _
            EventWaitHandleRights.Synchronize _
            Or EventWaitHandleRights.Modify, _
            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)

        ' Add a rule that allows the current user the 
        ' right to read permissions on the event. This rule
        ' is merged with the existing Allow rule.
        rule = New EventWaitHandleAccessRule(user, _
            EventWaitHandleRights.ReadPermissions, _
            AccessControlType.Allow)
        mSec.AddAccessRule(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, Synchronize
'
'
'Current access rules:
'
'        User: TestDomain\TestUser
'        Type: Deny
'      Rights: ChangePermissions
'
'        User: TestDomain\TestUser
'        Type: Allow
'      Rights: Modify, ReadPermissions, Synchronize

Comentários

A EventWaitHandleAccessRule classe é uma de um conjunto de classes que o .NET Framework fornece para gerenciar Windows segurança de controle de acesso em eventos nomeados do sistema. Para obter uma visão geral dessas classes e sua relação com as estruturas de controle de acesso Windows subjacentes, consulte EventWaitHandleSecurity.

Observação

Windows segurança do controle de acesso é significativa apenas para eventos nomeados do sistema. Se um EventWaitHandle objeto representar um evento local, o controle de acesso será irrelevante.

Para obter uma lista das regras aplicadas atualmente a um evento nomeado, use o EventWaitHandle.GetAccessControl método para obter um EventWaitHandleSecurity objeto e, em seguida, use seu GetAccessRules método para obter uma coleção de EventWaitHandleAccessRule objetos.

EventWaitHandleAccessRule os objetos não mapeiam um para um com entradas de controle de acesso na DACL (lista de controle de acesso discricionário) subjacente. Quando você obtém o conjunto de todas as regras de acesso para um evento, o conjunto contém o número mínimo de regras atualmente necessárias para expressar todas as entradas de controle de acesso.

Observação

As entradas de controle de acesso subjacentes mudam conforme você aplica e remove regras. As informações nas regras são mescladas, se possível, para manter o menor número de entradas de controle de acesso. Portanto, quando você obtém a lista atual de regras, ela pode não se parecer exatamente com a lista de todas as regras adicionadas.

Use EventWaitHandleAccessRule objetos para especificar os direitos de acesso para permitir ou negar a um usuário ou grupo. Um EventWaitHandleAccessRule objeto sempre representa acesso permitido ou acesso negado, nunca ambos.

Para aplicar uma regra a um evento do sistema nomeado, use o EventWaitHandle.GetAccessControl método para obter o EventWaitHandleSecurity objeto. Modifique o EventWaitHandleSecurity objeto usando seus métodos para adicionar a regra e, em seguida, use o EventWaitHandle.SetAccessControl método para reanexar o objeto de segurança.

Importante

As alterações feitas em um EventWaitHandleSecurity objeto não afetam os níveis de acesso do evento nomeado até que você chame o EventWaitHandle.SetAccessControl método para atribuir o objeto de segurança alterado ao evento nomeado.

EventWaitHandleAccessRule os objetos são imutáveis. A segurança de um evento é modificada usando os métodos da EventWaitHandleSecurity classe para adicionar ou remover regras; conforme você faz isso, as entradas de controle de acesso subjacentes são modificadas.

Construtores

EventWaitHandleAccessRule(IdentityReference, EventWaitHandleRights, AccessControlType)

Inicializa uma nova instância da classe EventWaitHandleAccessRule, especificando o usuário ou grupo ao qual a regra se aplica, os direitos de acesso e se estes são permitidos ou negados.

EventWaitHandleAccessRule(String, EventWaitHandleRights, AccessControlType)

Inicializa uma nova instância da classe EventWaitHandleAccessRule, especificando o nome do usuário ou do grupo ao qual a regra se aplica, os direitos de acesso e se eles são permitidos ou negados.

Propriedades

AccessControlType

Obtém o valor de AccessControlType associado a esse objeto AccessRule.

(Herdado de AccessRule)
AccessMask

Obtém a máscara de acesso para essa regra.

(Herdado de AuthorizationRule)
EventWaitHandleRights

Obtém os direitos permitidos ou negados pela regra de acesso.

IdentityReference

Obtém o IdentityReference ao qual essa regra se aplica.

(Herdado de AuthorizationRule)
InheritanceFlags

Obtém o valor de sinalizadores que determinam como a essa regra é herdada por objetos filhos.

(Herdado de AuthorizationRule)
IsInherited

Obtém um valor que indica se esta regra é definida explicitamente ou é herdada de um objeto de contêiner pai.

(Herdado de AuthorizationRule)
PropagationFlags

Obtém o valor dos sinalizadores de propagação, que determinam como a herança dessa regra é propagada a objetos filho. Esta propriedade é significativa somente quando o valor de enumeração InheritanceFlags não é None.

(Herdado de AuthorizationRule)

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também