6

Я знаю, что могу изменить настройки заставки в 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. Да, есть причина для этого.

Я знаю о SetScrTimeout.exe, поэтому я знаю, что это можно сделать. Я не могу использовать этот инструмент в моей системе и предпочел бы что-то доморощенное.

Как сделать так, чтобы эти изменения вступили в силу немедленно при изменении реестра из командной строки?

1 ответ1

6

В то время как Windows хранит конфигурацию хранителя экрана в реестре, она не проверяет ее постоянно на наличие изменений. Это было бы довольно неэффективно.

Правильный способ изменить конфигурацию - использовать функцию SystemParametersInfo в Win32. Для удобства DLL панели управления настольным компьютером экспортирует функцию, к которой легко получить доступ из командной строки, которая будет вызывать эту функцию для вас. Просто запустите следующую команду:

rundll32.exe desk.cpl,InstallScreenSaver file.scr

При этом следующая команда должна заставить Windows перечитать конфигурацию из реестра:

rundll32.exe user32.dll, UpdatePerUserSystemParameters

Кроме того, вам может быть проще изменить реестр из командной строки, используя команду REG, а не писать файлы .reg все время.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .