MutexSecurity.RemoveAccessRuleSpecific メソッド
アセンブリ: mscorlib (mscorlib.dll 内)



規則は、rule と完全に一致した場合にのみ削除されます。フラグも含め、すべての詳細情報が一致していることが必要です。同じユーザーと同じ AccessControlType が指定された他の規則は影響を受けません。
![]() |
---|
1 つの規則は、基になる 1 つ以上のアクセス制御エントリ (ACE: Access Control Entry) を表します。これらのエントリは、ユーザーのアクセス セキュリティ規則を変更するときに、必要に応じて分割または結合されます。そのため、規則の形式が、その規則の追加時の形式から変更されていることがあります。その場合は、RemoveAccessRuleSpecific メソッドでその規則を削除することはできません。 |

RemoveAccessRuleSpecific メソッドで規則を削除するには規則が完全に一致する必要があり、権限を許可および拒否する規則が互いに独立していることを表すコード例を次に示します。
この例では、MutexSecurity オブジェクトを作成し、現在のユーザーに関する各種の権限を許可または拒否する規則を追加して、それらの追加の規則を Allow アクセス規則にマージします。また、この例では、元の Allow 規則を RemoveAccessRuleSpecific メソッドに渡し、何も削除されていないことを示す結果を表示します。さらに、この例では、MutexSecurity オブジェクト内の Allow 規則に一致する規則を構築し、RemoveAccessRuleSpecific メソッドを使用してこの規則を削除します。
![]() |
---|
この例では、セキュリティ オブジェクトが 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. Dim ruleA As New MutexAccessRule(user, _ MutexRights.Synchronize _ Or MutexRights.Modify, _ AccessControlType.Allow) mSec.AddAccessRule(ruleA) ' Add a rule that denies the current user the ' right to change permissions on the mutex. Dim rule As 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) ' Attempt to remove the original rule (granting ' the right to enter or release the mutex) with ' RemoveAccessRuleSpecific. The removal fails, ' because the right to read the permissions on the ' mutex has been added to the rule, so that it no ' longer matches the original rule. Console.WriteLine("Attempt to use RemoveAccessRuleSpecific on the original rule.") mSec.RemoveAccessRuleSpecific(ruleA) ShowSecurity(mSec) ' Create a rule that grants the current user ' the right to enter or release the mutex, and ' to read permissions. Use this rule to remove ' the Allow rule for the current user. Console.WriteLine("Use RemoveAccessRuleSpecific with the correct rights.") rule = New MutexAccessRule(user, _ MutexRights.Synchronize _ Or MutexRights.Modify _ Or MutexRights.ReadPermissions, _ AccessControlType.Allow) mSec.RemoveAccessRuleSpecific(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 ' 'Attempt to use RemoveAccessRuleSpecific on the original rule. ' 'Current access rules: ' ' User: TestDomain\TestUser ' Type: Deny ' Rights: ChangePermissions ' ' User: TestDomain\TestUser ' Type: Allow ' Rights: Modify, ReadPermissions, Synchronize ' 'Use RemoveAccessRuleSpecific with the correct rights. ' 'Current access rules: ' ' User: TestDomain\TestUser ' Type: Deny ' Rights: ChangePermissions
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 ruleA = new MutexAccessRule(user, MutexRights.Synchronize | MutexRights.Modify, AccessControlType.Allow); mSec.AddAccessRule(ruleA); // Add a rule that denies the current user the // right to change permissions on the mutex. MutexAccessRule 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); // Attempt to remove the original rule (granting // the right to enter or release the mutex) with // RemoveAccessRuleSpecific. The removal fails, // because the right to read the permissions on the // mutex has been added to the rule, so that it no // longer matches the original rule. Console.WriteLine("Attempt to use RemoveAccessRuleSpecific on the original rule."); mSec.RemoveAccessRuleSpecific(ruleA); ShowSecurity(mSec); // Create a rule that grants the current user // the right to enter or release the mutex, and // to read permissions. Use this rule to remove // the Allow rule for the current user. Console.WriteLine("Use RemoveAccessRuleSpecific with the correct rights."); rule = new MutexAccessRule(user, MutexRights.Synchronize | MutexRights.Modify | MutexRights.ReadPermissions, AccessControlType.Allow); mSec.RemoveAccessRuleSpecific(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 Attempt to use RemoveAccessRuleSpecific on the original rule. Current access rules: User: TestDomain\TestUser Type: Deny Rights: ChangePermissions User: TestDomain\TestUser Type: Allow Rights: Modify, ReadPermissions, Synchronize Use RemoveAccessRuleSpecific with the correct rights. Current access rules: User: TestDomain\TestUser Type: Deny Rights: ChangePermissions */

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からMutexSecurity.RemoveAccessRuleSpecific メソッドを検索する場合は、下記のリンクをクリックしてください。

- MutexSecurity.RemoveAccessRuleSpecific メソッドのページへのリンク