При использовании RegistryKey.GetSubKeyNames возникает исключение IOExeption. брошенный:
«Больше данных нет»
Вот соответствующий код:
string subKey = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Products";
RegistryKey key = Registry.LocalMachine.OpenSubKey( subKey );
string[] keys = key.GetSubKeyNames(); // throws IOException here
Характеристики
- Win7 x64
- VS 2010 SP1
- .NET 3.5
Исключение возникает при использовании типа сборки «Любой ЦП»; при использовании типа сборки "x86" код выполняется, как и ожидалось, но считывает ключи из "Wow6432Node" вместо пути SubKey, указанного в определенной выше строковой переменной subKey
.
Вопрос в следующем: как я могу прочитать все подключи в пути subKey
, определенном выше, в 64-разрядной системе (не Wow6432Node)?
Обратите внимание: когда я запускаю тот же код в другой 64-битной системе, код выполняется без ошибок. Я почти склонен думать, что у меня где-то поврежден ключ реестра? Если да, то какие идеи о том, как я могу найти поврежденный ключ?