MutexAccessRule MutexAccessRule MutexAccessRule MutexAccessRule Class

定義

ユーザーまたはグループに許可されたアクセス権セットまたは拒否されたアクセス権セットを表します。Represents a set of access rights allowed or denied for a user or group. このクラスは継承できません。This class cannot be inherited.

public ref class MutexAccessRule sealed : System::Security::AccessControl::AccessRule
[System.Security.SecurityCritical]
public sealed class MutexAccessRule : System.Security.AccessControl.AccessRule
type MutexAccessRule = class
    inherit AccessRule
Public NotInheritable Class MutexAccessRule
Inherits AccessRule
継承
属性

次のコード例は、オブジェクトのMutexAccessRule作成と使用方法を示しています。The following code example demonstrates the creation and use of MutexAccessRule objects. この例ではMutexSecurity 、オブジェクトを作成し、現在のユーザーに対してさまざまな権限を許可および拒否するルールを追加し、結果として得られるルールのペアを表示します。The example creates a MutexSecurity object, adds rules that allow and deny various rights for the current user, and displays the resulting pair of rules. 次に、現在のユーザーに対して新しい権限を許可し、その結果を表示して、新しい権限がAllow既存のルールとマージされていることを示します。The example then allows new rights for the current user and displays the result, showing that the new rights are merged with the existing Allow rule.

注意

この例では、 Mutexオブジェクトにセキュリティオブジェクトをアタッチしません。This example does not attach the security object to a Mutex object. セキュリティオブジェクトをアタッチする例についてMutex.GetAccessControlMutex.SetAccessControl、「」および「」を参照してください。Examples that attach security objects can be found in Mutex.GetAccessControl and 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

注釈

MutexAccessRuleクラスは、名前付きシステムミューテックスで Windows アクセス制御セキュリティを管理するために .NET Framework が提供するクラスのセットの1つです。The MutexAccessRule class is one of a set of classes that the .NET Framework provides for managing Windows access control security on named system mutexes. これらのクラスの概要と、基になる Windows アクセス制御構造との関係についMutexSecurityては、「」を参照してください。For an overview of these classes, and their relationship to the underlying Windows access control structures, see MutexSecurity.

注意

Windows アクセス制御セキュリティは、名前付きシステムミューテックスに対してのみ意味があります。Windows access control security is meaningful only for named system mutexes. Mutexオブジェクトがローカルミューテックスを表している場合、アクセス制御は無関係です。If a Mutex object represents a local mutex, access control is irrelevant.

名前付きミューテックスに現在適用されている規則の一覧を取得するMutex.GetAccessControlには、メソッドMutexSecurityを使用してオブジェクトをGetAccessRules取得し、そのメソッドをMutexAccessRule使用してオブジェクトのコレクションを取得します。To get a list of the rules currently applied to a named mutex, use the Mutex.GetAccessControl method to get a MutexSecurity object, and then use its GetAccessRules method to obtain a collection of MutexAccessRule objects.

MutexAccessRuleオブジェクトは、基になる随意アクセス制御リスト (DACL) のアクセス制御エントリと一対一でマップされません。MutexAccessRule objects do not map one-to-one with access control entries in the underlying discretionary access control list (DACL). ミューテックスのすべてのアクセス規則のセットを取得すると、そのセットには、すべてのアクセス制御エントリを表すために現在必要な規則の最小数が含まれます。When you get the set of all access rules for a mutex, the set contains the minimum number of rules currently required to express all the access control entries.

注意

ルールを適用および削除すると、基になるアクセス制御エントリが変わります。The underlying access control entries change as you apply and remove rules. 可能であれば、ルール内の情報を結合して、アクセス制御エントリの最小数を維持します。The information in rules is merged if possible, to maintain the smallest number of access control entries. したがって、現在のルールの一覧を読むと、追加したすべてのルールの一覧とまったく同じように表示されない場合があります。Thus, when you read the current list of rules, it might not look exactly like the list of all the rules you have added.

オブジェクトMutexAccessRuleを使用して、ユーザーまたはグループに対して許可または拒否するアクセス権を指定します。Use MutexAccessRule objects to specify access rights to allow or deny to a user or group. オブジェクトMutexAccessRuleは常に、許可されたアクセスまたは拒否されたアクセスのいずれかを表します。A MutexAccessRule object always represents either allowed access or denied access, never both.

