1人で複数台のPCを使っていると、それぞれのPCに同じ常駐プログラムを入れて、同じように操作ができるようにしておきたいですね。
ただ、この常駐プログラムの設定を変えると、すべてのPCで同じように設定を変えないと、同じような操作環境が維持できません。
そこで、常駐プログラムの設定ファイルを同期させる方法についていくつかの方法をご紹介します。
■基本的な考え方
●ホスト側
設定を変更した側の PC (以下ホスト側)で、設定内容を取得して、それを設定を反映させたい PC (以下リモート側)にコピーします。
常駐プログラムがレジストリに保存してあるならレジストリエディタで取得します。
レジストリエディタは、コマンドラインから操作ができるので、その操作をバッチ化します。
レジストリエディタのコマンドラインからの操作方法に関しては
コマンドプロンプトでレジストリを操作する
http://www.atmarkit.co.jp/ait/articles/0402/21/news005.html
やマイクロソフトのサイトでどうぞ。
レジストリエディタで取り出したレジストリは適当なファイルに保存しておきます。
常駐プログラムがファイルに設定を記録しているなら、そのファイルの名前を取得します。
これらはアプリによって異なるので、アプリのマニュアルを調べるか、ぐぐってみるとわりあい簡単に見つかります。
で、これをリモート側の PC にコピーしてやればいいだけ。
コピーは普通に COPY /y (ソース) (ターゲット) です。
●リモート側
単純にコピーすれば設定が反映される場合は、これで終わりなのですが、多くのアプリでは、何かのイベント時や終了時に現在の設定や状態を書き出します。つまり、リモート側でそのアプリが起動していると、変更が反映されないことになります。
そこで、リモート操作(バッチ)でリモート側のアプリを終了させてやる必要があります。
単純に言えば、リモート側のPCを直接操作できるのであれば、そのほうが単純なのですが、手動操作が入ってしまうので、自動的に同期するというわけには行きません。
そこで、ホスト側から特定のアプリを操作するツールが必要になります。
■方法1:Telnet
telnet でリモート側にログインして、そこでリモート側のアプリを殺して、必要なファイルをコピーします。
これが最も単純な作戦。
ただし、telnet はディフォルトではインストールされないので、ホスト側・リモート側両方の Windows の設定で telnet を有効にしてやる必要があります。
Telnet のセットアップの方法は
WindowsのTelnetクライアントの使い方
http://www.atmarkit.co.jp/ait/articles/0207/06/news002.html
を参照。
■方法2:PsKill
リモート操作で、リモート側のアプリを強制的に終了させてしまう方法です。
Windows 標準の taskkill ではリモート操作はできないので、専用のツールが必要です。
PsKill v1.16
https://docs.microsoft.com/ja-jp/sysinternals/downloads/pskill
というフリーのツールがあります。Microsoft 謹製。
これはインストール不要なので、ダウンロードできた zip ファイルの中の pskill.exe を適当なフォルダ(同期用バッチファイルのあるフォルダが簡単)にコピーしてやるだけで使えます。
使い方も単純で、コマンドラインで PC 名とユーザ名、パスワードを列挙してやるだけ。
※ただし、バッチファイルで作るとパスワードが丸見えという問題はありますが、まあ無視します (^^;;
手順としては、
リモート側のアプリを PsKill で強制終了
設定ファイルをコピー
リモート側を再起動
という流れをバッチファイルで記述すれば OK。通常は強制終了されるとアプリは現在の設定などを残さないので、次に起動する前に設定ファイルなどをコピーしてやれば、ホスト側の設定に書き換わってしまうはずです。
リモート側を再起動するには、
shutdown -r -m \\<コンピュータ名>
で処理できます。
もしユーザ名などが違っているような場合は、
net use \\<リモート側コンピュータ名> /user:<ユーザ名> <パスワード>
を shuftdown コマンドの前に追加してやれば通るはずです。
■方法3:リモート側から同期させる
起動時に、対象のアプリよりも先に起動するバッチファイルを作成します。
このバッチファイルでホスト側の設定ファイルをコピーしてやるようにすれば、リアルタイムには反映されませんが、再起動したときにホストとファイル共有ができていれば、最も単純で最も確実な方法。
私はこの方法3を使ってます。AutoStart.bat というファイルを作り、これを startup フォルダに置きます。
常駐プログラムなどは、このバッチファイルが最後に起動しますので、もともと startup にあった常駐用のショートカットは別のフォルダに移動してしまって、それぞれのショートカットへのリンクをこのバッチの最後に記述しておきます。
つまり、起動時のバッチファイルで
ホスト側の設定ファイルをコピー
アプリ起動
とやってやれば同期ができることになります。
レジストリの場合は、ホスト側でレジストリファイルを書き出さないといけないので、ちょっと面倒です。
Windowsでリモートからレジストリを操作する
http://www.atmarkit.co.jp/ait/articles/0904/03/news106.html
が参考になると思いますが、ホスト側で
ときどき同期が必要なレジストリを自動で書き出して共有フォルダに保存するようにする
という方法が単純。私はシャットダウン時に、同期が必要なレジストリをファイル化するバッチが勝手に動くようにしています。
◆このテーマのおすすめ図書
本当は怖い「夜のお仕事」恐怖の都市伝説100
働き方の哲学360度の視点で仕事を考える
フツーの女子社員が29歳で執行役員になるまで
HOSTMAGAZINE58
スマホ&タブレット仕事術
俺様な同期に夜の仕事がバレました。