Synchronisieren der Windows-Registrierung zwischen mehreren Computern

9

In meiner Windows XP-Registrierung befindet sich ein bestimmter Ordner, den ich im Dropbox-Stil zwischen meinen beiden Computern synchronisieren möchte. Ich möchte, dass es jedes Mal, wenn ich eine Registrierungsänderung auf einem Computer vornehme, auf den anderen Computern angezeigt wird.

Möglich? Wie?

(Wenn Sie neugierig sind, warum ich das tun möchte: Ich möchte auf allen Computern die gleichen PuTTY-Sitzungen durchführen.)

Ram Rachum
quelle
Ich habe eine kleine Idee für etwas ... Können Sie mir den genauen Pfad der gewünschten Putty-Registrierungsschlüssel mitteilen? Ich gehe jetzt aus, werde aber in ungefähr einer Stunde zurück sein und versuchen, weiter zu helfen.
William Hilsum
@ William Hilsum: Es ist HKEY_CURRENT_USER\Software\SimonTatham\PuTTY.
Ram Rachum
1
Befinden sich diese Computer im Allgemeinen im selben Netzwerk? Oder möchten Sie, dass dies auch remote funktioniert?
music2myear
@ Ram Rachum Ist das auf beiden Computern gleich?
William Hilsum
2
Wenn es um Kitt geht, warum nicht tragbaren Kitt verwenden ? Es speichert die Einstellungen in einer Datei. Synchronisieren Sie Ihre Kopien von Portable Putty über Dropbox oder was auch immer.
Zoredache

Antworten:

6

Es tut mir leid, dass ich so lange gebraucht habe. Ich denke, dies ist die längste Zeit, die ich gebraucht habe, um eine Antwort zu schreiben!

Vor langer Zeit wollte ich eine sehr ähnliche Funktionalität, aber ich konnte keinen Weg finden, dies zu tun ... jetzt, da ich einiges mehr über Programmierung weiß, dachte ich, es wäre einen Versuch wert, etwas zu machen.

Also, ein paar Stunden später gebe ich Ihnen , RegSync v1.

Geben Sie hier die Bildbeschreibung ein

Nehmen Sie einfach eine Kopie des vollständigen Registrierungspfads (in Ihrem Fall HKEY_CURRENT_USER\Software\SimonTatham\PuTTY) und fügen Sie ihn in das Feld ein.

Klicken Sie auf Start, um den Registrierungsschlüssel automatisch auf Hinzufügungen, Löschungen oder Änderungen zu überwachen.

Wenn Änderungen festgestellt werden, wird *eine Registrierungsdatei exportiert, die regsync.regim selben Ordner aufgerufen wird, in dem die Anwendung ausgeführt wird.

* Bei mehr als einer Änderung gleichzeitig wird nach der ersten Änderung 5 Sekunden gewartet.

Wenn / nachdem die Starttaste gedrückt wird, wird der Ordner, in dem er sich befindet, auf Änderungen an der regsync.regDatei überwacht. Wenn eine Änderung festgestellt wird, werden ALLE Einträge in dem lokal ausgewählten Registrierungsschlüssel gelöscht und die Registrierungsdatei importiert. (Bitte seien Sie vorsichtig, es wird nicht überprüft, ob die .RegDatei mit dem zu überwachenden Speicherort übereinstimmt. Wenn Sie also auf jedem PC unterschiedliche Speicherorte eingeben, kann dies zu einem Fehler führen.)

Sie können dies also über Dropbox- oder Windows-Freigaben oder einen anderen Ordnerfreigabedienst ausführen. Führen Sie es auf beiden Computern aus und wählen Sie den zu überwachenden Registrierungsschlüssel aus.

