我在 Windows 7 下使用 Qt 编写了一个应用程序。该应用程序以普通用户权限启动,但我想获得管理员权限,因为我想修改注册表以自动启动应用程序。
我怎么能这样做?
看一下 MSDN 示例:UAC 自我提升 (CSUACSelfElevation)
此外,Wikipedia 实际上有一个很好的参考资料,包括有关ShellExecuteEx() “ runas ”动词和提升请求的应用程序清单的信息。
您应该将正确的清单嵌入到您的 exe 中:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb756929.aspx。
我知道,你说使用 win32 API,但考虑这个标准和推荐的方式。
您不需要管理员权限即可自动启动您的应用程序。
只需将适当的键写入:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
它不需要管理员权限(与 下的相同路径不同HKEY_LOCAL_MACHINE
)。
要自动启动应用程序,您不需要管理员权限!不要在 HKLM(您需要管理员权限的地方)下添加注册表项,而是使用 HKCU 就可以了。
请注意,程序运行时不能更改权限。它必须被杀死并以正确的权限重新启动。
要在 HKLM 中自动启动应用程序,需要管理权限。但是应用程序的权限在运行时不能改变。
所以我做了一个新的小应用程序,它的任务只是写注册表来让主应用程序自动启动。
主应用程序可以使用 ShellExecuteEx 调用此应用程序以要求管理权限。