MutexSecurity.RemoveAccessRule メソッドとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > MutexSecurity.RemoveAccessRule メソッドの意味・解説 

MutexSecurity.RemoveAccessRule メソッド

メモ : このメソッドは、.NET Framework version 2.0 で新しく追加されたものです。

指定した規則と同じユーザーと AccessControlType (許可または拒否)、および互換性のある継承フラグと反映フラグが指定されたアクセス制御規則が検索されます。このような規則が見つかると、指定したアクセス規則に含まれる権限がその規則から削除されます。

名前空間: System.Security.AccessControl
アセンブリ: mscorlib (mscorlib.dll 内)
構文構文

Public Function RemoveAccessRule ( _
    rule As MutexAccessRule _
) As Boolean
Dim instance As MutexSecurity
Dim rule As MutexAccessRule
Dim returnValue As Boolean

returnValue = instance.RemoveAccessRule(rule)
public bool RemoveAccessRule (
    MutexAccessRule rule
)
public:
bool RemoveAccessRule (
    MutexAccessRule^ rule
)
public boolean RemoveAccessRule (
    MutexAccessRule rule
)
public function RemoveAccessRule (
    rule : MutexAccessRule
) : boolean

パラメータ

rule

検索対象のユーザーと AccessControlType、および一致する規則が見つかった場合にその規則と互換性のある継承フラグと反映フラグのセットを指定する MutexAccessRule。互換性のある規則が見つかった場合にその規則から削除する権限を指定します。

戻り値
互換性のある規則が見つかった場合は true。それ以外の場合は false。

例外例外
例外の種類条件

ArgumentNullException

rule が null 参照 (Visual Basic では Nothing) です。

解説解説

現在の MutexSecurity で、rule と同じユーザーおよび同じ AccessControlType 値が指定された規則が検索されます。そのような規則が見つからない場合は、何も行われません。メソッドは false を返します。一致する規則が見つかった場合は、規則の継承フラグおよび互換性フラグについて、rule で指定されたフラグとの互換性がチェックされます。互換性のある規則が見つからない場合は、何も行われません。メソッドは false を返します。互換性フラグを含む規則が見つかった場合、rule で指定された規則は互換性のある規則から削除され、メソッドは true を返します。rule が互換性のある規則に含まれていない権限を指定した場合、これらの権限に関する処理は実行されません。互換性のある規則からすべての権限が削除されると、現在の MutexSecurity オブジェクトから規則全体が削除されます。

メモ重要 :

AccessRuleFactory メソッドで継承フラグと反映フラグを作成することによってミューテックスのアクセス規則にこれらのフラグを指定できますが、この方法はお勧めできません。継承と反映は、名前付きミューテックスに対して無効です。また、これらのフラグを指定することによってアクセス規則の保守が複雑になります。

使用例使用例

RemoveAccessRule メソッドを使用して MutexSecurity オブジェクトの Allow 規則から権限を削除するコード例を次に示します。また、この例では、rule 内のその他の権限が無視されます。

この例では、MutexSecurity オブジェクトを作成し、現在のユーザーの各種権限を許可および拒否する規則を追加します。許可される権限は、Modify、ReadPermissions、および Synchronize です。さらに、この例では、ReadPermissions 権や TakeOwnership 権などの新しい規則を現在のユーザーに対して作成し、この規則と RemoveAccessRule メソッドを使用して MutexSecurity オブジェクト内の Allow 規則から ReadPermissions を削除します。rule 内の関係のない TakeOwnership 権限は無視されます。

メモメモ

この例では、セキュリティ オブジェクトが Mutex オブジェクトに割り当てられません。セキュリティ オブジェクトの割り当て例については、Mutex.GetAccessControl および Mutex.SetAccessControl のトピックを参照してください。

Imports System
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
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
 */
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
MutexSecurity クラス
MutexSecurity メンバ
System.Security.AccessControl 名前空間



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

MutexSecurity.RemoveAccessRule メソッドのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



MutexSecurity.RemoveAccessRule メソッドのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS