dwj*_*dwj 8 windows-registry screensaver windows-xp
我知道我可以通过如下更新注册表来从命令行更改 Windows XP 中屏幕保护程序的设置:
regedit.exe /s settings.reg
Run Code Online (Sandbox Code Playgroud)
其中 settings.reg 包含:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Desktop]
"ScreenSaveTimeOut"="7200"
"SCRNSAVE.EXE"="C:\\WINDOWS\\system32\\scrnsave.scr"
Run Code Online (Sandbox Code Playgroud)
但是,这些设置在我注销并重新登录后才会生效。如果我通过“显示属性”更改设置,它们会立即生效。
是的,它是 Windows XP。是的,这是有原因的。
我知道SetScrTimeout.exe所以我知道它可以做到。不过,我无法在我的系统上使用该工具,并且更喜欢自己开发的工具。
从命令行更改注册表时,如何使这些更改立即生效?
虽然 Windows 将屏幕保护程序配置存储在注册表中,但它不会经常检查更改。那将是相当低效的。
更改配置的正确方法是使用SystemParametersInfoWin32的功能。为方便起见,桌面控制面板 DLL 导出了一个可以从命令行轻松访问的函数,该函数将为您调用该函数。只需运行以下命令:
rundll32.exe desk.cpl,InstallScreenSaver file.scr
Run Code Online (Sandbox Code Playgroud)
话虽如此,以下命令应该强制 Windows 从注册表重新读取配置:
rundll32.exe user32.dll, UpdatePerUserSystemParameters
Run Code Online (Sandbox Code Playgroud)
顺便说一句,您可能会发现使用REGcommand 从命令行修改注册表比一直写.reg文件更容易。