Process.Start с именем пользователя «Все»? - PullRequest
2 голосов
/ 19 марта 2019

Я хотел бы позвонить 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 ]

2 голосов
/ 19 марта 2019

SID Everyone - это не пользователь, это специальный системный SID (немного похожий на группу). Таким образом, вы не можете использовать его, чтобы «запустить как».

Вам необходимо создать пользователя специально для этой цели.

1 голос
/ 19 марта 2019

Также необходимо указать имя домена или имя пользователя в формате UPN, user @ DNS_domain_name , в соответствии с MSDN .Кроме того, WorkingDirectory должен быть установлен

...