Synchronizowanie rejestru Windows między kilkoma komputerami

9

W moim rejestrze systemu Windows XP jest pewien folder, który chciałbym zsynchronizować między dwoma komputerami w stylu Dropbox. Chcę, żeby tak było, że za każdym razem, gdy dokonuję zmiany rejestru na jednym komputerze, pojawia się on na innym komputerze (ach).

Możliwy? W jaki sposób?

(Jeśli zastanawiasz się, dlaczego chcę to zrobić: chcę mieć te same sesje PuTTY na wszystkich komputerach).

Ram Rachum
źródło
Mam mały pomysł na coś ... Czy możesz mi podać dokładną ścieżkę kluczy rejestru szpachli, którą chcesz? Wychodzę teraz, ale wrócę za godzinę i spróbuję pomóc dalej.
William Hilsum,
@William Hilsum: Jest HKEY_CURRENT_USER\Software\SimonTatham\PuTTY.
Ram Rachum,
1
Czy te komputery są zazwyczaj w tej samej sieci? A może chcesz, aby działało to również zdalnie?
music2myear
@Ram Rachum Czy to samo na obu komputerach?
William Hilsum,
2
Jeśli chodzi o Kit, dlaczego nie użyć przenośnego Kit ? Przechowuje ustawienia w pliku. Zsynchronizuj swoje kopie Portable Putty przez Dropbox lub cokolwiek innego.
Zoredache,

Odpowiedzi:

6

Przepraszam, że tak długo to trwa. Myślę, że to najdłużej napisałem odpowiedź!

Wieki temu chciałem bardzo podobnej funkcjonalności, ale nie mogłem znaleźć sposobu, aby to zrobić ... teraz, gdy znam trochę więcej programowania, pomyślałem, że warto spróbować coś zrobić.

Tak, kilka godzin później, daję ci RegSync v1.

wprowadź opis zdjęcia tutaj

Po prostu weź kopię pełnej ścieżki rejestru (w twoim przypadku HKEY_CURRENT_USER\Software\SimonTatham\PuTTY) i wklej ją do pudełka.

Kliknij Start, aby automatycznie monitorować ten klucz rejestru pod kątem wszelkich dodań, usunięć lub zmian.

Jeśli wykryje jakiekolwiek zmiany, *wyeksportuje plik rejestru wywoływany regsync.regw tym samym folderze, w którym działa aplikacja.

* W przypadku więcej niż jednej zmiany na raz, będzie czekać 5 sekund po pierwszej zmianie.

Po naciśnięciu przycisku Start monitoruje folder, w którym się znajduje, pod kątem zmian w regsync.regpliku, a jeśli wykryje zmianę, usunie WSZYSTKIE wpisy w kluczu rejestru wybranym lokalnie i zaimportuje plik rejestru. (Zachowaj ostrożność, nie sprawdzi, czy .Regplik pasuje do monitorowanej lokalizacji, więc jeśli wpiszesz różne lokalizacje na każdym komputerze, może się nie udać).

Więc ... możesz uruchomić to z Dropbox lub udziałów Windows lub dowolnej innej usługi udostępniania folderów. Uruchom go na obu komputerach i wybierz klucz rejestru do monitorowania.

Dodatkowe uwagi ...

  • Wymaga to wersji .NET Framework w wersji 4.

  • Nie monitoruje podkluczy, możesz uruchamiać dodatkowe kopie narzędzia, chociaż w różnych folderach (mam już pomysły, aby to poprawić, ale tylko wtedy, gdy ludzie potrzebują tego narzędzia).

  • Chociaż nie wymaga podniesienia kontroli konta użytkownika, za każdym razem, gdy spróbuje zaimportować lub wyeksportować z rejestru (będzie w zasadzie wywoływał regedit.exe/ reg.exe), wystąpi błąd dotyczący podniesienia uprawnień , więc zalecam uruchomienie programu podniesionego poziomu ... Robi to kilka razy i stanie się bardzo denerwujące.

  • Brak gwarancji - otrzymuje plakietkę „Działa na moim komputerze” i przetestowałem go na kilku komputerach, ale nie miał on przeglądu kodu i godzin testowania ... Zacznij kończyć za kilka godzin.

Nawet jeśli go nie użyjesz, mam nadzieję, że przyda się komuś tam!

Link do pobrania

William Hilsum
źródło
Miły! Czy trzymasz to źródło zamknięte?
Ram Rachum,
@Ram Rachum - tak naprawdę nie „dużo” robię open source (całe projekty) ... Jeśli ktoś ma jakieś pytania / chce coś zobaczyć, chętnie podam z niego przykładowy kod ... lub podzielę się koduj ze znajomymi przez Dropbox .... Jeśli masz jakieś sugestie lub chcesz ulepszeń, daj mi znać. ... wciąż jestem całkiem nowym programistą i staram się ominąć systemy VCS ... Kiedy je zrozumiem, mogę przesłać / rozpocząć udostępnianie!
William Hilsum
1
@William; Open Source nie musi być fantazyjne, wystarczy spakować źródło i przesłać je obok, a jest to open source!
Phoshi
@ Phoshi -: / good point ... Może wkrótce!
William Hilsum
RegSync v1 będzie w przyszłości w codeplex jak open source? moja firma potrzebuje audytu kodu źródłowego przed zainstalowaniem jakiejkolwiek aplikacji lub programu w środowisku.
Kiquenet,
5

regedit.exe może być łatwiej uruchomić w trybie cichym z plikiem rejestru, który zawiera dokładne wpisy, które chcesz. Możesz ustawić każdy komputer, aby uruchamiał go ze wspólnej lokalizacji, więc wszystko, co musisz zrobić, to zaktualizować plik, a gdy kolejne zaplanowane uruchomienie programu regedit.exe uruchomi się na każdym komputerze, otrzymają nowe wpisy.

coś jak:

regedit.exe /S puttyentries.reg

Aby pobrać klucz rejestru z jednego komputera, użyłbyś:

regedit.exe /E puttyentries.reg "registry_key"

Prawdopodobnie istniałyby bardziej eleganckie sposoby automatyzacji całego procesu za pomocą vbscript lub autoit z funkcjami zdalnego odczytu / zapisu rejestru.

Oto przykład z AutoIt, który będzie synchronizowany co 30 minut ze zdalnym komputerem (zastrzeżenie, naprawdę tego nie testowałem):

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
źródło
Nie chciałbym edytować pliku ręcznie. Czy można regeditrównież wyodrębnić z rejestru w trybie cichym?
Ram Rachum,
edytowany dodać opcję odczytu, ja zobaczę, co mogę napisać na bardziej elegancki opcji skryptów
MaQleod
1
Może to być odpowiednie dla faceta, który poprosił, ale nie zsynchronizuje usunięcia ustawień. Jeśli więc usuniesz ustawienie kitu w eksporcie jednego hosta, zaimportuj ponownie na hoście sekcji, usunięcie nie nastąpi. Podczas eksportowania i ponownego importowania z powrotem na hoście usunąłeś element konfiguracji, usunięty element zostanie przywrócony.
Zoredache,
ok, dodałem przykład autoit, który sam wykona cały proces (a przynajmniej powinien, nie przetestowałem go, więc proszę najpierw wykonać kopię zapasową wszystkiego).
MaQleod,