Как проверить, заблокирована ли моя рабочая станция? - PullRequest
1 голос
/ 12 января 2009

Может ли кто-нибудь помочь с фрагментом кода для проверки, заблокирована ли рабочая станция? Я попытался получить document.title, чтобы при блокировке рабочей станции он возвращал пустое значение для document.title. Это не работает.

Я кодирую wscript в vbscript, который находится в HTML.

Любая помощь с Javascript тоже подойдет.

Ответы [ 4 ]

2 голосов
/ 21 января 2011

Обычно вы должны использовать запрос wmi для просмотра журнала безопасности журнала событий. Однако в XP нет идентификаторов событий блокировки (vista / win7 / 2008 имеет идентификаторы событий блокировки и разблокировки).

XP есть событие разблокировки, хотя и событие. Большинство людей не осознают, что событие разблокировки включает ОБА события входа / выхода (идентификаторы событий 528/538, которые происходят практически в одно и то же время). Тип входа будет EventType 7, и именно так вы говорите, что кто-то разблокирует рабочую станцию. Тип входа 7 (вход или выход из системы) является событием разблокировки.

Для Vista / Win7 / 2008 новый идентификатор события блокировки рабочей станции равен 4800, а обновленный способ определения события разблокировки - это идентификатор события 4801. Однако исходным журналом в ОС Vista является не журнал безопасности, а Microsoft. Windows-Security-Auditing log.

Если у вас Win7, вам повезло, и вам нужно просто написать запрос wmi. ХР, я не вижу хорошего способа сделать это, если вы не хотите попробовать простой.

1 голос
/ 11 сентября 2013

Один индикатор, который работает (в Windows 7 SP1 с одним пользователем и без удаленного рабочего стола), - это проверка на наличие процесса LogonUI.exe, который присутствует только тогда, когда рабочая станция заблокирована. См. islocked.vbs, которому также может быть передано имя удаленного компьютера.

' Source:
'   http://community.spiceworks.com/scripts/show/1965-detect-screen-lock-status
Dim computer : computer = "."
If WScript.Arguments.Count = 1 Then
    computer = WScript.Arguments(0)
End If

Function IsWorkstationLocked( computer )
    Dim wmi : Set wmi = GetObject("winmgmts://" & computer & "/root/cimv2")
    Dim logonScreenCount : logonScreenCount = wmi.ExecQuery ("SELECT * FROM Win32_Process WHERE Name = 'LogonUI.exe'").Count

    IsWorkstationLocked = (logonScreenCount > 0)
End Function

If IsWorkstationLocked(computer) Then
    WScript.Quit(0)
Else
    WScript.Quit(1)
End If
0 голосов
/ 02 марта 2009

Если есть заставка, вы можете увидеть такой процесс, как 'logon.scr'. Это не будет работать, хотя, если у вас не работает заставка. С .Net это довольно легко, хотя использовать этот код.

Вы можете создать это как COM-объект и вызвать его из VBScript.

0 голосов
/ 12 января 2009

Не уверен, что вы можете проверить через скрипт. Большинство функций будут работать как положено. Одна вещь, которая не сработает, это отправка клавиш (имитация нажатия клавиш или движений мыши), но вы не можете сделать это из скрипта на HTML.
Возможно, вы можете проверить время простоя с момента последней активности пользователя?

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