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.)


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


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.