MutexSecurity.RemoveAccessRule(MutexAccessRule) 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 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::MutexAccessRule ^ rule);
public bool RemoveAccessRule(System.Security.AccessControl.MutexAccessRule rule);
override this.RemoveAccessRule : System.Security.AccessControl.MutexAccessRule -> bool
Public Function RemoveAccessRule (rule As MutexAccessRule) As Boolean
Parâmetros
- rule
- MutexAccessRule
A que especifica o utilizador e AccessControlType a procurar, e um conjunto de flags de herança e propagação que indicam que uma regra de correspondência, se encontradaMutexAccessRule, 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 MutexSecurity objeto. Também mostra que outros direitos rule são ignorados.
O exemplo cria um MutexSecurity 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 MutexSecurity objeto. A direita supérflua TakeOwnershiprule é ignorada.
Note
Este exemplo não associa o objeto de segurança a um Mutex objeto. Exemplos que anexam objetos de segurança podem ser encontrados em Mutex.GetAccessControl e Mutex.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.
MutexSecurity mSec = new MutexSecurity();
// Add a rule that grants the current user the
// right to enter or release the mutex and read the
// permissions on the mutex.
MutexAccessRule rule = new MutexAccessRule(user,
MutexRights.Synchronize | MutexRights.Modify
| MutexRights.ReadPermissions,
AccessControlType.Allow);
mSec.AddAccessRule(rule);
// Add a rule that denies the current user the
// right to change permissions on the mutex.
rule = new MutexAccessRule(user,
MutexRights.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 mutex, and
// take ownership of the mutex. 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 MutexAccessRule(user,
MutexRights.TakeOwnership |
MutexRights.ReadPermissions,
AccessControlType.Allow);
mSec.RemoveAccessRule(rule);
ShowSecurity(mSec);
}
private static void ShowSecurity(MutexSecurity security)
{
Console.WriteLine("\r\nCurrent access rules:\r\n");
foreach(MutexAccessRule 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.MutexRights);
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 MutexSecurity()
' Add a rule that grants the current user the
' right to enter or release the mutex, and to
' read its permissions.
Dim rule As New MutexAccessRule(user, _
MutexRights.Synchronize _
Or MutexRights.Modify _
Or MutexRights.ReadPermissions, _
AccessControlType.Allow)
mSec.AddAccessRule(rule)
' Add a rule that denies the current user the
' right to change permissions on the mutex.
rule = New MutexAccessRule(user, _
MutexRights.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 mutex, and
' take ownership of the mutex. 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 MutexAccessRule(user, _
MutexRights.TakeOwnership _
Or MutexRights.ReadPermissions, _
AccessControlType.Allow)
mSec.RemoveAccessRule(rule)
ShowSecurity(mSec)
End Sub
Private Shared Sub ShowSecurity(ByVal security As MutexSecurity)
Console.WriteLine(vbCrLf & "Current access rules:" & vbCrLf)
For Each ar As MutexAccessRule In _
security.GetAccessRules(True, True, GetType(NTAccount))
Console.WriteLine(" User: {0}", ar.IdentityReference)
Console.WriteLine(" Type: {0}", ar.AccessControlType)
Console.WriteLine(" Rights: {0}", ar.MutexRights)
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 MutexSecurity é 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 MutexSecurity .
Importante
Embora possa especificar flags de herança e propagação para regras de acesso mutex, ao criá-las com o AccessRuleFactory método, isso não é recomendado. Herança e propagação não têm significado para mutexes nomeados, e tornam a manutenção das regras de acesso mais complicada.