複数のコンピュータ間でWindowsレジストリを同期する


9

Windows XPレジストリに、2台のコンピューター間で同期したい特定のフォルダーがあります。Dropboxスタイルです。私が望む方法は、1台のコンピューターでレジストリを変更するたびに、他のコンピューターに表示されることです。

可能?どうやって?

(なぜ私がこれをしたいのかについて興味があるなら、私はすべてのコンピューターで同じPuTTYセッションを持ちたいと思っています。)


何かについて少し考えがあります...必要なパテレジストリキーの正確なパスを教えていただけますか?私は外出中ですが、約1時間後に戻ってきます。
ウィリアムヒルサム

@ウィリアムヒルサム:それはHKEY_CURRENT_USER\Software\SimonTatham\PuTTYです。
Ram Rachum、2011

1
これらのコンピューターは通常、同じネットワーク上にありますか?または、これもリモートで機能させたいですか?
music2myear 2011

@Ram Rachum両方のコンピューターで同じですか?
ウィリアムヒルサム

2
これがパテなら、ポータブルパテを使ってみませんか?設定をファイルに保存します。Dropboxなどを使用してPortable Puttyのコピーを同期します。
Zoredache 2011

回答:


6

時間がかかってすみません、これは私が答えを書くのにかかった中で最も長いと思います!

昔、私は非常に類似した機能が欲しかったのですが、それを行う方法が見つかりませんでした...プログラミングについてはかなり知っているので、何かを試してみる価値があると思いました。

それで、数時間後、私はあなたに与えますRegSync v1

ここに画像の説明を入力してください

(あなたの場合HKEY_CURRENT_USER\Software\SimonTatham\PuTTY)完全なレジストリパスのコピーを取り、ボックスに貼り付けます。

[スタート]をクリックすると、追加、削除、変更がないか、レジストリキーが自動的に監視されます。

変更を検出すると、アプリケーションが実行されているのと同じフォルダに*あるレジストリファイルをエクスポートしますregsync.reg

* 一度に複数の変更がある場合、最初の変更後5秒間待機します。

開始ボタンが押された後、regsync.regファイルが変更されていないかフォルダーを監視し、変更を検出すると、ローカルで選択したレジストリキーのすべてのエントリを削除して、レジストリファイルをインポートします。(注意してください、それは.Regファイルがそれが監視している場所と一致することをチェックしないので、各PCで異なる場所を入力すると、それはうまくいかないかもしれません)。

だから...あなたはこれをDropboxやWindows共有、または他のフォルダ共有サービスから実行できます。両方のコンピューターで実行し、監視するレジストリキーを選択します。

追記...

  • これには、.NET Frameworkバージョン4が必要です。

  • サブキーは監視されません。別のフォルダーでツールの追加コピーを実行できます(私はすでにこれを改善するためのアイデアを持っていますが、ツールが必要な場合のみ)。

  • UAC昇格は必要ありませんが、レジストリからインポートまたはエクスポートしようとするたびに昇格のバグが発生します(基本的にregedit.exe/を呼び出しますreg.exe)。そのため、プログラムを昇格して実行することをお勧めします...これは数回実行されますそしてそれは非常に迷惑になります。

  • 保証なし-「私のPCで動作する」というバッジが表示され、数台のマシンでテストしましたが、これにはコードレビューと数時間のテストがありません...数時間で終了します。

使っていなくても、誰かに役立つといいですね!

リンクをダウンロード


いいね!クローズドソースを維持していますか?
Ram Rachum、2011

@Ram Rachum-私は実際にはオープンソース(プロジェクト全体)をあまり "実行"していません...何か質問や何かを見たい場合は、そこからサンプルコードを提供したり、共有したりします... Dropboxで友達とコードを書いて...何か提案や改善が必要な場合は、私に知らせてください。...私はまだかなり新しいプログラマーであり、VCSシステムに頭を悩ませようとしています...それらを理解したら、アップロード/共有を開始します!
ウィリアムヒルサム

1
@ウィリアム; オープンソースは派手である必要はありません。ソースを圧縮して、一緒にアップロードするだけで、オープンソースになります。
Phoshi 2011

@Phoshi-:/良い点...多分すぐに!
ウィリアムヒルサム

RegSync v1は将来、オープンソースのようにcodeplexになるでしょうか?私の会社では、環境にアプリケーションやプログラムをインストールする前に、監査ソースコードが必要です。
Kiquenet

5

regedit.exeをサイレントモードで実行し、必要な正確なエントリを含むレジストリファイルを実行する方が簡単な場合があります。共有場所から実行するように各コンピューターを設定できるので、ファイルを更新するだけで、次にスケジュールされているregedit.exeの実行が各コンピューターで実行されると、新しいエントリが取得されます。

何かのようなもの:

regedit.exe /S puttyentries.reg

1台のコンピューターからレジストリキーを取得するには、次を使用します。

regedit.exe /E puttyentries.reg "registry_key"

レジストリのリモート読み取り/書き込み機能を備えたvbscriptまたはautoitを使用してプロセス全体を自動化するより洗練された方法がおそらくあるでしょう。

30分ごとにリモートコンピューターと同期するAutoItの例を次に示します(注意、私は実際にこれをテストしていません)。

While 1 ;loop indefinitely
    $i1 = 1 ;set initial counter
    While 1 ;loops through all sessions
        $keyname = RegEnumVal("\\REMOTECOMPUTER\HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions", $i1) ;reads session names
        If @error <> 0 Then ExitLoop ;exits when no more sessions exist
        $i2 = 1 ;set initial counter
        While 1 ;loops through all value in key until done
            $valuename = RegEnumVal("\\REMOTECOMPUTER\HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions" & "\" & $keyname, $i2) ;read value name from remote machine
            If @error <> 0 Then ExitLoop ;errors and escapes when no more values to read
            $type = @extended ;sets registry value type
            $value = RegRead("HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Session" & "\" & $keyname, $valuename) ;read value
            RegWrite("HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Session" & "\" & $keyname, $valuename, $type, $value) ;write key value to local machine
            $i2 = $i2 + 1 ;increment by 1
        WEnd
        $i1 = $i1 + 1 ;increment by 1
    WEnd
    Sleep(1800000) ;sleep 30 min
WEnd

ファイルを手動で編集したくありません。regeditサイレントモードでレジストリから抽出することもできますか?
Ram Rachum、2011

編集して読み取りオプションを追加すると、よりエレガントなスクリプトオプションに書き込むことができるものが表示されます
MaQleod '25 / 08/25

1
これは質問した人には十分かもしれませんが、これは設定の削除を同期しません。したがって、1つのホストのエクスポートでパテ設定を削除し、セクションホストで再インポートすると、削除は行われません。構成アイテムを削除したホストにエクスポートして再インポートすると、削除したアイテムが復元されます。
Zoredache 2011

さて、それ自体でプロセス全体を実行するautoitの例を追加しました(または少なくともそうするべきです、私はテストしていません。最初にすべてをバックアップしてください)。
MaQleod 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.