当安装程序(由 Inno Setup 等构建)启动进程时,该进程始终以管理员权限运行。- 因为安装程序已以管理员身份运行。
我想以当前用户的权限运行子进程。
有什么好办法吗?
当安装程序(由 Inno Setup 等构建)启动进程时,该进程始终以管理员权限运行。- 因为安装程序已以管理员身份运行。
我想以当前用户的权限运行子进程。
有什么好办法吗?
这个问题在 MSFT 内部每 3 或 4 个月就会出现一次。
安全人员给出的答案是:你不能。创建提升的进程令牌时,对令牌所做的更改无法撤消。
最好的办法是拥有一个启动器应用程序来运行提升的安装程序,然后在提升的安装程序完成后转身运行您的子进程。
作为启动器,您可以使用便携式 powershell 应用程序部署工具包 ( Link )。即使您以管理员身份启动了 powershell 应用程序部署工具包,您也可以编辑 deploy-application.ps1 并使用 Execute-ProcessAsUser 与当前用户一起运行应用程序/脚本
尽管这不是最佳实践(甚至不是良好实践),但可以从高级/管理员 IL 进程启动中级 IL 进程:
我可以确认此代码在启用和不启用 UAC 的 Vista 32 和 64 位上都有效。