【问题标题】:How to ask for Administrator privileges in Windows 7?如何在 Windows 7 中请求管理员权限?
【发布时间】:2012-06-26 00:51:14
【问题描述】:

我在 Windows 7 下使用 Qt 编写了一个应用程序。该应用程序以普通用户权限启动,但我想获得管理员权限,因为我想修改注册表以自动启动应用程序。

我该怎么做?

【问题讨论】:

标签: c++ winapi windows-7


【解决方案1】:

查看 MSDN 示例:UAC self-elevation (CSUACSelfElevation)

此外,Wikipedia 实际上是 has a pretty good reference,包括有关 ShellExecuteEx()runas”动词和提升请求的应用程序清单的信息。

【讨论】:

    【解决方案2】:

    您应该将正确的清单嵌入到您的 exe:

    http://msdn.microsoft.com/en-us/library/windows/desktop/bb756929.aspx.

    我知道,你说使用 win32 API,但考虑一下这个标准和推荐的方式。

    【讨论】:

      【解决方案3】:

      您确实不需要需要管理员权限来自动启动您的应用程序。

      只需将相应的键写入:

      HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
      

      不需要管理员权限(不像HKEY_LOCAL_MACHINE下的同一路径)。

      【讨论】:

      • 但只有登录的用户是安装该应用的用户,该应用才会启动。
      • @Jichao:这就是你 99% 的时间想要的。未经其他用户许可自动为其他用户启动的应用程序非常烦人。
      【解决方案4】:

      要自动启动应用程序,您不需要管理员权限!而不是在 HKLM 下添加注册表项(您需要管理员权限),使用 HKCU 就可以了。

      【讨论】:

        【解决方案5】:

        请注意,程序运行时不能更改权限。它必须被杀死并以正确的权限重新启动。

        【讨论】:

          【解决方案6】:

          要在 HKLM 中自动启动应用程序,需要管理员权限。但是应用程序的权限在运行时不能改变。

          所以我制作了一个新的小应用程序,其任务只是写入注册表以使主应用程序自动启动。

          主应用程序可以使用 ShellExecuteEx 调用此应用程序以要求管理权限。

          【讨论】:

          猜你喜欢
          • 2013-05-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-06
          • 2021-07-17
          • 2020-01-25
          • 2018-05-01
          • 2011-09-19
          相关资源
          最近更新 更多