Sincronizzazione del registro di Windows tra più computer


9

Nel mio registro di Windows XP è presente una determinata cartella che vorrei sincronizzare tra i miei 2 computer, in stile Dropbox. Il modo in cui lo voglio è che ogni volta che apporto una modifica al registro in un computer, questo appare sugli altri computer.

Possibile? Come?

(Se sei curioso di sapere perché voglio farlo: voglio avere le stesse sessioni PuTTY su tutti i computer.)


Ho una piccola idea per qualcosa ... Puoi dirmi il percorso esatto delle chiavi del registro dello stucco che vuoi? Ora esco ma tornerò tra circa un'ora e proverò ad aiutare ulteriormente.
William Hilsum,

@William Hilsum: Lo è HKEY_CURRENT_USER\Software\SimonTatham\PuTTY.
Ram Rachum,

1
Questi computer sono generalmente sulla stessa rete? O vuoi che funzioni anche in remoto?
music2myear,

@Ram Rachum È lo stesso su entrambi i computer?
William Hilsum,

2
Se si tratta di Putty, perché non usare stucco portatile ? Memorizza le impostazioni in un file. Sincronizza le tue copie di Portable Putty tramite dropbox o altro.
Zoredache,

Risposte:


6

Ci scusiamo per aver impiegato così tanto tempo, penso che questo sia il tempo più lungo che ho impiegato per scrivere una risposta!

Tempo fa volevo funzionalità molto simili, ma non riuscivo a trovare un modo per farlo ... ora che conosco un po 'più di programmazione, ho pensato che valesse la pena provare a fare qualcosa.

Quindi, poche ore dopo, ti do RegSync v1.

inserisci qui la descrizione dell'immagine

Basta prendere una copia del percorso completo del registro (nel tuo caso HKEY_CURRENT_USER\Software\SimonTatham\PuTTY) e incollarlo nella casella.

Fai clic su Avvia e controllerà automaticamente quella chiave di registro per eventuali aggiunte, cancellazioni o modifiche.

Se rileva eventuali modifiche, *esporterà un file di registro chiamato regsync.regnella stessa cartella in cui è in esecuzione l'applicazione.

* In caso di più di una modifica alla volta, attenderà 5 secondi dopo la prima modifica.

Quando / dopo aver premuto il pulsante di avvio, monitorerà la cartella in cui si trova per eventuali modifiche al regsync.regfile e, se rileva una modifica, eliminerà TUTTE le voci nella chiave di registro selezionata localmente e importerà il file di registro. (Prestare attenzione, non controllerà che il .Regfile corrisponda alla posizione che sta monitorando, quindi, se si digitano posizioni diverse su ciascun PC, potrebbe andare male).

Quindi ... puoi eseguirlo da dropbox o condivisioni di Windows o qualsiasi altro servizio di condivisione di cartelle. Eseguilo su entrambi i computer e seleziona la chiave di registro da monitorare.

Note extra ...

  • Ciò richiede .NET Framework versione 4.

  • Non monitora le sottochiavi, è possibile eseguire copie aggiuntive dello strumento anche se in cartelle diverse (ho già idee per migliorarlo, ma, solo se le persone hanno bisogno dello strumento).

  • Sebbene non richieda l'elevazione del controllo dell'account utente, ti invierà bug per l'elevazione ogni volta che tenta di importare o esportare dal registro (in pratica chiama regedit.exe/ reg.exe), quindi, ti consiglio di eseguire il programma elevato ... Lo fa più volte e diventerà molto fastidioso.

  • Nessuna garanzia - Ottiene il badge "Funziona sul mio PC" e l'ho testato su alcune macchine, ma questo non ha avuto revisione del codice e ore di test ... Inizia a finire in poche ore.

Anche se non finisci per usarlo, spero sia utile a qualcuno là fuori!

Link per scaricare


Bello! Lo stai mantenendo chiuso?
Ram Rachum,

@Ram Rachum - In realtà non "faccio" molto (progetti interi) open source ... Se qualcuno ha domande / vuole vedere qualcosa, sarò più che felice di fornirvi il codice di esempio ... o condividere codice con gli amici su Dropbox .... Se hai suggerimenti o desideri miglioramenti, fammelo sapere. ... Sono ancora abbastanza un nuovo programmatore e ho cercato di orientarmi nei sistemi VCS ... Quando li capisco, posso caricare / iniziare a condividere!
William Hilsum,

1
@William; L'open source non deve essere sofisticato, basta comprimere il sorgente e caricarlo insieme ed è open source!
Foshi,

@Phoshi -: / buon punto ... forse presto!
William Hilsum,

RegSync v1 sarà in codeplex in futuro come open source? la mia azienda ha bisogno del codice sorgente di audit prima di installare qualsiasi applicazione o programma in ambienti.
Kiquenet,

5

potrebbe essere più semplice eseguire regedit.exe in modalità silenziosa con un file di registro che contiene le voci esatte desiderate. È possibile impostare ogni computer per eseguirlo da un percorso condiviso, quindi è sufficiente aggiornare il file e quando la successiva esecuzione pianificata di regedit.exe viene eseguita su ciascun computer, ottengono le nuove voci.

qualcosa di simile a:

regedit.exe /S puttyentries.reg

Per estrarre una chiave di registro da un computer, devi usare:

regedit.exe /E puttyentries.reg "registry_key"

Probabilmente ci sarebbero modi più eleganti per automatizzare l'intero processo usando vbscript o autoit con funzioni di lettura / scrittura remote per il registro.

Ecco un esempio di AutoIt che si sincronizzerà ogni 30 minuti con un computer remoto (avvertenza, non l'ho ancora testato):

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

Non vorrei modificare manualmente un file. Può regeditanche estrarre dal registro in modalità silenziosa?
Ram Rachum,

modificato per aggiungere l'opzione di lettura, vedrò cosa posso scrivere per un'opzione di script più elegante
MaQleod

1
Questo può essere adeguato per il ragazzo che ha chiesto, ma questo non sincronizzerà la cancellazione delle impostazioni. Pertanto, se si elimina un'impostazione di mastice su un'esportazione di un host, reimportandola sull'host di sezione, l'eliminazione non avverrà. Quando si esporta e si reimporta nuovamente sull'host in cui è stato eliminato un elemento di configurazione, l'elemento eliminato verrà ripristinato.
Zoredache,

ok, ho aggiunto un esempio di autoit che farà l'intero processo da solo (o almeno dovrebbe, non l'ho testato, quindi per favore esegui prima il backup di tutto).
MaQleod,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.