レジストリキーを追加しましたが、プログラムで見つかりません
-
28-10-2019 - |
質問
そこで、Regeditを使用して、ワークステーションのレジストリに以下を追加しました。
hklm software foo bar
Barには、「WTF」/「IDK」のAK/Vペアがあります。私は、これらの変更がregeditを閉じて再開することで「取った」ことを確認しました。ねえ、彼らはまだそこにいます!うねり。
RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Foo\Bar");
if (key != null)
{
var = key.GetValue("wtf").ToString();
}
問題は、キーがnullです。
いつ。 。 。
Registry.LocalMachine.OpenSubKey("Software").GetSubKeyNames()
呼ばれていますが、Fooは多くのサブキナームに表示されません。
だから、私は明らかに愚かな何かを失っています。私は具体的に何が欠けていますか?
解決
64ビットバージョンのWindowsで32ビットプロセスを実行している場合、32ビットプロセス(テストアプリケーション)は、64ビットRegEditを使用して作成したキーを常に確認できるとは限りません。
アプリケーションを64ビットとして実行してみるか、Regeditを使用してパスを使用してキーを開きます HKLM\SOFTWARE\Wow6432Node\Foo\Bar
.
詳細を読むことができます レジストリ内の32ビットおよび64ビットアプリケーションデータ MSDNで。
他のヒント
x64の問題かもしれませんか? x86プロセスでレジストリから読み取ると、ソフトウェア wow6432nodeにリダイレクトされます。
読み取り専用のために開いてみてください Registry.LocalMachine.OpenSubKey("Software", false).GetSubKeyNames()
おそらくあなたはあなたが書くことができるものだけを手に入れているでしょう。
所属していません StackOverflow