Control de versiones para la configuración de Windows

8

¿Cómo puedo poner mi configuración personal de Windows bajo control de versiones ?

Resumen (detalles y ejemplos a continuación):

  • Configuración personal (por ejemplo, preferencias de escritorio), no configuración del sistema (por ejemplo, controladores); debería funcionar sin derechos de administrador
  • Control de versiones, no copias de seguridad o imágenes de disco

Aquí hay algunas cosas que quiero poder hacer:

  • Confirmar el estado actual de mi configuración en un repositorio, preferiblemente con cierta granularidad (si he realizado dos cambios, me gustaría poder confirmar uno sin confirmar el otro).
  • Escriba una entrada de registro de cambios cada vez que confirme y vea la lista de entradas de registro de cambios para cada archivo de configuración.
  • Vea las diferencias entre el estado actual y una versión de repositorio.
  • Echa un vistazo a mi repositorio en una nueva máquina con Windows y reproduce mi configuración (al menos si la nueva máquina tiene la misma versión de Windows).

<added1> No intentaré dar una definición completamente precisa de "configuración"; Estoy tratando de cubrir todo tipo de preferencias personales (por ejemplo, cualquier cosa configurable en el panel de control sin derechos de administrador, accesos directos en el menú "Programas" específico de mi usuario, ...). No quiero incluir mis documentos o aplicaciones instaladas. </added1>

<added2> Tenga en cuenta que estoy apuntando a mi configuración personal, no a la configuración del sistema (eso también sería útil, pero no es el propósito de esta pregunta). Por ejemplo, espero que una solución funcione sin derechos de administrador. </added1>

Lo que hago en Unix es poner (una selección de) mis archivos de puntos bajo control de versiones . En Windows, supongo que debería confirmar el registro y algunos archivos (¿qué?) En Application Data. Me gustaría algo mejor que poner todo el archivo de registro bajo control de versiones (eso no es suficiente granularidad, y me temo que hay problemas de bloqueo). <added1> Idealmente, usaría wrappers o scripts con algún software de control de versiones común (Bazaar, CVS, Darcs, Git, Mercurial, Subversion, ...), pero eso no es un requisito absoluto. </added1>

Actualmente necesito trabajar con Windows 2000 y Windows XP. Como esto es para una máquina de trabajo, el software de pago no funcionará (el código abierto sería ideal). Me siento más cómodo con la línea de comandos que con las GUI.

<added1> Aquí hay un flujo de trabajo de muestra:

  • Un día decido que quiero que el fondo de mi escritorio sea rosado. Entonces hago el cambio a través de la GUI. Esto modifica una línea en una clave de archivo de configuración en el registro. Luego cometo el cambio, para seguirlo.
  • Más tarde me pregunto por qué mi fondo de escritorio es rosa. Entonces busco "color de escritorio" en el registro de cambios.
  • Un día necesito usar una nueva máquina. Así que salgo de mi repositorio de configuración, y voilà, escritorio rosa.

Aquí hay algunas cosas que no estoy tratando de hacer:

  • No estoy tratando de hacer copias de seguridad. Quiero poder rastrear los cambios (por semántica, o al menos sintaxis, no solo por fecha), y compartir información entre máquinas (un repositorio, múltiples pagos).

  • No estoy tratando de replicar una instalación de Windows. No quiero transferir dependencias de hardware, aplicaciones instaladas o documentos.

</added1>

Gilles 'SO- deja de ser malvado'
fuente
44
¿Cuál es el objetivo final de esto? ¿Estás tratando de aplicar ingeniería inversa a una aplicación? La razón por la que pregunto es que sin los informes sobre qué es diferente, mantener un estado liofilizado sería fácil. Incluso ver los cambios puede no ser demasiado difícil, pero no registrarlos en el control de versiones. Solo me gustaría tener una mejor comprensión de lo que desea lograr y tal vez podría sugerir un enfoque diferente.
Scott McClenning
De acuerdo con @Scott, no veo que esto sea muy práctico (o incluso posible, para el caso). Más detalles sobre lo que está tratando de lograr sería genial.
Sasha Chedygov
1
+1 ... es casi seguro que estás haciendo esto de la manera incorrecta.
Zac Thompson
@Scott: mi objetivo es utilizar el control de versiones para mis personalizaciones de Windows. No tengo idea de por qué mi pregunta te sugiere ingeniería inversa. @Zac: No puedo hacer esto de la manera incorrecta, ya que no he dado el primer paso.
Gilles 'SO- deja de ser malvado'
Parecía que su objetivo era hacer algo en un sistema y luego ver qué sucedía, configurar una configuración que puede restaurar más tarde. Si necesitara restaurar una configuración más tarde, usaría algún software de máquina virtual para tomar instantáneas. Eso no le dirá lo que sucedió, pero lo llevaría al mismo lugar una y otra vez. Si desea ver qué hace una aplicación, hay programas que crean archivos msi haciendo una diferencia de un sistema antes y después de la instalación. Luego puede mirar dentro del msi y ver qué tocó / cambió la aplicación. Pero ninguno de estos son "control de versiones".
Scott McClenning

