0

次のようなコードがあります。

RegistryKey SOFTWARE = Registry.LocalMachine.OpenSubKey((
    from x in Registry.LocalMachine.GetSubKeyNames()
    where x == "SOFTWARE"
    select x).FirstOrDefault());
RegistryKey Allworx = SOFTWARE.OpenSubKey((
    from x in SOFTWARE.GetSubKeyNames()
    where x == "ProgramName"
    select x).FirstOrDefault());

これがコンパイルされそして実行され、そしてすべてのこと、問題は "ProgramName"がソフトウェアのサブキーのリストにないということです。私は現在regeditでそれを見ているので私はそれが存在することを知っています。 ProgramNameキーだけでなく、SOFTWAREキー全体を自分で完全に制御することを許可しました。

参考のために、コードとregeditの両方が私が見ていることに同意します

Computer
  L--HKEY_LOCAL_MACHINE
       L--SOFTWARE

この問題に加えて、SOFTWARE.getSubKeyNames()また、regeditには現れないたくさんの名前を返しています。これらがどこから来ているのかわからない、そして一般的に、私はなぜ私のプログラム名があるべきように表示されないのかについてもっと心配している。


  • 手動で確認/確認できますか。ProgramNameレジストリにある..?おそらくここで大文字と小文字を区別する問題が発生しています。FirstOrDefault()使用するFirst() FirstOrDefault()の代わりにFirstを使う理由 - MethodMan
  • 64ビットOS上で32ビット用にコンパイルすることによるレジストリのリダイレクト32ビットとしてコンパイルしていますか?キーはWow6432Nodeの下に存在しますか? - Blorgbeard
  • それはそれでした。 32/64ビットの違いについては考慮しませんでした。これを回答に含めると、正しいとマークされます。ありがとうございます。 - Russell Uhl
  • すばらしいです!答えを投稿しました。 - Blorgbeard

1 답변


3

あなたは遭遇していますレジストリリダイレクト。 64ビットWindowsは、32ビットプログラムから特定のレジストリ要求をサイレントにリダイレクトします。

64ビットプログラムとしてコンパイルするか、または64ビットビューを要求する鍵を開くと

リンクされた質問


関連する質問

最近の質問