walterlv / BlogComments

3 stars 0 forks source link

post/start-process-with-lowered-uac-privileges #130

Open utterances-bot opened 1 year ago

utterances-bot commented 1 year ago

在 Windows 系统上降低 UAC 权限运行程序(从管理员权限降权到普通用户权限) - walterlv

在 Windows 系统中,管理员权限和非管理员权限运行的程序之间不能使用 Windows 提供的通信机制进行通信。对于部分文件夹(ProgramData),管理员权限创建的文件是不能以非管理员权限修改和删除的。 然而,一个进程运行之后启动的子进程,会继承当前进程的 UAC 权

https://blog.walterlv.com/post/start-process-with-lowered-uac-privileges.html

BluePointLilac commented 1 year ago

经过测试研究发现通过runas /trustlevel:0x20000方式实现的降权运行启动的新进程确实不是管理员进程了,但是跟普通权限正常启动一个进程还是有区别。比较容易的测试就是,新建一个支持拖拽文件的程序,以管理员身份调起这个进程是不支持拖拽的,通过C#代码用runas /trustlevel:0x20000的方式重新启动自己,仍然不支持拖拽。

另外我尝试一个程序反复分别以管理员身份和上述方法降权启动自己,会发现最后管理员启动无效了(原因未知)。

但是搜到了微软的一份代码,测试可用。