@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. Use a Reg Query
to see if the screen saver is currently enabled
for /f skip^=2tokens^=2* %%i in (
';2^>nul reg query "!_Reg_Key!" /v ScreenSaveActive')do if %%j equ 1 (
2. If the screen saver is currently enabled, use an additional Reg Query
to obtain and save The_Name + .Extension
3. Avoid a partial string in | find ".scr"
and use find /i "The_Full_File_Name.scr"
for insensitive case and for matches some_name.scr ≠≠ Some_Name.SCR
and some_name.scr == Some_Name.SCR
Obs.1 In using tasklist
for the task list with |find ".scr"
any string present in the name that also contains a string .str
(lower case only), this will also be listed whether a screensaver may or may not be running.
Obs.2 If the length of the characters in the screen_saver_long_name.scr name (including the extension) is greater than 25, with tasklist | find ".src"
, you will never filter/found this file, because the tasklist
(without any /flag
) has only 26 characters length in output (, ending with.)
Obs.:3 For list process where some screen saver name like Security Screensaver NG.scr
is running, use tasklist /svc /fo list
4. Use a loop and keep the monitoring perceptible to any changes that may occur at any time within the loop process, constantly querying the registry value.
Possible status and outputs:
- Screen Saver enabled and not running, but user logged:
[ 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"
- Screen Saver enabled and running, but work station locked:
[ 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"
- Screen Saver enabled not running, but user logged:
[ 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"
- Screen Saver enabled and not running, work station locked:
[ 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"
- Screen Saver disabled
not running
, but user logged:
[ Sun 12/27/2020 | 22:51:46 ] Screen Saver: Disable " - - - - -"
[ Sun 12/27/2020 | 22:51:46 ] Work Station: Logged "LAME_SLUG"
- Screen Saver disabled
not running
, but work station locked:
[ Sun 12/27/2020 | 22:44:11 ] Screen Saver: Disable " - - - - -"
[ Sun 12/27/2020 | 22:44:11 ] Work Station: Locked "LAME_SLUG"
- To limit to 10 loops, with 10 intervals/timeout of 10 seconds each
@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