我知道我可以通过如下方式更新注册表从命令行更改 Windows XP 中的屏幕保护程序的设置:
regedit.exe /s settings.reg
其中 settings.reg 包含:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Control Panel\Desktop]
"ScreenSaveTimeOut"="7200"
"SCRNSAVE.EXE"="C:\\WINDOWS\\system32\\scrnsave.scr"
但是,设置只有在我注销并重新登录后才会生效。如果我通过以下方式更改设置显示属性这些措施将立即生效。
是的,它是 Windows XP。是的,这是有原因的。
我知道设置超时时间所以我知道这是可以做到的。不过我无法在我的系统上使用该工具,我更喜欢自己开发的东西。
从命令行更改注册表时,如何使这些更改立即生效?
答案1
虽然 Windows 将屏幕保护程序配置存储在注册表中,但它不会不断检查其是否发生变化。这样效率会很低。
更改配置的正确方法是使用SystemParametersInfo
Win32 的功能。为方便起见,桌面控制面板 DLL 导出一个可从命令行轻松访问的函数,该函数将为您调用该函数。只需运行以下命令:
rundll32.exe desk.cpl,InstallScreenSaver file.scr
话虽如此,以下命令应该强制 Windows 从注册表重新读取配置:
rundll32.exe user32.dll, UpdatePerUserSystemParameters
另外,您可能会发现使用命令行修改注册表更容易REG
命令,而不是一直写入.reg
文件。