在模拟之后,回到默认的subprocess用户

我的应用程序通常由UserA作为UserB,使用System.Process.Start("app.exe", "UserB", "secret")

现在,我想app.exe产生额外的subprocess,但作为用户A,没有额外的权限UserB具有。

有没有办法做到这一点,而不是问UserA的密码?

我尝试使用没有凭据的System.Process.Start,以及调用cmd /C child.exe ,但这两种方法启动child.exe作为UserB。 我正在考虑一种方法来要求当前的shell为我启动subprocess,但是我什么也没find。

最简单的解决方案是启动应用程序可以创建自己的安全令牌的副本,并允许子进程继承它的句柄。 句柄值可以通过命令行或环境变量传递。

请注意,这有效地使用户B无限制地访问用户A的帐户。