Controle de versão para configuração do Windows


8

Como posso colocar minha configuração pessoal do Windows sob controle de versão ?

Resumo (detalhes e exemplos a seguir):

  • Configuração pessoal (por exemplo, preferências da área de trabalho), não configuração do sistema (por exemplo, drivers); deve funcionar sem direitos de administrador
  • Controle de versão, não backups ou imagem de disco

Aqui estão algumas coisas que eu quero poder fazer:

  • Confirme o estado atual da minha configuração em um repositório, de preferência com alguma granularidade (se eu tiver feito duas alterações, gostaria de poder confirmar uma sem confirmar a outra).
  • Escreva uma entrada no registro de alterações sempre que eu confirmar, e veja a lista de entradas para cada arquivo de configuração.
  • Veja as diferenças entre o estado atual e uma versão do repositório.
  • Faça check-out no meu repositório em uma nova máquina Windows e reproduza minha configuração (pelo menos se a nova máquina tiver a mesma versão do Windows).

<added1> Não tentarei dar uma definição completamente precisa de "configuração"; Estou tentando cobrir todos os tipos de preferências pessoais (por exemplo, qualquer coisa configurável no painel de controle sem direitos de administrador, atalhos no menu “Programas” específicos do usuário,…). Não quero incluir meus documentos ou aplicativos instalados. </added1>

<added2> Observe que estou direcionando minha configuração pessoal, não a configuração do sistema (isso seria útil também, mas não é o objetivo desta pergunta). Por exemplo, espero que uma solução funcione sem direitos de administrador. </added1>

O que faço no unix é colocar (uma seleção de) meus arquivos de ponto sob controle de versão . No Windows, presumo que devo confirmar o registro e alguns arquivos (quais?) Application Data. Gostaria de algo melhor do que colocar todo o arquivo do Registro sob controle de versão (isso não é granularidade suficiente e receio bloquear problemas). <added1> Idealmente, eu usaria wrappers ou scripts com algum software de controle de versão comum (Bazaar, CVS, Darcs, Git, Mercurial, Subversion, ...), mas isso não é um requisito absoluto. </added1>

Atualmente, preciso trabalhar com o Windows 2000 e Windows XP. Como isso é para uma máquina de trabalho, o payware não funciona (código aberto seria o ideal). Estou mais à vontade com a linha de comando do que com as GUIs.

<added1> Veja um exemplo de fluxo de trabalho:

  • Um dia, decido que quero que o fundo da minha área de trabalho seja rosa. Então, eu faço a alteração através da GUI. Isso modifica uma linha em uma chave do arquivo de configuração no registro. Em seguida, comprometo a alteração, para acompanhá-la.
  • Mais tarde, eu me pergunto por que meu plano de fundo da área de trabalho é rosa. Então, eu procuro por "cor da área de trabalho" no registro de alterações.
  • Um dia eu preciso usar uma nova máquina. Então, eu saio do meu repositório de configuração e voilà, desktop rosa.

Aqui estão algumas coisas que não estou tentando fazer:

  • Não estou tentando fazer backups. Quero poder rastrear alterações (por semântica, ou pelo menos sintaxe, não apenas por data) e compartilhar informações entre máquinas (um repositório, vários checkouts).

  • Não estou tentando replicar uma instalação do Windows. Não quero manter dependências de hardware, aplicativos instalados ou documentos.

</added1>


4
Qual é o objetivo final disso, você está tentando fazer engenharia reversa de um aplicativo? A razão pela qual pergunto é que sem os relatórios sobre o que é diferente, seria fácil manter um estado liofilizado. Mesmo ver as alterações pode não ser muito difícil, mas não as verifica no controle de versão. Gostaria apenas de entender melhor o que você deseja realizar e talvez eu possa sugerir uma abordagem diferente.
Scott McClenning

Concordo com o @Scott, não acho isso muito prático (ou mesmo possível). Seria ótimo obter mais detalhes sobre o que você está tentando realizar.
Sasha Chedygov

1
+1 ... você quase certamente está fazendo isso da maneira errada.
Zac Thompson

@ Scott: meu objetivo é usar o controle de versão para minhas personalizações do Windows. Não tenho idéia do por que minha pergunta sugere engenharia reversa para você. @Zac: Eu não posso fazer isso da maneira errada, pois não dei o primeiro passo.
Gilles 'SO- stop be evil'

