Определить, запущено ли приложение .net с runas /netonly

Можно ли определить, открыто ли приложение с помощью команды runas?

И как я могу определить, какой пользователь используется?

runas /netonly /user:DOM\usr "C:\App.exe"

person Tim    schedule 15.07.2016    source источник
comment
Проверьте, работает ли это для вас Run AS   -  person Nitesh Shaw    schedule 15.07.2016


Ответы (1)


Вы можете проверить пользователя, который запускает приложение, используя

System.Security.Principal.WindowsIdentity.GetCurrent()

Обратите внимание, что при использовании /netonly невозможно получить предоставленные учетные данные в локальном процессе. LSA позаботится об этом, и, насколько я знаю, вы просто не можете сделать это из своего локального процесса.

Есть несколько хороших объяснений, почему по этой ссылке , но причина в основном сводится к следующему: хотя предоставленные вами учетные данные хранятся, они даже не проверяются, пока вы не выполните какую-либо удаленную аутентификацию (с использованием SSPI), и они проверяются только на реальном удаленном компьютере.

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

runas /netonly /user:FAKE\fake something.exe

И учетные данные даже не будут проверяться... так что вы в основном не получаете токен авторизации, пока не выполните удаленную аутентификацию.

Единственное решение, которое я вижу, — это попытка запустить удаленный процесс, который вернет учетные данные пользователя.

person Jcl    schedule 15.07.2016
comment
Нет, это дает не пользователя DOM\usr. - person Tim; 15.07.2016
comment
@ Тим, да, я пропустил /netonly, посмотри мое обновление... Я не думаю, что есть способ сделать это - person Jcl; 15.07.2016
comment
Тем не менее это должно быть возможно. В моем приложении я тестировал его с помощью ServerManager.OpenRemote(ServerName). Этот метод способен обнаружить пользователя. - person Tim; 15.07.2016
comment
Да, если он использует SSPI, он запросит токен на удаленном компьютере, используя предоставленные вами учетные данные: затем вы можете выяснить пользователя на удаленном компьютере и вернуть его обратно на локальный, но это нужно сделать на удаленном комп, а не локальный процесс (опять же, насколько я знаю) - person Jcl; 15.07.2016