rdrahuldey Ответов: 1

Как получить имя пользователя, зарегистрированное в данный момент, из службы windows в .NET?


У меня есть служба Windows, которая нуждается в текущем зарегистрированном имени пользователя.

он корректно работает в windows 7, 8.1 и 10, но не работает в windows server 2008 R2.

Что я уже пробовал:

ManagementObjectSearcher searcher = new ManagementObjectSearcher ("выберите имя пользователя из Win32_ComputerSystem");
ManagementObjectCollection collection = searcher. Get();
string UserName = (string)коллекция.Бросание&ЛТ;"ManagementBaseObject и GT;().Во-Первых()["Имя Пользователя"];

CHill60

Что вы подразумеваете под "не работает" - бросает исключение? ничего не возвращает?
И разве к этой последней строке не следует добавить следующее? <ManagementBaseObject>().First()["UserName"];

rdrahuldey

да, последняя строка добавлена. Имя пользователя возвращается пустым. в windows 10 он показывает правильный вывод, но когда я запускаю эту службу windows на windows server 2008 R2, она возвращается пустой.

Dave Kreskowiak

Это зависит от того, что вы подразумеваете под "текущим зарегистрированным именем пользователя"? Вы говорите о человеке, который вошел в систему на консоли серверов? Люди, которые сопоставили диски или прошли проверку подлинности с ресурсами, совместно используемыми этим сервером? Что?

rdrahuldey

имя человека, который вошел в систему на сервере

Dave Kreskowiak

Хорошо, тогда зачем вам это нужно? Кто-то, вошедший в консоль сервера, должен быть редким событием.

1 Ответов

Рейтинг:
1

Matt McKinney

Разве вы не могли получить это из просмотра событий журнала безопасности? Например, Interactive / logon type 2? Я предполагал,что у вас тоже есть события выхода из системы...