Я пытаюсь получить доступ к подразделам реестра UserData в приложении C # 3.5, чтобы найти установленное расположение внешней программы, чтобы запустить его.
Делать что-то вроде этого:
RegistryKey installerKey = Registry.LocalMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Installer");
, а затем
RegistryKey userDataKey = installerKey.OpenSubKey("UserData");
возвращает ноль; если я вернусь и позвоню installerKey.GetSubKeyNames()
, чтобы выяснить, какие имена подразделов присутствуют в Installer
, он возвращает только одно имя подключа: ResolveIOD
. Я не смог найти то, что указывает только возможность найти этот ключ.
regedit
не показывает наличие ключа ResolveIOD
и показывает, что здесь присутствует гораздо больше, чем просто один ключ - UserData
, Folders
, Secure
и т. Д., И все они не возвращены либо на GetSubKeyNames()
.
Это мой первый доступ к чему-либо в разделе Установщика куста реестра, так что я, вероятно, сделал что-то не так. Есть ли какое-то специальное разрешение, которое я должен запросить, чтобы прочитать эти (возможно, чувствительные, с точки зрения безопасности) ключи из клиентского приложения, или это вообще неприемлемо для Windows 7, и я должен найти альтернативный способ выяснить, где находится программа?
Потому что я вижу это упомянутое в других вопросах реестра: это работает как 32-битное приложение на 64-битной Windows.