Я нашел это решение здесь :
strComputer = "."
Set objWMIService = GetObject("winmgmts:{(Security)}\\" & _
strComputer & "\root\cimv2")
Set colEvents = objWMIService.ExecQuery _
("SELECT * FROM Win32_NTLogEvent WHERE LogFile = 'Security' AND " & _
"EventCode = 528 AND User = 'fabrikam\\kmyer'")
Wscript.Echo colEvents.Count
Просто замените значения на те, которые вы хотите.
Теперь это не Java, а код VB... Однако он, очевидно, использует интерфейс WMI, который вы могли бы использовать из вашей программы Java.Или вы можете сделать что-то уродливое и вызвать пакетный скрипт из Java (или запланированное задание) и прочитать его вывод, или использовать привязку.
Это, конечно, при условии, что вы хотите проверить это на компьютере пользователя,как подсказал твой вопрос.Если вы хотите рассчитывать входы в систему на более глобальном уровне и с разных компьютеров, вам нужно запросить Active Directory (или другой механизм, используемый сетевой инфраструктурой);связанная ветка также предлагает решения для этого.
Обновление:
Вы можете посмотреть блог Эрика Фицджеральда публикация в Отслеживание активности пользователей при входе в систему с помощью событий входа в систему , где у вас есть соответствующие коды (а также полные формулы для точного отслеживания времени).
Очевидно, вы хотите коды событий 4624 (LOGON) и 4634 (LOGOFF), а также другие, перечисленные там, если вы планируете использовать формулы Фицджеральда для расчета точного времени активности.