Respuestas:

9

Hasta donde yo sé, la configuración de Windows está demasiado dispersa para realizar copias de seguridad de manera confiable, entre demasiados archivos y lugares en el registro.

Es imposible hacer una copia de seguridad del registro en una máquina y restaurarla en otra (o incluso en la misma), porque demasiadas claves son demasiado específicas para la máquina y porque algunas claves están protegidas por Windows.

Restaurar sistema tiene como objetivo mantener el estado de la máquina, pero para su propósito no es confiable, ya que decidirá qué copias de seguridad eliminar para ahorrar espacio y tiene otros problemas negativos, como no estar disponible en Windows 2000.

La única solución universal que puedo ver es crear una imagen del disco del sistema en su totalidad y restaurarlo cuando sea necesario, utilizando un producto de imagen de disco.

Hay varios productos de imágenes de disco de muy buena calidad, que puedo recomendar si encuentra que esta solución le interesa. Varios de ellos mantienen un repositorio de imágenes descriptivas. Aunque los mejores son comerciales, los gratuitos todavía son muy buenos.

La imagen de disco funciona mejor cuando la unidad del sistema no contiene datos del usuario.

harrymc
fuente
1
+1 Estoy de acuerdo con eso. No puedo ver las características de Disk-Imaging, pero uso DriveImage ( runtime.org/driveimage-xml.htm ) que le permite hacer una copia de seguridad del disco mientras usa el sistema utilizando técnicas confiables. También le permite navegar por los archivos
Cristian T
Puede ser más simple usar una VM y tomar instantáneas, en lugar de usar un producto de imágenes de disco. Sería mucho más sencillo migrar entre máquinas si el hardware no es idéntico.
Velociraptors
@harrymc: Lo siento si mi formulación inicial no fue clara la primera vez (sospecho que tomó un fondo de Unix para entender lo que quise decir), pero estoy tratando de hacer una copia de seguridad de mi configuración de usuario, no la configuración del sistema .
Gilles 'SO- deja de ser malvado'
1
La respuesta seguiría siendo la misma, a menos que pueda reducir la lista de elementos en la configuración del usuario. No existe un área real de "configuración de usuario" en Windows, a diferencia de los directorios de puntos de Linux. Existe una sección de registro de usuarios, pero gran parte de la información del usuario se encuentra dispersa en otros lugares y en todo el disco en "Archivos de programa", "Usuarios", etc. Ni siquiera puede monitorear los cambios en el registro, porque Windows mismo modifica muchísimo de ellos mientras trabajaba. Y cada aplicación inventa sus propias reglas. Hay una razón por la cual Linux es más eficiente ...
harrymc
Como usuario de Windows, también me hubiera gustado tener un mecanismo como el que usted describe. Por desgracia, es bastante imposible. Debería rastrear cada aplicación y tipo de cambio utilizando Process Monitor, para encontrar dónde se almacenan los datos. Este es un proyecto enorme que exige una monstruosa inversión de tiempo.
harrymc
2

Viniendo del lado del servidor de la cerca, donde esperarías que seamos muy paranoicos sobre los cambios de configuración y de dónde provienen, puedo decir que realmente no existen. El seguimiento de configuración global es un proceso totalmente manual en su mayor parte. Es posible monitorear (pero no prevenir ) áreas de registro específicas para cambios, pero no conozco paquetes de software gratuitos / baratos que permitan eso y varios muy costosos (es un problema mucho más complejo que rastrear información de archivo y luego diferenciar dos archivos de texto; por lo tanto, caros).

Esto hace que los administradores de Unix se vuelvan locos. Kyle Brandt , administrador de sistemas de StackOverflow Inc, se estaba preocupando por este tipo de cosas hace un par de semanas cuando estaba preparando un nuevo lote de máquinas Windows para StackExchange. El crossover de Linux / Windows SysAdmins se compadeció de él. Simplemente no hay un equivalente de Windows de poner / etc en VCS. Hay algunos errores feos por ahí, como imágenes de disco / instantáneas o solo forzar cambios de configuración a través de Políticas de grupo (y rastrear cambios en los GPO manualmente), pero nada tan elegante.

