如何从UAC提升的安装程序中作为普通用户启动程序

KZ.*_*KZ. 7 installer uac nsis

我正在编写NSIS安装程序,安装程序会根据需要在Windows 7/vista上"以管理员身份"升级.我需要在安装结束时运行已安装的程序,并且不希望使用与安装程序相同的权限启动它.

常规NSIS exec命令使用与安装程序相同的权限运行子进程.

有一个用于NSIS的UAC插件,但它上面的文档并不是很好,而且似乎是新的.我不想使用那个插件.

理想情况下,我正在寻找一个小的.exe我可以包括在没有UAC提升的情况下启动目标程序.这存在吗?

还有其他建议吗?

谢谢!

And*_*ers 4

你只有两个选择:

  • 取消选中并删除运行复选框(在 NT6+ 上运行时)
  • 使用UAC插件(它不是那么新,但使用起来痛苦,所以我建议你选择第一个选项)

没有可以使用的外部程序,因为不可能从提升的进程返回到原始用户(您可以尝试,并非常接近,但它不会在每种情况下都获得正确的用户)

  • @KZ:是的,不可能从提升的进程启动未提升的进程。唯一的解决方法是从未提升的进程开始,让它启动提升的进程,并在您想要启动某些内容时让提升的进程与未提升的进程进行通信。这就是 UAC 插件的作用。我已经使用它好几个月了,没有出现任何问题。 (3认同)
  • 选项 1 是我们选择的,但这并不“理想”。Microsoft 是否已使“降级”进程无法运行?没有 API 来实现这一点似乎很荒谬。我是 NSIS 的新手,不太了解它,所以我不完全确定 UAC 将如何与 MultiUser.nsh 脚本交互。所以,这是我不想处理的另一个复杂问题。 (2认同)