私はC#3.5アプリケーションのUserDataレジストリサブキーを取得しようとしていますので、起動する外部プログラムのインストール場所を調べることができます。Windows 7上でHKLM Software Microsoft Windows CurrentVersion Installer を開こうとしているときに "ResolveIOD"を取得していますか?
このようなものな操作:
RegistryKey installerKey = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Installer");
、その後
RegistryKey userDataKey = installerKey.OpenSubKey("UserData");
リターンはnullを。私が戻ってinstallerKey.GetSubKeyNames()
を呼び出して、Installer
の下にどのサブキー名が存在するかを調べると、サブ鍵の名前はResolveIOD
の1つしか返されません。私はこの鍵を見つけることができるだけを見つけることができませんでした。
regedit
はResolveIOD
鍵がそこにいる示していない、それは一つのキーが存在しているだけのことよりもはるかに多くのことを示している - UserData
、Folders
、Secure
などは全てそこではなくどちらかGetSubKeyNames()
によって返されます。
これは初めてレジストリハイブのインストーラセクションにアクセスしたので、間違ったことをしたことがあります。クライアントアプリケーションからこれらの(恐らく機密性の高い、セキュリティ上の)鍵を読むために私が要求しなければならない特別な許可がありますか、これは一般的にWindows 7上では容認できるものではありません。プログラムがどこにあるのか把握していますか?
これは他のレジストリの質問にも言及しているので、これは64ビットWindows上で32ビットアプリケーションとして実行されています。
これはおそらく互換モードで実行する必要があります。 HKLMはWin7で管理者固有のものです。おそらくHKCUを試してみてください。 – leppie