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



AddAccessRule メソッドは、rule と同じユーザーまたはグループおよび同じ AccessControlType が指定された規則を検索します。何も見つからない場合は、rule が追加されます。一致する規則が見つかった場合、rule 内の権限が既存の規則とマージされます。
別の継承フラグがある場合、規則をマージできません。たとえば、特定のユーザーについて、継承フラグを設定せずに読み取りアクセスを許可した場合、AddAccessRule を使用して、サブキーに対する継承 (InheritanceFlags.ContainerInherit) を指定してユーザーに書き込みアクセスを許可する規則を追加すると、これら 2 つの規則をマージできません。
異なる AccessControlType 値が指定された規則はマージされません。
規則は、権限を最も合理的な方法で表現します。たとえば、ユーザーに QueryValues、Notify、および ReadPermissions の各権限がある場合に、EnumerateSubKeys 権限を許可する規則を追加すると、そのユーザーは、ReadKey 権限のすべての構成要素を持つことになります。ユーザーの権限を照会すると、ReadKey 権が格納された規則が表示されます。同様に、EnumerateSubKeys 権限を削除すると、ReadKey 権限のその他の構成要素が再表示されます。

レジストリ アクセス規則を作成し、RegistrySecurity オブジェクトに追加するコード例を次に示します。また、アクセス権を許可する規則と拒否する規則は別々に保存され、同じ種類で互換性のある規則はマージされることも示します。
![]() |
---|
この例では、セキュリティ オブジェクトが RegistryKey オブジェクトに割り当てられません。セキュリティ オブジェクトの割り当て例については、Microsoft.Win32.RegistryKey.GetAccessControl および RegistryKey.SetAccessControl のトピックを参照してください。 |
継承フラグと反映フラグを示すコード例については、RegistryAccessRule クラスのトピックを参照してください。
Imports System Imports Microsoft.Win32 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 RegistrySecurity() ' Add a rule that grants the current user the ' right to read the key. Dim rule As New RegistryAccessRule(user, _ RegistryRights.ReadKey, _ AccessControlType.Allow) mSec.AddAccessRule(rule) ' Add a rule that denies the current user the ' right to change permissions on the Registry. rule = New RegistryAccessRule(user, _ RegistryRights.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 Registry. This ' rule is merged with the existing Allow rule. rule = New RegistryAccessRule(user, _ RegistryRights.WriteKey, _ AccessControlType.Allow) mSec.AddAccessRule(rule) ShowSecurity(mSec) End Sub Private Shared Sub ShowSecurity(ByVal security As RegistrySecurity) Console.WriteLine(vbCrLf & "Current access rules:" & vbCrLf) For Each ar As RegistryAccessRule In _ security.GetAccessRules(True, True, GetType(NTAccount)) Console.WriteLine(" User: {0}", ar.IdentityReference) Console.WriteLine(" Type: {0}", ar.AccessControlType) Console.WriteLine(" Rights: {0}", ar.RegistryRights) 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: ReadKey ' ' 'Current access rules: ' ' User: TestDomain\TestUser ' Type: Deny ' Rights: ChangePermissions ' ' User: TestDomain\TestUser ' Type: Allow ' Rights: SetValue, CreateSubKey, ReadKey
using System; using Microsoft.Win32; 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. RegistrySecurity mSec = new RegistrySecurity(); // Add a rule that grants the current user the // right to read the key. RegistryAccessRule rule = new RegistryAccessRule(user, RegistryRights.ReadKey, AccessControlType.Allow); mSec.AddAccessRule(rule); // Add a rule that denies the current user the // right to change permissions on the Registry. rule = new RegistryAccessRule(user, RegistryRights.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 Registry. This // rule is merged with the existing Allow rule. rule = new RegistryAccessRule(user, RegistryRights.WriteKey, AccessControlType.Allow); mSec.AddAccessRule(rule); ShowSecurity(mSec); } private static void ShowSecurity(RegistrySecurity security) { Console.WriteLine("\r\nCurrent access rules:\r\n"); foreach( RegistryAccessRule 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.RegistryRights); 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: ReadKey Current access rules: User: TestDomain\TestUser Type: Deny Rights: ChangePermissions User: TestDomain\TestUser Type: Allow Rights: SetValue, CreateSubKey, ReadKey */

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に収録されているすべての辞書からRegistrySecurity.AddAccessRule メソッドを検索する場合は、下記のリンクをクリックしてください。

- RegistrySecurity.AddAccessRule メソッドのページへのリンク