Parecia que seu objetivo era fazer algo em um sistema e, em seguida, ver o que aconteceu, vice-definir uma configuração que você pode restaurar mais tarde. Se você precisar restaurar uma configuração posteriormente, eu usaria algum software de máquina virtual para tirar instantâneos. Isso não vai lhe dizer o que aconteceu, mas o levaria ao mesmo local várias vezes. Se você deseja ver o que um aplicativo faz, existem programas que criam arquivos msi fazendo uma diferença de pré e pós-instalação do sistema. Você pode olhar dentro do msi e ver o que o aplicativo tocou / mudou. Mas nenhum deles é "controle de versão".
Scott McClenning

Respostas:


9

Até onde eu sei, a configuração do Windows é muito dispersa para um backup confiável, entre muitos arquivos e locais no registro.

É impossível fazer backup do registro em uma máquina e restaurá-lo em outra (ou mesmo na mesma), porque muitas chaves são específicas demais para a máquina e porque algumas são protegidas pelo Windows.

A Restauração do sistema visa manter o estado da máquina, mas, para o seu propósito, não é confiável, pois decide quais backups excluir para economizar espaço e tem outros problemas negativos, como não estar disponível no Windows 2000.

A única solução universal que posso encontrar é criar uma imagem completa do disco do sistema e restaurá-lo quando necessário, usando um produto de imagem de disco.

Existem vários produtos de imagem de disco de muito boa qualidade, que eu recomendo se você achar que esta solução lhe interessa. Vários deles mantêm um repositório de imagens com descritivo. Embora os melhores sejam comerciais, os de freeware ainda são muito bons.

As imagens de disco funcionam melhor quando a unidade do sistema não contém dados do usuário.


1
+1 Eu concordo com isso. Não consigo ver os recursos do Disk-Imaging, mas uso o DriveImage ( runtime.org/driveimage-xml.htm ), que permite fazer backup do disco enquanto estiver usando o sistema usando técnicas confiáveis. Ele também permite que você navegue nos arquivos
Cristian T

Pode ser mais simples usar uma VM e tirar instantâneos, em vez de usar um produto de imagem de disco. Seria muito mais simples migrar entre máquinas se o hardware não for idêntico.
Velociraptors

@harrymc: Me desculpe se minha formulação inicial não foi clara da primeira vez (suspeito que tenha sido necessário um background unix para entender o que eu quis dizer), mas estou tentando fazer backup da minha configuração do usuário, não da configuração do sistema .
Gilles 'SO- stop be evil'

1
A resposta ainda seria a mesma, a menos que você possa restringir bastante a lista de elementos na configuração do usuário. Não existe uma área real de "configuração do usuário" no Windows, diferente dos diretórios de pontos do Linux. Existe uma seção de registro do usuário, mas muitas informações do usuário estão espalhadas em outros lugares e por todo o disco em "Arquivos de Programas", "Usuários" etc. Você nem pode monitorar as alterações no registro, porque o próprio Windows modifica bastante deles enquanto trabalhava. E todo aplicativo inventa suas próprias regras. Existe uma razão pela qual o Linux é mais eficiente ...
harrymc

Como usuário do Windows, eu também gostaria de ter um mecanismo como você descreve. Infelizmente, é completamente impossível. Você precisaria rastrear todos os aplicativos e tipos de alterações usando o Process Monitor, para descobrir onde os dados estão armazenados. Este é um projeto enorme que exige um investimento monstruoso de tempo.
harrymc 27/09/10

2

Vindo do lado do servidor, onde você espera que fiquemos paranóicos com relação às alterações de configuração e de onde elas vieram, posso dizer que elas realmente não existem. O rastreamento de configuração global é um processo totalmente manual para a maior parte. É possível monitorar (mas não impedir ) áreas de registro específicas em busca de alterações, mas não conheço nenhum pacote de software gratuito / barato que permita isso e vários muito caros (é um problema muito mais complexo do que rastrear informações do arquivo e depois diferenciar dois arquivos de texto; portanto, caro).

Isso deixa os administradores do Unix extravagantes. Kyle Brandt , administrador de sistemas da StackOverflow Inc, estava discutindo esse tipo de coisa há algumas semanas, enquanto preparava um novo lote de máquinas Windows para o StackExchange. O crossover Linux / Windows SysAdmins todos se solidarizaram com ele. Simplesmente não há equivalente ao Windows em colocar / etc no VCS. Existem alguns argumentos feios por aí, como criação de imagens / instantâneos de disco ou apenas forçar alterações de configuração por meio das Diretivas de Grupo (e acompanhar manualmente as alterações nos GPOs), mas nada tão elegante.

