【问题标题】:mark a .exe to request (not require) run as admin将 .exe 标记为请求(不需要)以管理员身份运行
【发布时间】:2012-10-14 00:15:42
【问题描述】:

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

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

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

【问题讨论】:

  • @HarryJohnston - 我没有想到这一点 - 提升自己。这很聪明。如果您输入它作为答案,我很乐意将其标记为这样。

标签: windows uac


【解决方案1】:

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

请参阅this answer,了解如何提升自己的示例。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-07
      • 1970-01-01
      • 2017-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多