Как прочитать ключ HKEY_LOCAL_MACHINE \ Software \ MyApp, созданный на уровне StdUser? - PullRequest
4 голосов
/ 05 августа 2011

У меня есть C ++ Win32 DLL, которая вызывается приложением, запущенным на уровне requestExecutionLevel requireAdministrator в Windows7.

Как прочитать ключ HKEY_LOCAL_MACHINE \ Software \ MyApp, созданный на уровне StdUser?

Этот ключ был автоматически создан в HKEY_USERS \ _Classes \ VirtualStore \ MACHINE \ SOFTWARE \ Wow6432Node

Я нашел эту статью об этом , но он касается только выполненияпроцесс с внедрением кода.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 06 августа 2011

Вы не можете.

Вы говорите, что приложение StdUser попыталось записать параметр в HKLM\Software\MyApp и в итоге записало его в виртуализованное местоположение HKEY_USERS\<i><UserSID></i>_Classes\VirtualStore...`.Чтобы прочитать это, вы должны знать UserSID;если есть несколько пользователей, у каждого пользователя могут быть разные данные, записанные в этом ключе.


Виртуализация отключена для процессов, у которых requestedExecutionLevel в манифесте.См. Управление виртуализацией реестра , чтобы узнать, как можно изменить поведение виртуализации.

1 голос
/ 05 августа 2011

Вы можете попытаться установить привилегию TRegistry *reg=new TRegistry(KEY_WOW64_64KEY), если у вас 64-битная ОС. Если у вас 32-битная ОС, reg->OpenKey("Software") и вы автоматически перенаправлены на свой ключ, вы можете выполнять операции с этим ключом.

...