1

独自のキーと値をレジストリに追加する UI を備えた単純な C# プログラムを作成しようとしました。プログラムが後で起動して再構成しないように、レジストリに追加していました。

RegistryKey rk =  LocalMachine.OpenSubKey("HKEY_LOCAL_MACHINE\\SOFTWARE\\AMC", RegistryKeyPremissionsCheck.ReadWriteSubTree, RegistryRights.ChangePermissions | RegistryRights.ReadKey);//Get the registry key desired with ChangePermissions Rights.
RegistrySecurity rs = new RegistrySecurity();
rs.AddAccessRule(new RegistryAccessRule("Administrator", RegistryRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow));//Create access rule giving full control to the Administrator user.
rk.SetAccessControl(rs); //Apply the new access rule to this Registry Key.
rk = LocalMachine.OpenSubKey("HKEY_LOCAL_MACHINE\\SOFTWARE\\AMC", RegistryKeyPremissionsCheck.ReadWriteSubTree, RegistryRights.FullControl); // Opens the key again with full control.
rs.SetOwner(new NTAccount("Administrator"));// Set the securitys owner to be Administrator
rk.SetAccessControl(rs);// Set the key with the changed permission so Administrator is now owner.

これは、Stackoverflow での質問から拾ったコードです。キーの追加/削除/変更中に権限の問題を解決しようとしていました。

何か不足していますか?

4

1 に答える 1

2

使用している最初の行RegistryKeyPremissionsCheckでは、まだ定義していない変数です。も同様LocalMachineです。行を書く

RegistryKey LocalMachine = Registry.LocalMachine;

コードの前にLocalMachine

開いているサブキーの下の値を編集する場合は、それをRegistryKeyPremissionsCheck.ReadWriteSubTree置き換えます。そうでない場合は、そこに置くことができますtruefalse

レジストリにキーを追加したいだけなら、私はただ使用します -

int MyNumber = 0; // Your value, doesnt have to be a number
Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\AMC", "My User Name", MyNumber);

そして値を取得する

object val = Registry.GetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\AMC", "My User Name", -1);

今、私はこのコードを入れました。あなたが正しい権限を持っていれば機能します(あなたは管理者です)

RegistryKey LocalMachine = Registry.LocalMachine;
         RegistryKey rk = LocalMachine.OpenSubKey("HKEY_LOCAL_MACHINE\\SOFTWARE\\AMC",
            RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.ChangePermissions | RegistryRights.ReadKey);//Get the registry key desired with ChangePermissions Rights.
         RegistrySecurity rs = new RegistrySecurity();
         rs.AddAccessRule(new RegistryAccessRule("Administrator", RegistryRights.FullControl, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.InheritOnly, AccessControlType.Allow));//Create access rule giving full control to the Administrator user.
         rk.SetAccessControl(rs); //Apply the new access rule to this Registry Key.
         rk = LocalMachine.OpenSubKey("HKEY_LOCAL_MACHINE\\SOFTWARE\\AMC",
            RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.FullControl); // Opens the key again with full control.
         rs.SetOwner(new NTAccount("Administrator"));// Set the securities owner to be Administrator
         rk.SetAccessControl(rs);
         int MyNumber = 0; // Your value, doesn't have to be a number
         rk.SetValue("username", MyNumber);// The username should by the dynamic part
于 2013-07-29T09:09:38.783 に答える