MutexAccessRule 建構函式

定義

初始化 MutexAccessRule 類別的新執行個體。

多載

MutexAccessRule(IdentityReference, MutexRights, AccessControlType)

初始化 MutexAccessRule 類別的新執行個體,指定套用此規則的使用者或群組、存取權限,以及允許還是拒絕指定的存取權限。

MutexAccessRule(String, MutexRights, AccessControlType)

初始化 MutexAccessRule 類別的新執行個體,指定套用此規則的使用者或群組名稱、存取權限,以及允許還是拒絕指定的存取權限。

MutexAccessRule(IdentityReference, MutexRights, AccessControlType)

來源:
MutexSecurity.cs
來源:
MutexSecurity.cs
來源:
MutexSecurity.cs

初始化 MutexAccessRule 類別的新執行個體,指定套用此規則的使用者或群組、存取權限,以及允許還是拒絕指定的存取權限。

public:
 MutexAccessRule(System::Security::Principal::IdentityReference ^ identity, System::Security::AccessControl::MutexRights eventRights, System::Security::AccessControl::AccessControlType type);
public MutexAccessRule (System.Security.Principal.IdentityReference identity, System.Security.AccessControl.MutexRights eventRights, System.Security.AccessControl.AccessControlType type);
new System.Security.AccessControl.MutexAccessRule : System.Security.Principal.IdentityReference * System.Security.AccessControl.MutexRights * System.Security.AccessControl.AccessControlType -> System.Security.AccessControl.MutexAccessRule
Public Sub New (identity As IdentityReference, eventRights As MutexRights, type As AccessControlType)

參數

identity
IdentityReference

適用這項規則的使用者或群組。 必須是型別 SecurityIdentifier,或是像是可以轉換成型別 NTAccountSecurityIdentifier 的型別。

eventRights
MutexRights

MutexRights 值的位元組合,指定允許或拒絕的權限。

type
AccessControlType

其中一個 AccessControlType 值,指定允許還是拒絕權限。

例外狀況

eventRights 指定了無效的值。

-或-

type 指定了無效的值。

identitynull

-或-

eventRights 為零。

identity 既不是 SecurityIdentifier 型別,也不是可以轉換成 NTAccount 型別的型別 (例如 SecurityIdentifier)。

備註

若要藉由呼叫 、 或 方法) 等候 Mutex (,使用者必須具有 MutexRights.Synchronize 存取權。 WaitAllWaitAnyWaitOne 若要釋放 mutex,請呼叫 ReleaseMutex 方法,使用者必須具有 MutexRights.Modify 存取權。

適用於

MutexAccessRule(String, MutexRights, AccessControlType)

來源:
MutexSecurity.cs
來源:
MutexSecurity.cs
來源:
MutexSecurity.cs

初始化 MutexAccessRule 類別的新執行個體,指定套用此規則的使用者或群組名稱、存取權限,以及允許還是拒絕指定的存取權限。

public:
 MutexAccessRule(System::String ^ identity, System::Security::AccessControl::MutexRights eventRights, System::Security::AccessControl::AccessControlType type);
public MutexAccessRule (string identity, System.Security.AccessControl.MutexRights eventRights, System.Security.AccessControl.AccessControlType type);
new System.Security.AccessControl.MutexAccessRule : string * System.Security.AccessControl.MutexRights * System.Security.AccessControl.AccessControlType -> System.Security.AccessControl.MutexAccessRule
Public Sub New (identity As String, eventRights As MutexRights, type As AccessControlType)

參數

identity
String

套用這個規則的使用者或群組名稱。

eventRights
MutexRights

MutexRights 值的位元組合,指定允許或拒絕的權限。

type
AccessControlType

其中一個 AccessControlType 值,指定允許還是拒絕權限。

例外狀況

eventRights 指定了無效的值。

-或-

type 指定了無效的值。

eventRights 為零。

identitynull

-或-

identity 是零長度字串

-或-

identity 的長度超過 512 個字元。

範例

下列程式碼範例示範如何使用這個建構函式來建立 MutexAccessRule 物件。 此範例會 MutexSecurity 建立 物件、新增允許和拒絕目前使用者各種許可權的規則,並顯示產生的規則組。 此範例接著會允許目前使用者的新許可權,並顯示結果,顯示新許可權會與現有 Allow 規則合併。

注意

這個範例不會將安全性物件附加至 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.
        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

備註

若要藉由呼叫 、 或 方法) 等候 Mutex (,使用者必須具有 MutexRights.Synchronize 存取權。 WaitAllWaitAnyWaitOne 若要釋放 mutex,請呼叫 ReleaseMutex 方法,使用者必須具有 MutexRights.Modify 存取權。

這個建構函式相當於建立 NTAccount 物件,方法是傳遞 identityNTAccount.NTAccount(String) 建構函式,並將新建立 NTAccount 的物件傳遞至建 MutexAccessRule(IdentityReference, MutexRights, AccessControlType) 構函式。

適用於