Process.Start 用户名是 'Everyone'?

Process.Start with username of 'Everyone'?

我想用某些权限有限的用户调用 Process.Start,因为 运行 程序可能包含恶意代码。这里我觉得Everyone应该先试一下才对,我觉得它没有任何关联的密码。

但是下面的代码会报错不正确的用户名或密码(当然用户名确实存在,所以看起来是关于密码):

var startInfo = new ProcessStartInfo("some_exe");
startInfo.WorkingDirectory = Environment.CurrentDirectory;
startInfo.UserName = "Everyone";
startInfo.Domain = "mydomain";
startInfo.UseShellExecute = false;
Process.Start(startInfo);

如果这不可能,我必须以某种方式动态创建一个具有完整 username/password 有限权限的用户帐户,以用于 Process.Start.

在 .NET core 中,我们不能使用 AppDomain 创建沙箱,这里唯一推荐的方法是尝试分支另一个具有 less/limited 特权的进程。

您还应指定域名,或 UPN 格式的用户名,user@DNS_domain_name,根据 MSDN。另外,必须设置WorkingDirectory

SIDEveryone不是用户,是一个特殊的系统SID(有点像组)。所以你不能用它来"run as"。

您需要专门为此目的创建一个用户。