我想通过计划任务为固定本地用户启用/禁用屏幕保护程序。我的任务运行
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /f /v ScreenSaverIsSecure /t REG_SZ /d 0
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /f /v ScreenSaveActive /t REG_SZ /d 0
并且有一个相应的“启用”任务,其末尾为 1 而不是 0。
该任务按计划运行,我也可以手动运行。在这两种情况下,我都可以使用注册表编辑器检查注册表中的两个键是否都已更改。但屏幕保护程序设置没有改变。
我已确认我打开“屏幕保护程序设置”对话框并在其中进行更改后看到的设置是正确的。每当我进行更改时,我都可以立即在注册表中看到更改。但是,如果我更改注册表中的上述两个键(无论是手动更改还是通过脚本更改),当我重新打开“屏幕保护程序设置”对话框时,设置并没有改变。
在第一个屏幕截图中,我首先将“ScreenSaveActive”和“ScreenSaverIsSecur”两个键更改为 0,然后打开屏幕保护程序设置对话框:
在第二个屏幕截图中,我取消选择并重新选择“恢复时显示登录屏幕”(这样即使我没有更改任何内容,也会应用更改)并按“应用”。可以看出,按键已更改:
可以看出,我修改了正确的键,但如果直接在注册表中进行更改,屏幕保护程序则看不到这些更改。屏幕保护程序的设置是否保存在其他地方,以及屏幕保护程序从哪里读取这些设置?
答案1
对海报有用的解决方案是通过在注册表项中添加
HKEY_CURRENT_USER\Control Panel\Desktop
名为 的 REG_SZ 项 来破坏屏幕保护程序SCRNSAVE.exe
。
将此项目的值设置为虚拟“屏幕保护程序”程序可有效禁用屏幕保护程序。将该项目设置为 null/空值可能就足够了。
此注册表更改的效果是立竿见影的。
要撤消,只需删除此项。
发帖人报告:经过进一步的实验,我发现SCRNSAVE.EXE
单独更改为 不足以禁用屏幕保护程序。将ScreenSaveActive
和更改ScreenSaverIsSecure
为 0 结合起来使用似乎可以禁用屏幕保护程序。