Как найти имя пользователя в приложении, запущенном с правами администратора - PullRequest
4 голосов
/ 29 июня 2011

У меня сегодня проблема.У меня есть программа, которая запускается с Windows в качестве администратора.Проблема в том, что я хочу получить текущее имя пользователя текущего пользователя, а getUserNameEx (NameDisplay) дает мне имя администратора администратора ...

Я также пытаюсь получить эту информацию, просматривая сеансы входа в систему Windows, но у меня есть16 сеансов каждый раз, и трудно узнать хороший.

Большое спасибо, JM.

Ответы [ 3 ]

1 голос
/ 29 июня 2011

Программа, запущенная от имени Администратора, будет по-прежнему выполняться в сеансе входа пользователя в систему, поэтому вы можете перечислять сеансы входа в систему, пока не найдете соответствующий, а затем получить имя пользователя из этого.

0 голосов
/ 29 июня 2011

Вы по-прежнему сможете определить, кто является «владельцем» пользователя. Я провел небольшой тест здесь: вошел в систему на сервере терминалов Win2k8 с моей учетной записью без прав администратора и запустил командную строку (cmd.exe) в качестве администратора.user.

Используя Process Explorer для получения подробной информации о каждом процессе, я мог видеть, что пользователь, связанный с процессом cmd.exe, был моей учетной записью администратора, родительским процессом был explorer.exe (PID 5008), и когда янайдите пользователя, связанного с PID 5008, это была моя учетная запись без прав администратора.

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

0 голосов
/ 29 июня 2011

Я видел предложения, которые вы можете сделать это с помощью WMI - вы перечисляете Win32_Process экземпляров, а затем вызываете метод GetOwner , чтобы определить, кто является владельцем 'explorer.exe' ,

Не уверен, насколько хорошо это будет работать в настройках служб терминалов. Вы также должны убедиться, что explorer.exe - это действительно системный процесс, а не какая-либо другая локальная программа, которая просто имеет такое же имя EXE.

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