Desculpa.


2

Pessoalmente, acompanho as alterações no registro do Windows com o Regshot . Você tira um instantâneo antes da alteração e depois um segundo depois de fazer a alteração. Você também pode obter um bom relatório HTML das alterações. É claro que você deve garantir que apenas algumas alterações sejam feitas entre os instantâneos, se quiser descobrir o que cada alteração faz. Regshot é um programa de código aberto.

Se você estiver procurando por alterações / rastreamento de sistema de arquivos o mais próximo possível, provavelmente haveria o DocShield . Você pode rastrear qualquer pasta com ele, embora os dados do aplicativo sejam provavelmente o seu melhor palpite para as alterações nas preferências pessoais do software que reconhece a maioria dos perfis de usuários do Windows. O DocShield é gratuito para usuários domésticos. Você pode imitar o que ele faz usando xcopy /d:{m-d-y}as pastas necessárias e depois compactar / 7z a saída.

Em seguida, adicione a saída de ambos os backups a qualquer repositório de controle de versão com suas observações.


Dado que eu não me importo com relatórios HTML, o que o Regshot faria com os da Microsoft reg.exee Cygwin regtool? Quanto ao DocShield, o que faz com que qualquer software de controle de versão não funcione melhor?
Gilles 'SO- stop be evil'

Recompensa concedida por Regshot. Eu não acho que é realmente o que eu quero, mas é um bom começo que eu possa aproveitar (especialmente considerando o código aberto).
Gilles 'SO- stop be evil'

Eu acho que o meu era mais o que você estava procurando ... mas não porque eu queria a recompensa apenas para que você soubesse.
precisa saber é o seguinte

1

Não seria simples, mas você poderia usar o Sysinternals Process Monitor para determinar quais arquivos e configurações do registro foram alterados. Você pode adicionar as edições do registro e os arquivos atualizados em um programa maior que fará as alterações para você. Você provavelmente poderia usar o Power Shell ou algo como o AutoIt. Em seguida, verifique o script resultante em seus vcs. Uso um método semelhante para automatizar configurações estranhas em scripts de logon e modelos de administração de Diretiva de Grupo personalizados.


Se eu entendi direito, você está basicamente se propondo a manter apenas a diferença induzida por minhas alterações, em vez de todo o registro e Application Dataconteúdo, certo? Como eu detectaria as alterações feitas quando o programa monitor não está sendo executado por algum motivo? Existe uma maneira razoável de estender o fluxo de trabalho para ativar as operações de atualização (ou seja, eu já fiz uma verificação geral e quero aplicar mais algumas alterações feitas em outra máquina)?
Gilles 'SO- stop be evil'

1

Não tenho uma solução de SO para você, mas existe uma possibilidade paga. O que você pode fazer é fazer backup da sua unidade usando o DriveImage XML

O formato de backup é XML. Você pode salvar esse arquivo xml (difs também são possíveis) no seu sistema de controle de versão favorito.

Como o HarryMC disse, você realmente não pode usar esta imagem para fazer alterações em um novo sistema, mas definitivamente pode usar a imagem em um novo sistema com exatamente o mesmo hardware.


1

Você pode usar o software de gerenciamento de perfis do ForensiT para copiar todo o seu perfil com a ativação de uma caixa do Windows. Acesse aqui para conferir: User Profile Manager


Não vejo como esse programa poderia me ajudar: parece que é para implantar perfis em várias máquinas, o que não é minha preocupação central (gerenciamento de histórico). Percebo que pode ser uma ferramenta valiosa para administradores, mas sou um usuário aqui.
Gilles 'SO- stop be evil'

Ele fornece a capacidade de fazer backup do seu perfil de usuário e restaurá-lo quando você escolher. Não é isso que você está procurando?
precisa saber é o seguinte

-2

Parece-me que você está descrevendo um aplicativo de banco de dados em que rastreia as chaves do registro e as indexa por uma tag. Embora eu não seja técnico o suficiente com chaves de registro para fazer isso, no seu exemplo, você deseja procurar no Pink Desk top do banco de dados e obter as instruções que implementarão essa alteração em outro computador. Ou seja, se eu entendo suas intenções

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.