Process。开头为“ Everyone”的用户名?

时间:2019-03-19 08:52:14

标签: c# process .net-core permissions privileges

我想与具有有限权限的某些用户调用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);

如果这不可能,那么我必须以某种方式动态地创建一个具有有限特权且具有完整用户名/密码的用户帐户,以供Process.Start使用。

在.NET核心中,我们不能使用AppDomain创建沙箱,这里唯一推荐的方法是尝试使用特权较少/受限的分支来分支另一个进程。

2 个答案:

答案 0 :(得分:2)

SID Everyone不是用户,它是一个特殊的系统SID(有点像一个组)。因此,您不能使用它来“运行为”。

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

答案 1 :(得分:1)

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