RegistryKey.GetSubKeyNames выбрасывает IOException - PullRequest
3 голосов
/ 18 апреля 2011

При использовании 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

Исключение выдается при использовании типа сборки "Any"ЦПУ";при использовании типа сборки "x86" код выполняется должным образом, но считывает ключи из "Wow6432Node" вместо пути SubKey, указанного в указанной выше строковой переменной subKey.

вопрос : как я могу прочитать все SubKeys в пути subKey, определенном выше, в 64-битной системе (не Wow6432Node)?

Примечание: когда я запускаю тот же код на другом64-битная система, код выполняется без ошибок.Я почти склонен думать, что у меня может быть поврежден раздел реестра где-нибудь?Если да, есть идеи, как найти поврежденный ключ?

1 Ответ

2 голосов
/ 18 апреля 2011

Пропуск соответствующий RegistryView на RegistryKey.OpenBaseKey().

Например:

RegistryKey tempRegKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64).OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SQL Server");
...