EventWaitHandleSecurity.RemoveAccessRule(EventWaitHandleAccessRule) 메서드

정의

지정한 액세스 규칙과 사용자 및 AccessControlType(허용 또는 거부)이 같고 상속 및 전파 플래그가 호환되는 액세스 제어 규칙을 검색합니다. 그러한 규칙이 있으면 지정한 액세스 규칙에 포함된 권한이 규칙에서 제거됩니다.

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

매개 변수

rule
EventWaitHandleAccessRule

검색할 사용자 및 EventWaitHandleAccessRule을 비롯하여 일치하는 규칙(있다면)과 호환되어야 하는 상속 및 전파 플래그 집합을 지정하는 AccessControlType입니다. 발견된 경우 호환되는 규칙에서 제거할 권한을 지정합니다.

반환

Boolean

호환 가능한 규칙이 있으면 true이고, 그렇지 않으면 false입니다.

예외

rule이(가) null인 경우

예제

다음 코드 예제에서는 개체의 규칙 EventWaitHandleSecurity 에서 권한을 제거 하는 메서드를 RemoveAccessRule Allow 사용 하는 방법을 보여 줍니다. 또한 다른 권한 rule 은 무시됨을 보여 집니다.

이 예제에서는 개체를 EventWaitHandleSecurity 만들고 현재 사용자에 대한 다양한 권한을 허용하고 거부하는 규칙을 추가합니다. 허용되는 권한에는 다음이 ReadPermissions포함Modify됩니다Synchronize. 그런 다음 현재 사용자에 대한 새 규칙(권한 포함 ReadPermissions TakeOwnership)을 만들고 해당 규칙을 메서드와 함께 RemoveAccessRule 사용하여 개체의 Allow 규칙 EventWaitHandleSecurity 에서 제거 ReadPermissions 합니다. 오른쪽 ruleTakeOwnership 무시됩니다.

참고

이 예제에서는 보안 개체를 개체에 EventWaitHandle 연결하지 않습니다. 보안 개체를 연결하는 예제는 다음에서 EventWaitHandle.GetAccessControl 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

설명

현재 EventWaitHandleSecurity 는 사용자와 값rule이 같은 AccessControlType 규칙을 검색합니다. 이러한 규칙을 찾을 수 없으면 아무 작업도 수행되지 않고 메서드가 반환됩니다 false. 일치하는 규칙이 발견되면 해당 상속 및 호환성 플래그가 지정된 플래그 rule와의 호환성을 확인합니다. 호환되는 규칙이 없으면 아무 작업도 수행되지 않고 메서드가 반환됩니다 false. 호환 플래그가 있는 규칙을 발견하면 지정된 rule 권한이 호환되는 규칙에서 제거되고 메서드가 반환됩니다 true. 호환되는 규칙에 포함되지 않은 권한을 지정하는 경우 rule 해당 권한과 관련하여 아무런 조치도 취하지 않습니다. 호환되는 규칙에서 모든 권한이 제거되면 현재 EventWaitHandleSecurity 개체에서 전체 규칙이 제거됩니다.

중요

이벤트 액세스 규칙에 대한 상속 및 전파 플래그를 지정할 수 있지만 메서드를 AccessRuleFactory 사용하여 만들면 권장되지 않습니다. 상속 및 전파는 명명된 이벤트에 아무런 의미가 없으며 액세스 규칙의 유지 관리를 더 복잡하게 만듭니다.

적용 대상