我在Windows 7下使用Qt编写了一个应用程序。应用程序以普通用户权限启动,但我想获得管理员权限,因为我想修改注册表以自动启动应用程序。
我怎么能这样做?
答案 0 :(得分:6)
查看MSDN示例:UAC self-elevation (CSUACSelfElevation)
此外,维基百科实际上has a pretty good reference包括有关提升请求的ShellExecuteEx()“ runas ”动词和应用程序清单的信息。
答案 1 :(得分:4)
你应该在你的exe中嵌入正确的清单:
http://msdn.microsoft.com/en-us/library/windows/desktop/bb756929.aspx
我知道,您说过使用win32 API,但请考虑这种标准和推荐方式。
答案 2 :(得分:3)
您不需要管理员权限才能自动启动您的应用程序。
只需将相应的密钥写入:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
不需要管理员权限(与HKEY_LOCAL_MACHINE
下的相同路径不同)。
答案 3 :(得分:1)
请注意,程序运行时无法更改权限。必须使用正确的权限杀死并重新启动它。
答案 4 :(得分:1)
要自动启动应用程序,您不需要管理员权限!不要在HKLM(你需要管理员权限)下添加注册表项,而是使用HKCU,你没事。
答案 5 :(得分:-1)
要在HKLM中启动应用程序自动启动,需要管理权限。但是运行时应用程序的权限无法改变。
所以我创建了一个新的小应用程序,其任务只是编写注册表以使主应用程序自动启动。
主应用程序可以使用ShellExecuteEx调用此应用程序以要求管理权限。