@echo off
pushd "%__AppDir__%"
title <nul & title ..\%~nx0
setlocal EnableDelayedExpansion
set "_Reg_Key=HKCU\Control Panel\Desktop"
:loop
for /f skip^=2tokens^=2* %%i in (
';2^>^&1 reg.exe query "!_Reg_Key!" /v SCRNSAVE.EXE
')do if /i "%%~xj" == ".scr" (set "_scr_svr=%%~nxj") else (
echo/[ !date! ^| !time:~0,8! ] Screen Saver: Disable " - - - - -!"
rem./ With ScreenSaver is disabled no status is need && goto:next
)
for /f skip^=2tokens^=2* %%i in (
';2^>nul reg query "!_Reg_Key!" /v ScreenSaveActive')do if %%j equ 1 (
2>nul tasklist.exe/svc /fo list|find.exe/i "!_scr_svr!">nul && (
echo/[ !date! ^| !time:~0,8! ] Screen Saver: Running "!_scr_svr!"
) || (
echo/[ !date! ^| !time:~0,8! ] Screen Saver: Enabled "!_scr_svr!"
echo/[ !date! ^| !time:~0,8! ] Screen Saver: Stopped "!_scr_svr!")
)
:next
2>nul tasklist.exe/svc /fo list|find.exe/i "LogonUI.exe" >nul && (
echo/[ !date! ^| !time:~0,8! ] Work Station: Locked "!ComputerName!"
) || echo/[ !date! ^| !time:~0,8! ] Work Station: Logged "!ComputerName!"
<con: set "_scr_svr=" & >nul timeout/t 10 /nobreak & goto :Loop
1. Используйте Reg Query
, чтобы узнать, включена ли в данный момент экранная заставка включена.
for /f skip^=2tokens^=2* %%i in (
';2^>nul reg query "!_Reg_Key!" /v ScreenSaveActive')do if %%j equ 1 (
2. Если экранная заставка в настоящее время включена, используйте дополнительный Reg Query
, чтобы получить и сохранить The_Name + .Extension
3. Избегайте частичной строки в | find ".scr"
и используйте find /i "The_Full_File_Name.scr"
для нечувствительного к регистру и для совпадений some_name.scr ≠≠ Some_Name.SCR
и some_name.scr == Some_Name.SCR
.
Примечание 1 При использовании tasklist
для списка задач с |find ".scr"
любой строкой, присутствующей в имени, которая также содержит строку .str
strong> (только строчные буквы), это также будет указано независимо от того, запущена или нет заставка.
Примечание 2 Если длина символов в имени screen_saver_long_name.scr (включая расширение) больше 25 с tasklist | find ".src"
, вы никогда не отфильтруете/найдёте этот файл , потому что tasklist
(без /flag
) имеет в выводе только 26 символов (, заканчивающихся на.)
Примечания:3 Для процесса списка, в котором запущена экранная заставка с именем, например Security Screensaver NG.scr
, используйте tasklist /svc /fo list
4. Используйте цикл и следите за любыми изменениями, которые могут произойти в любое время в процессе цикла, постоянно запрашивая значение реестра.
Возможный статус и выходы:
- Экранная заставка включена и не запущена, но пользователь вошел в систему:
[ Sun 12/27/2020 | 23:26:17 ] Screen Saver: Enabled "Fliqlo.scr"
[ Sun 12/27/2020 | 23:26:17 ] Screen Saver: Stopped "Fliqlo.scr"
[ Sun 12/27/2020 | 23:26:17 ] Work Station: Logged "LAME_SLUG"
- Экранная заставка включена и работает, но рабочая станция заблокирована:
[ Sun 12/27/2020 | 27:09:07 ] Screen Saver: Enabled "Fliqlo.scr"
[ Sun 12/27/2020 | 27:09:07 ] Screen Saver: Running "Fliqlo.scr"
[ Sun 12/27/2020 | 27:09:07 ] Work Station: Locked "LAME_SLUG"
- Заставка включена, не работает, но пользователь вошел в систему:
[ Sun 12/27/2020 | 25:26:21 ] Screen Saver: Enabled "Fliqlo.scr"
[ Sun 12/27/2020 | 25:26:21 ] Screen Saver: Running "Fliqlo.scr"
[ Sun 12/27/2020 | 25:26:21 ] Work Station: Logged "LAME_SLUG"
- Экранная заставка включена и не запущена, рабочая станция заблокирована:
[ Sun 12/27/2020 | 25:15:28 ] Screen Saver: Enabled "Fliqlo.scr"
[ Sun 12/27/2020 | 25:15:28 ] Screen Saver: Stopped "Fliqlo.scr"
[ Sun 12/27/2020 | 25:15:28 ] Work Station: locked "LAME_SLUG"
- Экранная заставка отключена
not running
, но пользователь вошел в систему:
[ Sun 12/27/2020 | 22:51:46 ] Screen Saver: Disable " - - - - -"
[ Sun 12/27/2020 | 22:51:46 ] Work Station: Logged "LAME_SLUG"
- Экранная заставка отключена
not running
, но рабочая станция заблокирована:
[ Sun 12/27/2020 | 22:44:11 ] Screen Saver: Disable " - - - - -"
[ Sun 12/27/2020 | 22:44:11 ] Work Station: Locked "LAME_SLUG"
- Чтобы ограничить до 10 циклов, с 10 интервалами/тайм-аутом по 10 секунд каждый
@echo off
set/a "_c+=0"
pushd "%__AppDir__%"
title <nul & title ..\%~nx0
setlocal EnableDelayedExpansion
set "_Reg_Key=HKCU\Control Panel\Desktop"
:loop
for /f ^skip^=2tokens^=2* %%i in (
';2^>^&1 reg.exe query "!_Reg_Key!" /v SCRNSAVE.EXE
')do if /i "%%~xj" == ".scr" (set "_scr_svr=%%~nxj") else (
echo/[ !date! ^| !time:~0,8! ] Screen Saver: Disable " - - - - -!"
rem./ With ScreenSaver is disabled no status is need && goto:next
)
for /f skip^=2tokens^=2* %%i in (
';2^>nul reg query "!_Reg_Key!" /v ScreenSaveActive')do if %%j equ 1 (
2>nul tasklist.exe/svc /fo list|find.exe/i "!_scr_svr!">nul && (
echo/[ !date! ^| !time:~0,8! ] Screen Saver: Running "!_scr_svr!"
) || (
echo/[ !date! ^| !time:~0,8! ] Screen Saver: Enabled "!_scr_svr!"
echo/[ !date! ^| !time:~0,8! ] Screen Saver: Stopped "!_scr_svr!")
)
:next
2>nul tasklist.exe/svc /fo list|find.exe/i "LogonUI.exe" >nul && (
echo/[ !date! ^| !time:~0,8! ] Work Station: Locked "!ComputerName!"
) || echo/[ !date! ^| !time:~0,8! ] Work Station: Logged "!ComputerName!"
if !_c! leq 9 (
set /a "_c+=1" && set "_scr_svr=" && >nul timeout/t 10 & goto:Loop
) else popd && endlocal && goto:eof
person
It Wasn't Me
schedule
28.12.2020