当一个安装程序(比如Inno Setup)启动一个进程时,该进程总是以管理员权限运行。这是因为安装程序已经以管理员身份运行。
我想以当前用户的权限运行子进程。
有什么好的方法吗?
当一个安装程序(比如Inno Setup)启动一个进程时,该进程总是以管理员权限运行。这是因为安装程序已经以管理员身份运行。
我想以当前用户的权限运行子进程。
有什么好的方法吗?
这个问题在微软公司内部每3到4个月就会出现一次。
安全团队给出的答案是:你做不到。当创建高权限进程令牌时,对令牌进行了无法撤销的更改。
你最好的选择是拥有一个启动器应用程序,运行你的高权限设置程序,然后当高权限设置程序完成后,再运行你的子进程。
虽然这不被认为是最佳实践(甚至不是好的实践),但从高/管理员IL进程启动中等IL进程是可能的:
我可以确认,这段代码在启用和禁用UAC的Vista 32位和64位系统上都可以正常工作。