2
RegistryKey localMachineRegistry = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,RegistryView.Registry64);
string[] list = localMachineRegistry.GetSubKeyNames();
RegistryKey key = localMachineRegistry.OpenSubKey(keyPath, false);
list = key.GetSubKeyNames();

私は64ビットOSを使用しています。私が実行しているプロセスは 32 ビットですが、レジストリ設定が wow64 領域にあることがわかっています。への呼び出しlocalMachineRegistry.GetSubKeyNames()は 32 ビット情報を返します。wow64 regedit を使用してキーを作成すると、への呼び出しは をlocalMachineRegistry.OpenSubKey()返しますnull

私が考えることができるのは、32ビットプロセスがRegistryView.Registry64を使用できないということだけですが、私はそれを読んでいません。

4

1 に答える 1

0

32ビットアプリケーションは「64ビット」レジストリから読み取ることができないという点であなたは正しいですWow6432Node.. これは、技術的には、64 ビット レジストリに 32 ビット プロセス (つまり 64 ビット DWORD) に収まらないデータが含まれている可能性があるためだと思われます。

于 2013-09-11T17:48:02.123 に答える