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"。
您需要专门为此目的创建一个用户。
我想用某些权限有限的用户调用 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"。
您需要专门为此目的创建一个用户。