Lo siento.

SysAdmin1138
fuente
2

Personalmente, hago un seguimiento de los cambios en el registro de Windows con Regshot . Toma una instantánea antes del cambio y luego una segunda después de hacerla. También puede obtener un buen informe HTML de los cambios. Por supuesto, debe asegurarse de que solo se realicen algunos cambios entre las instantáneas si desea averiguar qué hace cada cambio. Regshot es un programa de código abierto.

Si está buscando el seguimiento / copia de seguridad de los cambios en el sistema de archivos, lo más probable es que sea DocShield . Puede rastrear cualquier carpeta con ella, aunque los datos de la aplicación son probablemente su mejor conjetura para sus cambios de preferencias personales de la mayoría de los usuarios de Windows. DocShield es gratuito para usuarios domésticos. Puede imitar lo que hace usando xcopy /d:{m-d-y}las carpetas que necesita y luego comprimir / 7z la salida.

Luego agregue la salida de ambas copias de seguridad a cualquier repositorio de control de versiones con sus comentarios.

Shogox
fuente
Dado que no me interesan los informes HTML, ¿qué haría Regshot que no hagan Microsoft reg.exey Cygwin regtool? En cuanto a DocShield, ¿qué hace que ningún software de control de versiones funcione mejor?
Gilles 'SO- deja de ser malvado'
Recompensa otorgada por Regshot. No creo que sea realmente lo que quiero, pero es un buen comienzo sobre el que podría construir (especialmente dado que es de código abierto).
Gilles 'SO- deja de ser malvado'
Creo que el mío era más de lo que estás buscando ... pero no porque quisiera la recompensa solo para avisarte.
jer.salamon
1

No sería simple, pero podría usar Sysinternals Process Monitor para determinar qué archivos y configuraciones de registro se modificaron. Luego puede agregar las ediciones del registro y los archivos actualizados en un programa más grande que hará los cambios por usted. Probablemente podría usar Power Shell o algo así como AutoIt. Luego verifique el script resultante en sus vcs. Utilizo un método similar para automatizar configuraciones extrañas en scripts de inicio de sesión y plantillas de administración de directivas de grupo personalizadas.

vago
fuente
Si te entiendo correctamente, básicamente propones mantener solo la diferencia inducida por mis cambios, en lugar de todo el registro y el Application Datacontenido, ¿verdad? ¿Cómo detectaría los cambios realizados cuando el programa del monitor no se está ejecutando por alguna razón? ¿Existe una forma razonable de extender el flujo de trabajo para permitir las operaciones de actualización (es decir, ya he realizado un pago y deseo aplicar algunos cambios más realizados en otra máquina)?
Gilles 'SO- deja de ser malvado'
1

No tengo una solución de sistema operativo para ti, pero hay una posibilidad paga. Lo que podría hacer es hacer una copia de seguridad de su unidad utilizando DriveImage XML

El formato de copia de seguridad es XML. A continuación, puede guardar este archivo xml (también son posibles diferencias) en su sistema de control de versiones favorito.

Como ha dicho HarryMC , realmente no puede usar esta imagen para hacer cambios en un nuevo sistema, pero definitivamente puede usar la imagen en un nuevo sistema con exactamente el mismo hardware.

Devdatta Tengshe
fuente
1

Puede utilizar el software de gestión de perfiles de ForensiT para copiar todo su perfil con la activación de un cuadro de Windows. Vaya aquí para verlo: Administrador de perfiles de usuario

jer.salamon
fuente
No veo cómo este programa podría ayudarme: parece que es para implementar perfiles en varias máquinas, lo cual no es mi principal preocupación (administrar el historial). Puedo ver que podría ser una herramienta valiosa para los administradores, pero soy un usuario aquí.
Gilles 'SO- deja de ser malvado'
Le brinda la posibilidad de hacer una copia de seguridad de su perfil de usuario y poder restaurarlo cuando lo desee. ¿No es eso lo que estás buscando?
jer.salamon
-2

Me parece que está describiendo una aplicación de base de datos en la que rastrea las claves de registro e indexa por una etiqueta. Aunque no soy lo suficientemente técnico con las claves de registro para hacer esto, en su ejemplo desea buscar la base de datos de Pink Desk top y obtener las instrucciones que implementarán ese cambio en una computadora diferente. Es decir, si entiendo tus intenciones

usuario50466
fuente