web-dev-qa-db-ja.com

スクリーンセーバーレジストリの変更をWindowsですぐに有効にするXP

次のようにレジストリを更新することで、コマンドラインから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"

ただし、ログアウトして再度ログインするまで設定は有効になりません。表示プロパティを使用して設定を変更すると、すぐに有効になります。

はい、WindowsXPです。はい、それには理由があります。

SetScrTimeout.exe について知っているので、実行できることはわかっています。私は自分のシステムでそのツールを使用することはできませんが、自家製のものを好みます。

コマンドラインからレジストリを変更したときに、これらの変更をすぐに有効にするにはどうすればよいですか?

6
dwj

Windowsはスクリーンセーバーの構成をレジストリに保存しますが、変更がないか常にチェックするわけではありません。それはかなり非効率的です。

構成を変更する正しい方法は、Win32の SystemParametersInfo 関数を使用することです。便宜上、デスクトップのコントロールパネルDLLは、その関数を呼び出すコマンドラインから簡単にアクセスできる関数をエクスポートします。次のコマンドを実行するだけです。

rundll32.exe desk.cpl,InstallScreenSaver file.scr

そうは言っても、次のコマンドはWindowsにレジストリから構成を再読み込みさせる必要があります。

rundll32.exe user32.dll, UpdatePerUserSystemParameters

余談ですが、常に.regファイルを書き込むよりも、 REG command を使用して、コマンドラインからレジストリを変更する方が簡単な場合があります。

6
Patches