Возвращается «ResolveIOD» при попытке открыть HKLM \ Software \ Microsoft \ Windows \ CurrentVersion \ Installer \ в Windows 7? - PullRequest
1 голос
/ 14 января 2011

Я пытаюсь получить доступ к подразделам реестра 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.

1 Ответ

0 голосов
/ 14 января 2011

Во-первых, чтобы обеспечить доступ к 64-разрядному реестру, а не к изолированной программной среде Wow6432Node, используйте функцию RegOpenKeyEx с KEY_WOW64_64KEY (http://msdn.microsoft.com/en-us/library/ms724878%28v=vs.85%29.aspx), включенный в качестве одного из параметров доступа.

pinvoke.net имеет пример C #: http://www.pinvoke.net/default.aspx/advapi32/RegOpenKeyEx.html

Также обратите внимание, что при включенном UAC приложение без прав доступа в лучшем случае будет иметь доступ только для чтения к HKLM.

...