Zusätzliche Hinweise ...

  • Dies erfordert das .NET Framework Version 4.

  • Es werden keine Unterschlüssel überwacht. Sie können zusätzliche Kopien des Tools in verschiedenen Ordnern ausführen (ich habe bereits Ideen, um dies zu verbessern, aber nur, wenn Benutzer das Tool benötigen).

  • Obwohl keine UAC-Erhöhung erforderlich ist, werden Sie jedes Mal, wenn versucht wird, aus der Registrierung zu importieren oder zu exportieren, um eine Erhöhung zu veranlassen (es ruft im Grunde regedit.exe/ auf reg.exe). Ich empfehle daher, das Programm erhöht auszuführen. Dies geschieht mehrmals und es wird sehr nervig.

  • Keine Garantie - Es wird das Abzeichen "Funktioniert auf meinem PC" angezeigt, und ich habe es auf einigen Computern getestet, aber es wurden keine Codeüberprüfung und stundenlange Tests durchgeführt ... Beginnen Sie in wenigen Stunden mit dem Abschluss.

Selbst wenn Sie es nicht verwenden, hoffe ich, dass es für jemanden da draußen nützlich ist!

Download-Link

William Hilsum
quelle
Nett! Halten Sie es Closed-Source?
Ram Rachum
@ Ram Rachum - Ich "mache" nicht wirklich viel Open Source (ganze Projekte) ... Wenn jemand Fragen hat / etwas sehen möchte, werde ich gerne Beispielcode daraus bereitstellen ... oder teilen Code mit Freunden über Dropbox .... Wenn Sie Vorschläge haben oder Verbesserungen wünschen, lassen Sie es mich wissen. ... Ich bin noch ein ziemlich neuer Programmierer und habe versucht, mich mit VCS-Systemen vertraut zu machen ... Wenn ich sie verstehe, kann ich sie hochladen / teilen!
William Hilsum
1
@Wilhelm; Open Source muss nicht ausgefallen sein, einfach die Quelle komprimieren und nebenher hochladen und es ist Open Source!
Phoshi
@Phoshi -: / guter Punkt ... Vielleicht bald dann!
William Hilsum
RegSync v1 wird in Zukunft wie Open Source im Codeplex sein? Mein Unternehmen benötigt Audit-Quellcode, bevor Anwendungen oder Programme in Umgebungen installiert werden.
Kiquenet
5

Es ist möglicherweise einfacher, regedit.exe im unbeaufsichtigten Modus mit einer Registrierungsdatei auszuführen, die genau die gewünschten Einträge enthält. Sie können festlegen, dass jeder Computer von einem freigegebenen Speicherort ausgeführt wird. Sie müssen lediglich die Datei aktualisieren. Wenn die nächste geplante Ausführung von regedit.exe auf jedem Computer ausgeführt wird, werden die neuen Einträge abgerufen.

etwas wie:

regedit.exe /S puttyentries.reg

Um einen Registrierungsschlüssel von einem Computer abzurufen, verwenden Sie:

regedit.exe /E puttyentries.reg "registry_key"

Es gibt wahrscheinlich elegantere Möglichkeiten, den gesamten Prozess mithilfe von vbscript oder autoit mit Remote-Lese- / Schreibfunktionen für die Registrierung zu automatisieren.

Hier ist ein Beispiel mit AutoIt, das alle 30 Minuten mit einem Remotecomputer synchronisiert wird (Einschränkung, ich habe dies wirklich nicht getestet):

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
MaQleod
quelle
Ich möchte eine Datei nicht manuell bearbeiten. Kann regeditauch im Silent-Modus aus der Registrierung extrahieren?
Ram Rachum
bearbeitet, um
Leseoption
1
Dies mag für den Fragesteller angemessen sein, aber dies wird das Löschen von Einstellungen nicht synchronisieren. Wenn Sie also eine Kitteinstellung bei einem Hostexport löschen und auf Ihrem Abschnittshost erneut importieren, erfolgt das Löschen nicht. Wenn Sie auf dem Host, auf dem Sie ein Konfigurationselement gelöscht haben, exportieren und erneut importieren, wird Ihr gelöschtes Element wiederhergestellt.
Zoredache
ok, hat ein Autoit-Beispiel hinzugefügt, das den gesamten Prozess alleine ausführt (oder sollte es zumindest, ich habe es nicht getestet, also sichern Sie bitte zuerst alles).
MaQleod