标记.exe以请求(不要求)以管理员身份运行

时间:2012-10-23 23:52:03

标签: windows uac

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

  1. 如果UAC设置为runas admin而没有提示 - 它以admin身份运行。
  2. 如果用户无法运行admin(需要不同的登录名),请以用户身份运行。
  3. 如果出现提示,则提示用户。如果接受,请以管理员身份运行。
  4. 如果提示拒绝,请以用户身份运行。
  5. 我知道如何使用2个.exe程序执行此操作。但我想一个人做。该程序输入用户的许可证密钥。在HKLM中,如果应用程序具有管理员权限(因此所有用户都拥有密钥)。在HKCU,如果没有管理员权限。

2 个答案:

答案 0 :(得分:3)

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

有关如何提升自己的示例,请参阅this answer

答案 1 :(得分:0)

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

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