2016-12-28 3 views
2

У меня есть процесс GUI, который работает как nt authority \ system. Я хотел бы запустить другой процесс (предпочтительно через класс Process) в качестве пользователя, который взаимодействует с процессом GUI. Если я просто позвоню Process.Start, новый процесс также будет запущен как nt authority \ system, но я хочу, чтобы это был домен \ пользователь.Запустить новый процесс как пользователь, взаимодействующий с UI

Редактировать: для уточнения, у меня нет имени пользователя или пароля текущего пользователя. Я просто хочу запустить процесс, как если бы пользователь запускал его сам, не спрашивая имя пользователя/пароль.

ответ

1

Используйте свойство StartInfo с действительными учетными данными.

Process proc = new Process(); 

proc.StartInfo.Domain = "YourDomain"; 
proc.StartInfo.UserName = "Username"; 
proc.StartInfo.Password = "YourPassword"; 
1

Вы можете сделать это:

Process proc = new System.Diagnostics.Process(); 
System.Security.SecureString ssPwd = new System.Security.SecureString(); 
proc.StartInfo.UseShellExecute = false; 
proc.StartInfo.FileName = "C:/YourPath/YourProcess.exe"; 
proc.StartInfo.Arguments = "Args"; //Arguments if any, otherwise delete this line 
proc.StartInfo.Domain = "domainname"; 
proc.StartInfo.UserName = "username"; 
proc.StartInfo.Password = "password"; 
proc.Start(); 
1
var psi = new ProcessStartInfo(); 
psi.Verb = "runas"; 
psi.FileName = "notepad.exe"; 
Process.Start(psi); 
0

«работает как» аргумент при вызове процесса с объектом процесса, запросит пароль пользователя.

Невозможно запустить процесс как учетную запись пользователя из учетной записи локальной системы.

Вы можете сделать обходной путь, чтобы решить вашу проблему

  1. начать Основной процесс «A», как зарегистрированного пользователя.

  2. Теперь запустите требуемый процесс «B» локальной системы с основного процесса (A).

  3. Теперь «A» будет отслеживать триггер процесса B, если необходимо запустить основной код (код, который должен запускаться в учетной записи пользователя). Если срабатывает триггер, может быть запущен требуемый код.

Мониторинг может быть сделано путем мониторинга (чтение) текстовый файл для каждой определенной длительности, и триггер может быть отправлен из B (процесс системной учетной записи), который пишет в текстовый файл. Можно использовать любой другой подход к мониторингу.

Смежные вопросы