次のようなコードがあります。
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には現れないたくさんの名前を返しています。これらがどこから来ているのかわからない、そして一般的に、私はなぜ私のプログラム名があるべきように表示されないのかについてもっと心配している。
あなたは遭遇していますレジストリリダイレクト。 64ビットWindowsは、32ビットプログラムから特定のレジストリ要求をサイレントにリダイレクトします。
64ビットプログラムとしてコンパイルするか、または64ビットビューを要求する鍵を開くと
ProgramName
レジストリにある..?おそらくここで大文字と小文字を区別する問題が発生しています。FirstOrDefault()
使用するFirst()
FirstOrDefault()の代わりにFirstを使う理由 - MethodMan