EventWaitHandleAccessRule Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
- 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) |