Узнать имя пользователя текущего пользователя - когда несколько пользователей вошли в систему - PullRequest
1 голос
/ 07 августа 2009

"Пользователь A" вошел в систему Мое приложение распознает Environment.Username как "Пользователь A"

Теперь в Windows я нажимаю на Переключить пользователя ... «Пользователь Б» входит в систему

Процессы пользователя А еще работают Приложение, запущенное пользователем «A», все еще говорит, что Environment.Username - «пользователь A». Я хочу, чтобы приложение распознало, что в данный момент вошедший в систему пользователь (в настоящее время активный пользователь) имеет значение «Пользователь B»

Как мне это сделать?

Ответы [ 3 ]

4 голосов
/ 07 августа 2009

Нет активного пользователя, так как их может быть больше (Терминальный сервер)

Вы можете использовать GetSystemMetrics (SM_REMOTESESSION), чтобы проверить, является ли это "локальным" сеансом, и WTSGetActiveConsoleSessionId, чтобы получить идентификатор сеанса сеанса консоли (в настоящий момент зарегистрированный пользователь, когда вы его вызываете). Вы можете использовать WTSRegisterSessionNotification, чтобы получать уведомления, когда это изменения. ProcessIdToSessionId (GetCurrentProcess (), ...) сообщит вам идентификатор сеанса, в котором находится ваш процесс. Наконец, WTSQuerySessionInformation () предоставит вам информацию о конкретном сеансе.

3 голосов
/ 07 августа 2009
            ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\CIMV2", "SELECT UserName FROM Win32_ComputerSystem");

            foreach (ManagementObject queryObj in searcher.Get())
            {
                loggedOnUserName = queryObj["UserName"].ToString();
                loggedOnUserName = loggedOnUserName.Substring(loggedOnUserName.LastIndexOf('\\') + 1);
            }

Когда «Пользователь B» вошел в систему, приложение, запущенное под «Пользователем A», сообщает «Пользователь B» в loggedOnUserName.

Это то, что я искал. В любом случае, спасибо.

1 голос
/ 07 августа 2009

Вы определенно не найдете информацию на этом уровне - вы хотите перейти на API более низкого уровня, которые перечисляют вошедших в систему пользователей (которых может быть более одного).

Что-то вроде Как написать приложение, поддерживающее функцию быстрого переключения пользователей, с помощью Visual Basic .NET или Visual Basic 2005 в Windows XP ?

См. Также Архитектура быстрого переключения пользователей

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