2011-09-09 22 views
5

だから私は私のワークステーション上のレジストリに以下を追加するためにRegeditを使用見つけることができません。私は、レジストリキーを追加しましたが、私はそれがプログラム

HKLM \ SOFTWARE \ Fooの\バーが

バーはAK/Vを持っています"wtf"/"idk"のペア。私は、これらの変更がregeditを閉じてそれを再オープンすることによって "取られた"ことを確認しました。ねえ、彼らはまだそこにいる!うねり。

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Foo\Bar"); 

if (key != null) 
{ 
    var = key.GetValue("wtf").ToString(); 
} 

問題は、キーがnullです。

。 。 。

Registry.LocalMachine.OpenSubKey("Software").GetSubKeyNames() 

Fooは多くのSubKeyNamesの中には表示されません。

だから、私は明らかに何か愚かなことがありません。具体的に何が欠けていますか?

答えて

10

64ビットバージョンのWindowsで32ビットプロセスを実行している場合、32ビットプロセス(テストアプリケーション)は、64ビットregeditを使用して作成したキーを常に表示するとは限りません。

アプリケーションを64ビットとして実行するか、regeditを使用してパスHKLM\SOFTWARE\Wow6432Node\Foo\Barを使用して鍵を開こうとします。

MSDNで32-bit and 64-bit application data in the registryの詳細を読むことができます。

+0

あなたとReizeboschは正しいです。それはx64 OSですが、プログラムは32bitアプリケーションとして動作しており、Wow6432Nodeから読み込んでいます。 – peacedog

4

x64問題がありますか? x86プロセスでレジストリから読み込むと、Software \ Wow6432nodeにリダイレクトされます。

1

おそらく、あなたが書き込めるものだけを取得している可能性があります。読んでください。Registry.LocalMachine.OpenSubKey("Software", false).GetSubKeyNames()

+0

私は質問にそれを言及しなかったが、許可は5x5だった。私は鍵に書き込むことができた。 – peacedog

関連する問題