2012-01-25 4 views
0

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

+3

Служба Windows запускается без входа в систему. Что вы ожидаете, если ни один пользователь не зарегистрировал его? Если вошло несколько человек? – Oded

+0

Что отображается на вкладке «Вход в систему» ​​при настройке службы? И что конкретно вы пробовали? – CoreTech

+0

@Oded Да, службы Windows запускаются без участия пользователя, но для службы Windows требуется учетная запись, под которой она будет запущена. Я считаю, что он ищет учетную запись, под которой работает служба Windows. –

ответ

-1

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

+2

Служба _may_ работает как «LocalService», но не обязательно. – Oded

+0

@Oded: «возвращает только учетную запись LocalService». Я думаю, что могу с уверенностью предположить, что сервис * работает под управлением LocalService – Novakov

0

Я использовал этот метод 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

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

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