Получение имени учетной записи пользователя из службы Windows - PullRequest
0 голосов
/ 25 января 2012

Как получить текущее имя зарегистрированного пользователя из службы Windows? Учетная запись не локальная - это учетная запись домена. Все методы, которые я пробовал, были неэффективными и возвращали только учетную запись LocalService.

Ответы [ 2 ]

0 голосов
/ 12 сентября 2012

Я использовал этот метод WindowsIdentity.GetCurrent(False).Name в пространстве имен System.Security.Principal, и он работал.Я использую VS2010 и .NET Framework 4

Я добавил в свой сервис строку для записи следующей строки в текстовый файл:

String.Format("Currently logged on account: {0}", System.Security.Principal.WindowsIdentity.GetCurrent(False).Name)

Он вернул соответствующую учетную запись Windows, под которойслужба Windows работала.

При работе под учетной записью Local Service она возвращала NT AUTHORITY\LOCAL SERVICE

При работе под моей учетной записью домена dom\name.lastname возвращалась DOM\Name.Lastname

Вы можете указать учетную запись, под которой будет запускаться служба, на вкладке «Вход» диалогового окна свойств службы.

0 голосов
/ 25 января 2012

Ваш сервис работает в контексте пользователя LocalService.Если вы хотите получить имя пользователя, вошедшего в интерактивный сеанс / сеанс RDP (не может быть ни одного, ни одного, или нескольких зарегистрированных пользователей), вы должны использовать API служб терминалов, используя PInvoke.Вот отправная точка для этого: WTSEnumerateSessions

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