プログラムでC#を使用してレジストリ値を読み取るときに問題が発生しました。 私は多くのサイトを調べて助けてくれましたが、役に立たないものは見つかりませんでした。 VSを拡張モードで実行するとレジストリにアクセスして読み込めますが、昇格モードを解除してVSを実行すると問題が発生します。 は当初、私は以下のコードプログラムでレジストリにアクセスする際の問題
byte[] val = (byte[])Registry.GetValue("HKEY_LOCAL_MACHINE\\Software\\MyServices\\Identity\\ASPNET_SETREG", "ValueName", 0);
で開始これは昇格モードで正常に働いたが、非昇格モードで失敗しました。 はこれで問題が解決しない機能
[RegistryPermissionAttribute(SecurityAction.Demand,Unrestricted=true)]
の上に属性を置きました。次に試しました
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.LinkDemand, Flags = System.Security.Permissions.SecurityPermissionFlag.AllFlags)]
まだ動作しませんでした。 は、今私は...以下のコードを試してみました
RegistryKey key = Registry.LocalMachine;
RegistrySecurity rs = new RegistrySecurity();
rs = key.GetAccessControl();
string user = "DomainName\\Username";
rs.AddAccessRule(new RegistryAccessRule(user,
RegistryRights.ReadKey,
InheritanceFlags.None,
PropagationFlags.None,
AccessControlType.Allow));
key.SetAccessControl(rs);//Exception: "Attempted to perform an unauthorized operation."}
//RegistryKey key2 = key.OpenSubKey("Software\\MyServices\\Identity\\ASPNET_SETREG");
//RegistryKey key2 = key.OpenSubKey("Software\\MyServices\\Identity\\ASPNET_SETREG", false);
//RegistryKey key2 = key.OpenSubKey("Software\\MyServices\\Identity\\ASPNET_SETREG", RegistryKeyPermissionCheck.ReadSubTree);
RegistryKey key2 = key.OpenSubKey("Software\\MyServices\\Identity\\ASPNET_SETREG", RegistryKeyPermissionCheck.ReadSubTree, RegistryRights.ReadPermissions);
がSetAccessControlをコメントしてOpenSubkeyオプションのいずれかを使用して、私は例外を取得:「要求されたレジストリアクセスは許可されていません。」
私はひどく立ち往生しており、進めません。助けてください
「regedit」を使用して問題のレジストリキーに移動してみてください。キーを右クリックし、_Permissions_オプションを選択します。 – LiquidPony
言いたいことを忘れて、私は早くそれをやってみました! – Murthy
奇妙なことに、Creater Ownerは完全な制御権や読み取り権を持っていませんが、システム、管理者、ユーザーは完全な制御権と読み取り権を持っています。作成者の所有者には特別な権限しかありません。クリックして高度な...権限タブで、私は作成者の所有者の権限がサブキーだけに適用されるのを見るが、他の人はこのキーとサブキーに権限が適用される!これは私を驚かせる! – Murthy