2012-10-23 63 views
2

有没有办法标记.EXE以请求以管理员身份运行?因此:标记.exe请求(不要求)以管理员身份运行

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

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

+0

不,但请参阅http://stackoverflow.com/a/10255024/886887 –

+0

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

回答

3

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

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

0

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

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

相关问题