Sincronizando o registro do Windows entre vários computadores

9

Há uma certa pasta no meu registro do Windows XP que eu gostaria de ser sincronizada entre meus 2 computadores, no estilo Dropbox. O jeito que eu quero é que toda vez que eu faço uma alteração no registro em um computador, ele aparece no (s) outro (s) computador (es).

Possível? Quão?

(Se você está curioso sobre o motivo pelo qual eu quero fazer isso: quero ter as mesmas sessões PuTTY em todos os computadores.)

Ram Rachum
fonte
Eu tenho uma pequena idéia para alguma coisa ... Você pode me dizer o caminho exato das chaves de registro de massa que você deseja? Vou sair agora, mas voltarei em cerca de uma hora e tentarei ajudar ainda mais.
William Hilsum
@ William Hilsum: É HKEY_CURRENT_USER\Software\SimonTatham\PuTTY.
Rachum
1
Esses computadores geralmente estão na mesma rede? Ou você quer que isso funcione remotamente também?
Music2myear
@Ram Rachum É o mesmo nos dois computadores?
William Hilsum
2
Se se trata de massa, por que não usar massa portátil ? Ele armazena as configurações em um arquivo. Sincronize suas cópias do Portable Putty via dropbox ou o que for.
Zoredache

Respostas:

6

Desculpe por demorar tanto, acho que esse foi o maior tempo que demorei para escrever uma resposta!

Há muito tempo, eu queria uma funcionalidade muito semelhante, mas não conseguia encontrar uma maneira de fazê-lo ... agora que conheço um pouco mais de programação, pensei que valeria a pena tentar fazer algo.

Então, algumas horas depois, eu te dou RegSync v1.

insira a descrição da imagem aqui

Simplesmente pegue uma cópia do caminho completo do registro (no seu caso HKEY_CURRENT_USER\Software\SimonTatham\PuTTY) e cole-o na caixa.

Clique em Iniciar e ele monitorará automaticamente essa chave do Registro em busca de adições, exclusões ou alterações.

Se detectar alguma alteração, *exportará um arquivo de registro chamado regsync.regna mesma pasta em que o aplicativo está sendo executado.

* No caso de mais de uma alteração de cada vez, aguardará 5 segundos após a primeira alteração.

Quando / depois que o botão Iniciar for pressionado, ele monitorará a pasta em que está inserido para quaisquer alterações no regsync.regarquivo e, se detectar uma alteração, excluirá TODAS as entradas na chave do registro que você selecionou localmente e importará o arquivo do registro. (Por favor, tenha cuidado, ele não verificará se o .Regarquivo corresponde ao local que está monitorando; portanto, se você digitar locais diferentes em cada PC, poderá ficar ruim).

Então ... você pode executá-lo em dropbox ou compartilhamentos do Windows ou em qualquer outro serviço de compartilhamento de pastas. Execute-o nos dois computadores e selecione a chave do Registro para monitorar.

Notas extras ...

  • Isso requer o .NET framework versão 4.

  • Ele não monitora subchaves, você pode executar cópias adicionais da ferramenta em pastas diferentes (eu já tenho idéias para melhorar isso, mas somente se as pessoas precisarem da ferramenta).

  • Embora ele não exija elevação do UAC, ele fará com que você o altere toda vez que tentar importar ou exportar do registro (basicamente chama regedit.exe/ reg.exe), portanto, eu recomendo que você execute o programa elevado ... Ele faz isso várias vezes e vai se tornar muito chato.

  • Sem garantias - ele recebe o selo "Funciona no meu PC" e eu o testei em algumas máquinas, mas isso não teve revisão de código nem horas de teste ... Começa a terminar em algumas horas.

Mesmo se você não usá-lo, espero que seja útil para alguém por aí!

Link para Download

William Hilsum
fonte
Agradável! Você está mantendo o código-fonte fechado?
Ram Rachum
@Ram Rachum - Eu realmente não "faço" código aberto (projetos inteiros) muito ... Se alguém tiver alguma dúvida / quiser ver alguma coisa, terei o maior prazer em fornecer código de exemplo a partir dele ... ou compartilhar codifique com amigos pelo Dropbox .... Se você tiver alguma sugestão ou quiser melhorias, me avise. ... Ainda sou um programador novo e tenho tentado entender os sistemas VCS ... Quando os entendo, posso carregar / começar a compartilhar!
William Hilsum
1
@William; O código-fonte aberto não precisa ser chique, basta compactar o código-fonte e carregá-lo ao lado e é código-fonte aberto!
Phoshi
@ Phoshi -: / bom ponto ... Talvez em breve!
William Hilsum
O RegSync v1 estará no codeplex no futuro como código aberto? minha empresa precisa de um código-fonte de auditoria antes de instalar qualquer aplicativo ou programa em ambientes.
Kiquenet
5

pode ser mais fácil executar o regedit.exe no modo silencioso com um arquivo de registro que contém as entradas exatas que você deseja. Você pode configurar cada computador para executá-lo em um local compartilhado, para que tudo que você precise fazer seja atualizar o arquivo e, quando a próxima execução agendada do regedit.exe for executada em cada computador, eles receberão as novas entradas.

algo como:

regedit.exe /S puttyentries.reg

Para extrair uma chave do Registro de um computador, você usaria:

regedit.exe /E puttyentries.reg "registry_key"

Provavelmente haveria maneiras mais elegantes de automatizar todo o processo usando vbscript ou autoit com funções remotas de leitura / gravação para o registro.

Aqui está um exemplo do AutoIt que sincronizará a cada 30 minutos com um computador remoto (ressalva, eu realmente não testei isso):

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
fonte
Eu não gostaria de editar um arquivo manualmente. regeditTambém pode extrair do registro no modo silencioso?
Rachum
editado para adicionar opção de leitura, vou ver o que posso escrever-se de uma opção com script mais elegante
MaQleod
1
Isso pode ser adequado para quem solicitou, mas isso não sincronizará a exclusão das configurações. Portanto, se você excluir uma configuração de massa em uma exportação de host, reimporte no host de seção, a exclusão não ocorrerá. Quando você exporta e importa novamente para o host que excluiu um item de configuração, seu item excluído será restaurado.
Zoredache
ok, adicionou um exemplo de autoit que fará todo o processo por conta própria (ou pelo menos deveria, eu não testei, então faça o backup de tudo primeiro).
precisa saber é o seguinte