2

有没有办法标记 .EXE 以请求它以管理员身份运行?以便:

  1. 如果 UAC 设置为 runas admin 而没有提示 - 它以管理员身份运行。
  2. 如果用户不能以管理员身份运行(需要不同的登录名),则以用户身份运行。
  3. 如果提示,则提示用户。如果接受,则以管理员身份运行。
  4. 如果提示被拒绝,则以用户身份运行。

我知道如何使用 2 个 .exe 程序来做到这一点。但我想用一个来做。该程序输入用户的许可证密钥。如果应用程序具有管理员权限(因此所有用户都拥有密钥),则在 HKLM 中。如果没有管理员权限,则在 HKCU。

4

2 回答 2

3

如果用户拒绝提升提示,则无法标记可执行文件以便在没有管理员权限的情况下继续运行。但是,进程可以尝试从具有提升权限的同一可执行文件中启动其自身的第二个副本,并将工作传递给新进程(如果它成功启动)或继续工作本身(如果没有)。

有关如何提升自己的示例,请参阅此答案。

于 2012-10-24T04:00:33.817 回答
0

您可以通过请求获得 1 和 2highestAvailable而不是requireAdmin. 不过,我不喜欢它,因为在整个应用程序的其余部分中,您可能需要测试以查看您是否被提升。

你不能得到#4。如果应用程序尝试启动,显示 UAC 对话框,并且用户拒绝 UAC,则应用程序不会启动。如果您的应用程序只有一部分需要提升,您最好将该部分移动到单独的 exe 并在需要提升的 exe 上放置清单,然后让主应用程序不需要它。

于 2012-12-11T14:28:07.050 回答