EventWaitHandleSecurity.RemoveAccessRule(EventWaitHandleAccessRule) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
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.