プログラムで、レジストリサブキーにアクセス許可を割り当てます。

手動で権限をレジストリキーに割り当てる方法を次に示します。

レジストリキーに権限を割り当てるには

  • レジストリエディタを開きます。権限を割り当てるキーをクリックします。

  • [編集]メニューの[権限]をクリックします。

  • 次のように、選択したキーにアクセスレベルを割り当てます。

  • ユーザーにキーの内容を読む権限を与えますが、保存する権限は与えません 読み取りの名前に対するアクセス許可の下でファイルに加えられたすべての変更は、 [許可]チェックボックスをオンにします。

  • ユーザーに権限のオープン、編集、所有権の付与を許可する [フルコントロール]の[権限の名前]で [許可]チェックボックスをオンにします。

  • 選択したキーに特別な権限を与えるには、をクリックします。 詳細。

だから私の質問は、プログラムでそれを行うことは可能でしょうか?たとえば、特定のサブキーに対するユーザのフルコントロール権限を付与したい場合、C#でコードを書くにはどうすればよいですか?どうもありがとう。

6

3 答え

Microsoft.Win32.RegistryKey key;
key = Microsoft.Win32.Registry.LocalMachine;
RegistrySecurity rs = new RegistrySecurity();
rs = key.GetAccessControl();
string currentUserStr = Environment.UserDomainName + "\\" + Environment.UserName;
rs.AddAccessRule(new RegistryAccessRule(currentUserStr, RegistryRights.WriteKey |  RegistryRights.ReadKey | RegistryRights.Delete | RegistryRights.FullControl, AccessControlType.Allow));

これにより、指定されたユーザーのアクセス権がレジストリキー 'key'に割り当てられます。

4
追加された

RegistrySecurity class is also useful here. So we can write the following code to apply access rules on the registry key for a current user.

RegistrySecurity rs = new RegistrySecurity();//it is right string for this code
string currentUserStr = Environment.UserDomainName + "\\" + Environment.UserName;
rs.AddAccessRule(new RegistryAccessRule(currentUserStr, RegistryRights.WriteKey | RegistryRights.ReadKey | RegistryRights.Delete | RegistryRights.FullControl, AccessControlType.Allow));
3
追加された
言語にとらわれない方法で "everyone"ユーザに権限を与えるには、 currentUserStr の代わりに new SecurityIdentifier(WellKnownSidType.WorldSid、null)を渡します。
追加された 著者 Uwe Keim,

It is about RegSetKeySecurity API, which is interfaced to from .NET code via RegistryKey.SetAccessControl, see Using RegSetKeySecurity to avoid registry redirection

1
追加された