none
Windows7の”個人設定”の指定をコマンドでできませんか? RRS feed

  • 質問

  • Windows7のデスクトップの壁紙やスクリーンセーバーを切り替える”個人設定”の指定をコマンドレベルで行うことはできないでしょうか。スクリプトに組み込んで自動化することを考えています。
     
    又、その他のWindows7の設定についても、コマンド化できるものは同様のことを考えているのですが、どんなコマンドで実現できるのかをガイドしてくれる機能や情報源はないでしょうか。
     
    ご教示の程、お願い申します。
    2011年12月10日 2:26

回答

  • 壁紙やスクリーンセーバーなどの設定はレジストリ(HKEY_CURRENT_USER\Control Panel\Desktop)に保存されています。

    なので基本的にはそれらのレジストリ値をスクリプトから変更してやることで可能です。レジストリ値の変更はSet-ItemPropertyコマンドレットなどで行います。

    しかしこれらの設定に対応するレジストリ値を変更するだけでは、リアルタイムに設定を反映させることができません。たとえば壁紙なら次回ログオン時からは変更されますが、レジストリを書き換えた直後は見た目の変化はありません。

    そこでレジストリ設定を変更したことを、システムに通知するコマンドを実行する必要があります。それには

    rundll32.exe user32.dll,UpdatePerUserSystemParameters

    というコマンドがXP時代には使えたのですが、Win7では使用できなくなっているようです。

    では方法がないかというとそうでもなくて、Win32APIにあるSystemParametersInfo関数を呼び出すことでリアルタイムに壁紙やスクリーンセーバーを変更することができます。PowerShellのAdd-Typeコマンドレットを使用すればWin32APIを直接利用することが可能です。その参考例としてPowerShell Code Repository - Set-Wallpaper (CTP3)などがありました。これは壁紙を変更する関数ですが、スクリーンセーバーなど他の設定についても対応するレジストリ設定を行い、SystemParametersInfo関数を使えば可能ではないかと思います。

    • 回答としてマーク karankoron 2011年12月12日 10:03
    2011年12月10日 14:40
    モデレータ

すべての返信

  • 壁紙やスクリーンセーバーなどの設定はレジストリ(HKEY_CURRENT_USER\Control Panel\Desktop)に保存されています。

    なので基本的にはそれらのレジストリ値をスクリプトから変更してやることで可能です。レジストリ値の変更はSet-ItemPropertyコマンドレットなどで行います。

    しかしこれらの設定に対応するレジストリ値を変更するだけでは、リアルタイムに設定を反映させることができません。たとえば壁紙なら次回ログオン時からは変更されますが、レジストリを書き換えた直後は見た目の変化はありません。

    そこでレジストリ設定を変更したことを、システムに通知するコマンドを実行する必要があります。それには

    rundll32.exe user32.dll,UpdatePerUserSystemParameters

    というコマンドがXP時代には使えたのですが、Win7では使用できなくなっているようです。

    では方法がないかというとそうでもなくて、Win32APIにあるSystemParametersInfo関数を呼び出すことでリアルタイムに壁紙やスクリーンセーバーを変更することができます。PowerShellのAdd-Typeコマンドレットを使用すればWin32APIを直接利用することが可能です。その参考例としてPowerShell Code Repository - Set-Wallpaper (CTP3)などがありました。これは壁紙を変更する関数ですが、スクリーンセーバーなど他の設定についても対応するレジストリ設定を行い、SystemParametersInfo関数を使えば可能ではないかと思います。

    • 回答としてマーク karankoron 2011年12月12日 10:03
    2011年12月10日 14:40
    モデレータ
  • 牟田口 様

    ありがとうございます。

    なかなか答えが得られないのでWin32APIも当たってみようかと思っていたところです。情報を頂きありがとうございます。Add-Typeコマンドレットの使い方を見て、スクリプトで実現するかプログラムを作るか検討してみます。

    今後ともよろしくお願い申します。

    2011年12月12日 10:08