2016-12-02 2 views
0

Я хочу решить следующую проблему:Как проверить время входа пользователя в Windows?

Моя программа на C++ запускается автоматически при входе пользователя, но программа зависит от некоторых служб, которые не запускаются в течение нескольких минут на очень медленных компьютерах (часто) и не работают правильно.

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

Я видел запись (Winlogon) в средстве просмотра событий, но пользователь SYSTEM, и я хочу знать, для конкретного пользователя, который использует мою программу.

Есть ли простой способ проверить, когда пользователь, который начал свою программу, вошел в систему?

ответ

2

Когда ваша программа работает как часть входа пользователя в систему, он будет не запустить до этого пользователь вошел в систему.

Правильное решение здесь, чтобы проверить, были ли начаты зависимости. Используя диспетчер управления службами (OpenSCManager), запросите каждое состояние обслуживания (QueryServiceStatusEx). Разница между состояниями начиная и начато; вам нужно последнее.

1

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

Когда первый параметр равен NULL, функция относится к пользователям на локальном компьютере.

+0

Боюсь, что вы были введены в заблуждение по поводу плохой формулировки вопроса. Это касается входа в сервер. – MSalters

+0

Вероятно, этот ответ лучше подходит для моего вопроса, но корень моей проблемы лучше разрешен решением MSalters. Во всяком случае, у меня были проблемы с возвратом «2221» NetGetUserInfo(), и я нашел аналогичный вопрос по адресу http://stackoverflow.com/questions/3371807/get-current-users-last-logon/, но ответ был сложным для меня полностью понять или реализовать надежно для всех ситуаций. –

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