2012-06-24 2 views
1

Я пытаюсь найти SID из текущего вошедшего в систему пользователя на Win 7. Я используюПомнить SID пользователя в службе Windows, Win 7

string _CurrentUser = System.Security.Principal.WindowsIdentity.GetCurrent().User.Value.ToString(); 

Когда я запустить его в консоли приложения, я получаю пользователя SID как «S-1-5-21-670676956-2645971461-1681047478-500», но когда я помещаю вышеуказанную строку в службу Windows, я получаю другой SID, то есть «S-1-5-18». Я понимаю, что Служба Windows работает как другая учетная запись. Как получить идентификатор пользователя SID в службе Windows, как и тот, который я получаю в приложении консоли?

Кроме того, когда я запускаю тот же код в Win XP, службы Windows и консоль приложение дает один и тот же SID в отличие от Win 7.

+0

'S-1-5-18' является SID для учетной записи локальной системы. Это _is_ пользователь, с которым работает служба. – adrianbanks

+0

@adrianbanks Исправьте, но как я могу получить идентификатор пользователя SID в службе Windows (Win 7) – user1473039

+0

Какой «вошел пользователь»? Служба Windows может запускаться при отсутствии входа в систему. Она также может запускаться при входе в систему нескольких пользователей. Подумайте об этом как о запуске службы на своем «рабочем столе» (хотя она работает без головок), поэтому у нее нет понятия «текущий» зарегистрированный пользователь. – adrianbanks

ответ

0

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

Вот хорошая библиотека .NET, чтобы сделать это:

http://code.google.com/p/cassia/

+0

Это отличная вещь, мне придется пройти через ее раздаточный документ, чтобы я мог использовать его на законных основаниях. Я бы предпочел использовать стандартную/родную библиотеку .net для выполнения своей задачи. Есть идеи? – user1473039

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