分類:[C#]
2019/01/29(Tue) 11:02:48 編集(投稿者)
お世話になります。
C#でレジストリ登録しますが、特定のHKLMのサブキーへへレジストリの権限を追加(everyone)できずに困っています。
上手くいく端末もあり、できるものとできないものの切り分けができていない状態です。
何かヒントがあれば教示いただけますでしょうか。
対象OS:Windows10 x64 x64ベースプロセッサ
□ソースコード
using Microsoft.Win32;
using System;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Windows.Forms;
namespace ConsoleApp6 {
class Program {
static void Main(string[] args) {
RegistryKey regkey = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Hoge");
regkey.SetValue("InstallStatus", "Installed");
regkey.Close();
try {
SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
NTAccount account = sid.Translate(typeof(NTAccount)) as NTAccount;
using (RegistryKey regKey = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Hoge")) {
RegistrySecurity rs = regKey.GetAccessControl();
RegistryAccessRule rar = new RegistryAccessRule(
account.ToString(),
RegistryRights.FullControl,
InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit,
PropagationFlags.None,
AccessControlType.Allow);
rs.AddAccessRule(rar);
regKey.SetAccessControl(rs);
}
}
catch (Exception ex) {
MessageBox.Show(ex.ToString());
}
}
}
}
□ビルド
プラットフォームターゲット:Any CPU
32ビット優先
→
□出来たレジストリ
コンピューター\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Hoge
□エラーメッセージ
こちらを右クリックし、アクセス許可をクリックすると、
「Hogeのアクセス許可の順序が正しくありません。これによりいくつかのエントリが無効になる可能性があります。
- アクセス許可を正しく並べるには、[並べ替え]をクリックしてください。
- アクセス許可を変更しない場合は(表示は読み取り専用になります)、[キャンセル]をクリックしてください。」
よろしくお願いいたします。