名前付きシステムミューテックスに規則を適用するには、 Mutex.GetAccessControlメソッドを使用しMutexSecurityてオブジェクトを取得します。To apply a rule to a named system mutex, use the Mutex.GetAccessControl method to get the MutexSecurity object. 規則を追加するメソッドを使用してMutex.SetAccessControl オブジェクトを変更し、メソッドを使用してセキュリティオブジェクトを再アタッチします。MutexSecurityModify the MutexSecurity object by using its methods to add the rule, and then use the Mutex.SetAccessControl method to reattach the security object.

重要

MutexSecurityオブジェクトに対して行った変更は、 Mutex.SetAccessControlメソッドを呼び出して、変更されたセキュリティオブジェクトを名前付きミューテックスに割り当てるまで、名前付きミューテックスのアクセスレベルには影響しません。Changes you make to a MutexSecurity object do not affect the access levels of the named mutex until you call the Mutex.SetAccessControl method to assign the altered security object to the named mutex.

MutexAccessRuleオブジェクトは変更できません。MutexAccessRule objects are immutable. ミューテックスのセキュリティは、 MutexSecurityクラスのメソッドを使用して変更し、規則を追加または削除します。これを行うと、基になるアクセス制御エントリが変更されます。Security for a mutex is modified using the methods of the MutexSecurity class to add or remove rules; as you do this, the underlying access control entries are modified.

注意

同期オブジェクトのセキュリティは、Windows 98 または Windows Millennium Edition ではサポートされていません。Security on synchronization objects is not supported for Windows 98 or Windows Millennium Edition.

コンストラクター

MutexAccessRule(IdentityReference, MutexRights, AccessControlType) MutexAccessRule(IdentityReference, MutexRights, AccessControlType) MutexAccessRule(IdentityReference, MutexRights, AccessControlType) MutexAccessRule(IdentityReference, MutexRights, AccessControlType)

規則を適用するユーザーまたはグループ、アクセス権、および指定したアクセス権を許可するかどうかを指定して、MutexAccessRule クラスの新しいインスタンスを初期化します。Initializes a new instance of the MutexAccessRule class, specifying the user or group the rule applies to, the access rights, and whether the specified access rights are allowed or denied.

MutexAccessRule(String, MutexRights, AccessControlType) MutexAccessRule(String, MutexRights, AccessControlType) MutexAccessRule(String, MutexRights, AccessControlType) MutexAccessRule(String, MutexRights, AccessControlType)

規則を適用するユーザーまたはグループの名前、アクセス権、および指定したアクセス権を許可するかどうかを指定して、MutexAccessRule クラスの新しいインスタンスを初期化します。Initializes a new instance of the MutexAccessRule class, specifying the name of the user or group the rule applies to, the access rights, and whether the specified access rights are allowed or denied.

プロパティ

AccessControlType AccessControlType AccessControlType AccessControlType

この AccessControlType オブジェクトに関連付けられている AccessRule 値を取得します。Gets the AccessControlType value associated with this AccessRule object.

(Inherited from AccessRule)
AccessMask AccessMask AccessMask AccessMask

この規則のアクセス マスクを取得します。Gets the access mask for this rule.

(Inherited from AuthorizationRule)
IdentityReference IdentityReference IdentityReference IdentityReference

この規則を適用する IdentityReference を取得します。Gets the IdentityReference to which this rule applies.

(Inherited from AuthorizationRule)
InheritanceFlags InheritanceFlags InheritanceFlags InheritanceFlags

この規則を子オブジェクトが継承する方法を決定するフラグの値を取得します。Gets the value of flags that determine how this rule is inherited by child objects.

(Inherited from AuthorizationRule)
IsInherited IsInherited IsInherited IsInherited

この規則を明示的に設定するか、または親コンテナー オブジェクトから継承するかを指定する値を取得します。Gets a value indicating whether this rule is explicitly set or is inherited from a parent container object.

(Inherited from AuthorizationRule)
MutexRights MutexRights MutexRights MutexRights

アクセス規則で許可されたアクセス権または拒否されたアクセス権を取得します。Gets the rights allowed or denied by the access rule.

PropagationFlags PropagationFlags PropagationFlags PropagationFlags

反映フラグの値を取得します。このフラグから、この規則を子オブジェクトに反映させる方法を判断します。Gets the value of the propagation flags, which determine how inheritance of this rule is propagated to child objects. このプロパティは、InheritanceFlags 列挙体の値が None でない場合にのみ重要です。This property is significant only when the value of the InheritanceFlags enumeration is not None.

(Inherited from AuthorizationRule)

メソッド

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

適用対象

こちらもご覧ください