Получить личность текущего вошедшего в систему пользователя, а не системной учетной записи - PullRequest
0 голосов
/ 09 октября 2009

У меня есть процесс, который выполняется в контексте безопасности локальной системной учетной записи. Как из C # как запустить (используя System.Diagnostics.Process.Start) процесс, который будет запускаться в контексте безопасности текущего вошедшего в систему пользователя, а не системной учетной записи?

Ответы [ 2 ]

1 голос
/ 09 октября 2009

Вам потребуется получить токен текущего пользователя, вошедшего в систему, и вызвать CreateProcessAsUser.При использовании Fast-User-Switching (FUS) помните, что на компьютере может быть зарегистрировано более одного пользователя, поэтому вам нужно выбрать, с каким пользователем вы хотите запустить процесс.

Для перечисления пользовательских сессий выможно использовать API WTSEnumerateSessions .Используйте это, чтобы найти текущие идентификаторы сессии.Затем вызовите WTSQueryUserToken, чтобы получить токен для текущего пользователя, вошедшего в систему.Используя этот токен, вы можете использовать CreateProcessAsUser.

К сожалению, вам нужно будет использовать P / Invoke для всех этих вызовов методов.Если у вас есть имя пользователя и пароль, вы можете просто использовать перегрузку System.Diagnostics.Process.Start ().

0 голосов
/ 09 октября 2009

Полагаю, вам нужно определить / оценить, какой сеанс вошел в систему локально - см. WTSEnumerateSessions / WTSQuerySessionInformation / WTSQueryUserToken и я думаю, что вы ограничены Win32 API, я не думаю, что это управляемый Кодовая оболочка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...