MutexSecurity.RemoveAccessRule(MutexAccessRule) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정한 규칙과 사용자 및 AccessControlType(허용 또는 거부)이 같고 상속 및 전파 플래그가 호환되는 액세스 제어 규칙을 검색합니다. 그러한 규칙이 있으면 지정한 액세스 규칙에 포함된 권한이 규칙에서 제거됩니다.
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
매개 변수
- rule
- MutexAccessRule
검색할 사용자 및 MutexAccessRule을 비롯하여 일치하는 규칙(있다면)과 호환되어야 하는 상속 및 전파 플래그 집합을 지정하는 AccessControlType입니다. 발견된 경우 호환되는 규칙에서 제거할 권한을 지정합니다.
반환
호환 가능한 규칙이 있으면 true
이고, 그렇지 않으면 false
입니다.
예외
rule
이(가) null
인 경우
예제
다음 코드 예제를 사용 하는 방법을 보여 줍니다.는 RemoveAccessRule 개체의 규칙 MutexSecurity 에서 Allow 권한을 제거 하는 방법입니다. 또한 의 rule
다른 권한은 무시됨을 보여 집니다.
이 예제에서는 개체를 MutexSecurity 만들고 현재 사용자에 대한 다양한 권한을 허용하고 거부하는 규칙을 추가합니다. 허용되는 권한에는 , ReadPermissions및 Synchronize가 포함됩니다Modify. 그런 다음, 및 권한을 포함하여 ReadPermissionsTakeOwnership 현재 사용자에 대한 새 규칙을 만들고 메서드와 함께 RemoveAccessRule 해당 규칙을 사용하여 개체의 Allow 규칙 MutexSecurity 에서 제거 ReadPermissions 합니다. 의 불필요한 TakeOwnership 권한 rule
은 무시됩니다.
참고
이 예제에서는 보안 개체를 개체에 Mutex 연결하지 않습니다. 보안 개체를 연결하는 예제는 및 Mutex.SetAccessControl에서 Mutex.GetAccessControl 찾을 수 있습니다.
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
설명
현재 MutexSecurity 는 사용자와 AccessControlType 값 rule
이 같은 규칙을 검색합니다. 이러한 규칙을 찾을 수 없으면 아무 작업도 수행되지 않으며 메서드는 를 반환합니다 false
. 일치하는 규칙이 발견되면 상속 및 호환성 플래그가 에 rule
지정된 플래그와의 호환성을 확인합니다. 호환되는 규칙을 찾을 수 없으면 아무 작업도 수행되지 않으며 메서드는 를 반환합니다 false
. 호환 플래그가 있는 규칙을 발견하면 에 rule
지정된 권한이 호환되는 규칙에서 제거되고 메서드는 를 반환합니다 true
. 호환되는 규칙에 포함되지 않은 권한을 지정하는 경우 rule
해당 권한과 관련하여 아무 작업도 수행되지 않습니다. 호환되는 규칙에서 모든 권한이 제거되면 전체 규칙이 현재 MutexSecurity 개체에서 제거됩니다.
중요
뮤텍스 액세스 규칙에 대한 상속 및 전파 플래그를 지정할 수 있지만 메서드를 AccessRuleFactory 사용하여 만들면 권장되지 않습니다. 상속 및 전파는 명명된 뮤텍스에 의미가 없으며 액세스 규칙의 유지 관리가 더 복잡해집니다.
적용 대상
.NET