MutexAccessRule Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Representerar en uppsättning åtkomsträttigheter som tillåts eller nekas för en användare eller grupp. Det går inte att ärva den här klassen.
public ref class MutexAccessRule sealed : System::Security::AccessControl::AccessRule
public sealed class MutexAccessRule : System.Security.AccessControl.AccessRule
[System.Security.SecurityCritical]
public sealed class MutexAccessRule : System.Security.AccessControl.AccessRule
type MutexAccessRule = class
inherit AccessRule
[<System.Security.SecurityCritical>]
type MutexAccessRule = class
inherit AccessRule
Public NotInheritable Class MutexAccessRule
Inherits AccessRule
- Arv
- Attribut
Exempel
Följande kodexempel visar hur objekt skapas och används MutexAccessRule . Exemplet skapar ett MutexSecurity objekt, lägger till regler som tillåter och nekar olika rättigheter för den aktuella användaren och visar det resulterande regelparet. Exemplet tillåter sedan nya rättigheter för den aktuella användaren och visar resultatet, vilket visar att de nya rättigheterna slås samman med den befintliga Allow regeln.
Note
Det här exemplet bifogar inte säkerhetsobjektet till ett Mutex objekt. Exempel som bifogar säkerhetsobjekt finns i Mutex.GetAccessControl och 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.
MutexAccessRule rule = new MutexAccessRule(user,
MutexRights.Synchronize | MutexRights.Modify,
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);
// Add a rule that allows the current user the
// right to read permissions on the mutex. This rule
// is merged with the existing Allow rule.
rule = new MutexAccessRule(user,
MutexRights.ReadPermissions,
AccessControlType.Allow);
mSec.AddAccessRule(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, 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 MutexSecurity()
' Add a rule that grants the current user the
' right to enter or release the mutex.
Dim rule As New MutexAccessRule(user, _
MutexRights.Synchronize _
Or MutexRights.Modify, _
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)
' Add a rule that allows the current user the
' right to read permissions on the mutex. This rule
' is merged with the existing Allow rule.
rule = New MutexAccessRule(user, _
MutexRights.ReadPermissions, _
AccessControlType.Allow)
mSec.AddAccessRule(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, Synchronize
'
'
'Current access rules:
'
' User: TestDomain\TestUser
' Type: Deny
' Rights: ChangePermissions
'
' User: TestDomain\TestUser
' Type: Allow
' Rights: Modify, ReadPermissions, Synchronize
Kommentarer
Note
Den här typen stöds bara på Windows.
klassen MutexAccessRule är en av en uppsättning klasser som .NET Framework tillhandahåller för att hantera Windows åtkomstkontrollsäkerhet för namngivna systemstumexer. En översikt över dessa klasser och deras relation till de underliggande Windows åtkomstkontrollstrukturerna finns i MutexSecurity.
Note
Windows åtkomstkontrollsäkerhet är bara meningsfullt för namngivna system mutexes. Om ett Mutex objekt representerar en lokal mutex är åtkomstkontroll irrelevant.
Om du vill hämta en lista över de regler som för närvarande tillämpas på en namngiven Mutex.GetAccessControl mutex använder du metoden för att hämta ett MutexSecurity objekt och använder sedan dess GetAccessRules metod för att hämta en samling MutexAccessRule objekt.
MutexAccessRule objekt mappar inte en-till-en med åtkomstkontrollposter i den underliggande diskretionära åtkomstkontrollistan (DACL). När du får uppsättningen med alla åtkomstregler för en mutex innehåller uppsättningen det minsta antal regler som för närvarande krävs för att uttrycka alla åtkomstkontrollposter.
Note
De underliggande åtkomstkontrollposterna ändras när du tillämpar och tar bort regler. Informationen i reglerna sammanfogas om möjligt för att behålla det minsta antalet åtkomstkontrollposter. När du läser den aktuella listan med regler kanske det inte ser exakt ut som listan över alla regler som du har lagt till.
Använd MutexAccessRule objekt för att ange åtkomsträttigheter för att tillåta eller neka en användare eller grupp. Ett MutexAccessRule objekt representerar alltid antingen tillåten åtkomst eller nekad åtkomst, aldrig båda.
Om du vill tillämpa en regel på en namngiven Mutex.GetAccessControl system mutex använder du metoden för att hämta MutexSecurity objektet. Ändra objektet MutexSecurity med hjälp av dess metoder för att lägga till regeln och använd Mutex.SetAccessControl sedan metoden för att koppla säkerhetsobjektet igen.
Important
Ändringar som du gör i ett MutexSecurity objekt påverkar inte åtkomstnivåerna för den namngivna mutexen Mutex.SetAccessControl förrän du anropar metoden för att tilldela det ändrade säkerhetsobjektet till den namngivna mutexen.
MutexAccessRule objekt är oföränderliga. Säkerheten för en mutex ändras med hjälp av klassmetoderna MutexSecurity för att lägga till eller ta bort regler. När du gör det ändras de underliggande åtkomstkontrollposterna.
Konstruktorer
| Name | Description |
|---|---|
| MutexAccessRule(IdentityReference, MutexRights, AccessControlType) |
Initierar en ny instans av MutexAccessRule klassen, anger den användare eller grupp som regeln gäller för, åtkomsträttigheterna och om de angivna åtkomsträttigheterna tillåts eller nekas. |
| MutexAccessRule(String, MutexRights, AccessControlType) |
Initierar en ny instans av MutexAccessRule klassen, anger namnet på den användare eller grupp som regeln gäller för, åtkomsträttigheterna och huruvida de angivna åtkomsträttigheterna tillåts eller nekas. |
Egenskaper
| Name | Description |
|---|---|
| AccessControlType |
Hämtar värdet som AccessControlType är associerat med det här AccessRule objektet. (Ärvd från AccessRule) |
| AccessMask |
Hämtar åtkomstmasken för den här regeln. (Ärvd från AuthorizationRule) |
| IdentityReference |
Hämtar den IdentityReference regel som den här regeln gäller för. (Ärvd från AuthorizationRule) |
| InheritanceFlags |
Hämtar värdet för flaggor som avgör hur den här regeln ärvs av underordnade objekt. (Ärvd från AuthorizationRule) |
| IsInherited |
Hämtar ett värde som anger om den här regeln uttryckligen anges eller ärvs från ett överordnat containerobjekt. (Ärvd från AuthorizationRule) |
| MutexRights |
Hämtar de rättigheter som tillåts eller nekas av åtkomstregeln. |
| PropagationFlags |
Hämtar värdet för spridningsflaggor som avgör hur arv av den här regeln sprids till underordnade objekt. Den här egenskapen är bara betydande när värdet för InheritanceFlags uppräkningen inte Noneär . (Ärvd från AuthorizationRule) |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |