Controllo della versione per la configurazione di Windows


8

Come posso mettere la mia configurazione personale di Windows sotto controllo della versione ?

Riepilogo (dettagli ed esempi seguenti):

  • Configurazione personale (ad es. Preferenze del desktop), non configurazione del sistema (ad es. Driver); dovrebbe funzionare senza diritti di amministratore
  • Controllo della versione, non backup o imaging del disco

Ecco alcune cose che voglio essere in grado di fare:

  • Commettere lo stato corrente della mia configurazione in un repository, preferibilmente con una certa granularità (se ho apportato due modifiche, mi piacerebbe essere in grado di eseguire il commit di uno senza il commit dell'altro).
  • Scrivere una voce del log delle modifiche ogni volta che commetto e vedere l'elenco delle voci del log delle modifiche per ciascun file di configurazione.
  • Vedi le differenze tra lo stato corrente e una versione del repository.
  • Dai un'occhiata al mio repository su un nuovo computer Windows e riproduci la mia configurazione (almeno se il nuovo computer ha la stessa versione di Windows).

<added1> Non proverò a dare una definizione completamente precisa di "configurazione"; Sto cercando di coprire tutti i tipi di preferenze personali (ad esempio, qualsiasi cosa impostabile nel pannello di controllo senza diritti di amministratore, scorciatoie nel menu "Programmi" specifico dell'utente, ...). Non voglio includere i miei documenti o le applicazioni installate. </ added1>

<added2> Nota che sto prendendo di mira la mia configurazione personale, non la configurazione del sistema (sarebbe utile, ma non è lo scopo di questa domanda). Ad esempio, mi aspetto che una soluzione funzioni senza i diritti di amministratore. </ added1>

Quello che faccio in unix è mettere (una selezione di) i miei file dot sotto il controllo della versione . In Windows, presumo che dovrei eseguire il commit del registro e di alcuni file (quali?) In Application Data. Vorrei qualcosa di meglio che mettere l'intero file di registro sotto il controllo della versione (non è abbastanza granularità e temo di bloccare i problemi). <added1> Idealmente avrei usato wrapper o script con alcuni software di controllo di versione comuni (Bazaar, CVS, Darcs, Git, Mercurial, Subversion, ...), ma questo non è un requisito assoluto. </ added1>

Al momento ho bisogno di lavorare con Windows 2000 e Windows XP. Poiché questo è per una macchina da lavoro, il payware non funziona (l'open source sarebbe l'ideale). Mi sento più a mio agio con la riga di comando che con le GUI.

<added1> Ecco un flusso di lavoro di esempio:

  • Un giorno decido che voglio che il mio sfondo del desktop sia rosa. Quindi apporto la modifica tramite la GUI. Ciò modifica una riga in una chiave del file di configurazione nel registro. Quindi commetto il cambiamento per tenerne traccia.
  • Più tardi mi chiedo perché il mio sfondo del desktop sia rosa. Quindi cerco il "colore del desktop" nel log delle modifiche.
  • Un giorno ho bisogno di usare una nuova macchina. Quindi controllo dal mio repository di configurazioni e voilà, desktop rosa.

Ecco alcune cose che non sto cercando di fare:

  • Non sto cercando di eseguire backup. Voglio essere in grado di tracciare le modifiche (per semantica, o almeno la sintassi, non solo per data) e condividere informazioni tra macchine (un repository, più checkout).

  • Non sto cercando di replicare un'installazione di Windows. Non voglio trasferire dipendenze hardware, applicazioni installate o documenti.

</ Added1>


4
Qual è l'obiettivo finale di questo, stai cercando di decodificare un'app? Il motivo per cui chiedo è senza le relazioni su ciò che è diverso, mantenere uno stato liofilizzato sarebbe facile. Anche vedere le modifiche potrebbe non essere troppo difficile, ma non controllarle nel controllo della versione. Vorrei solo una maggiore comprensione di ciò che vuoi realizzare e forse potrei suggerire un approccio diverso.
Scott McClenning,

Concordo con @Scott, non vedo che sia molto pratico (o addirittura possibile, del resto). Maggiori dettagli su ciò che stai cercando di realizzare sarebbero grandiosi.
Sasha Chedygov,

1
+1 ... quasi sicuramente lo farai nel modo sbagliato.
Zac Thompson,

@Scott: il mio obiettivo è utilizzare il controllo versione per le mie personalizzazioni di Windows. Non ho idea del perché la mia domanda ti suggerisca il reverse engineering. @Zac: Non posso fare questo nel modo sbagliato, dal momento che non ho fatto il primo passo.
Gilles 'SO- smetti di essere malvagio' il

Sembrava che il tuo obiettivo fosse quello di fare qualcosa su un sistema e poi vedere cosa è successo, vice setup una configurazione che puoi ripristinare in un secondo momento. Se avessi bisogno di ripristinare una configurazione in un secondo momento, utilizzerei un software di macchina virtuale per scattare istantanee. Questo non ti dirà cosa è successo, ma ti porterebbe allo stesso posto ancora e ancora. Se vuoi vedere cosa fa un'app ci sono programmi che creano file msi facendo una diff di un sistema pre e post installazione. Puoi quindi guardare all'interno dell'MSI e vedere cosa ha toccato / modificato l'app. Ma nessuno di questi sono "controllo versione".
Scott McClenning,

Risposte:


9

Per quanto ne so, la configurazione di Windows è troppo diffusa per eseguire il backup in modo affidabile, tra troppi file e posizioni nel registro.

È impossibile eseguire il backup del registro su un computer e ripristinarlo su un altro (o anche sullo stesso), perché troppe chiavi sono troppo specifiche per il computer e perché alcune chiavi sono protette da Windows.

Ripristino configurazione di sistema mira a mantenere lo stato della macchina, ma per il tuo scopo è inaffidabile, poiché deciderà da sé quali backup eliminare per risparmiare spazio e presenta altri problemi negativi come non essere disponibile in Windows 2000.

L'unica soluzione universale che posso vedere è l'immagine del disco di sistema nella sua interezza e ripristinarlo quando necessario, utilizzando un prodotto di imaging del disco.

Esistono diversi prodotti di imaging del disco di ottima qualità, che posso consigliare se ritieni che questa soluzione ti interessi. Molti di loro mantengono un repository di immagini con descrittivi. Sebbene i migliori siano commerciali, quelli gratuiti sono ancora molto buoni.

L'imaging del disco funziona meglio quando l'unità di sistema non contiene dati utente.


1
+1 Sono d'accordo con quello. Non riesco a vedere le funzionalità di Disk-Imaging ma utilizzo DriveImage ( runtime.org/driveimage-xml.htm ) che consente di eseguire il backup del disco durante l'utilizzo del sistema utilizzando tecniche affidabili. Ti permette anche di sfogliare i file
Cristian T

Potrebbe essere più semplice utilizzare una macchina virtuale e scattare istantanee, anziché utilizzare un prodotto di imaging del disco. Sarebbe molto più semplice migrare tra macchine se l'hardware non è identico.
Velociraptors il

@harrymc: mi dispiace se la mia formulazione iniziale non è stata chiara la prima volta (sospetto che ci sia voluto uno sfondo unix per capire cosa intendevo dire), ma sto cercando di eseguire il backup della mia configurazione utente, non della configurazione del sistema .
Gilles 'SO- smetti di essere malvagio' il

1
La risposta sarebbe sempre la stessa, a meno che non sia possibile restringere bruscamente l'elenco degli elementi nella configurazione dell'utente. Non esiste una vera area di "configurazione utente" in Windows, a differenza delle directory dei punti di Linux. Esiste un alveare del registro utenti, ma molte informazioni utente sono sparse in altri luoghi e su tutto il disco in "Programmi", "Utenti" ecc. Non è nemmeno possibile monitorare le modifiche del registro, poiché Windows stesso modifica moltissimo di loro mentre si lavora. E ogni applicazione inventa le proprie regole. C'è una ragione per cui Linux è più efficiente ...
harrymc,

Come utente di Windows, mi sarebbe piaciuto anche avere un meccanismo come il tuo profilo. Ahimè, è abbastanza impossibile. Dovresti tracciare ogni applicazione e ogni tipo di modifica usando Process Monitor, al fine di trovare dove sono archiviati i dati. Questo è un enorme progetto che richiede un mostruoso investimento di tempo.
harrymc,

2

Provenendo dal lato server del recinto, dove ci si aspetterebbe che fossimo molto paranoici sui cambiamenti di configurazione e da dove venissero, posso dire che non esistono davvero. Il monitoraggio della configurazione globale è un processo interamente manuale per la maggior parte. È possibile monitorare (ma non prevenire ) specifiche aree di registro per le modifiche, ma non conosco pacchetti software gratuiti / economici che lo consentano e molti altri molto costosi (è un problema molto più complesso del tracciamento delle informazioni sui file e quindi la differenza di due file di testo; quindi, costoso).

Questo spinge gli amministratori di Unix a combattere. Kyle Brandt , amministratore di sistema di StackOverflow Inc, si è lamentato di questo genere di cose un paio di settimane fa mentre stava allestendo un nuovo lotto di macchine Windows per StackExchange. Il crossover Linux / Windows SysAdmins ha commiserato con lui. Semplicemente non esiste un equivalente di Windows per mettere / etc in VCS. Ci sono alcuni brutti kludge là fuori, come imaging del disco / snapshot o forzare solo le modifiche alla configurazione tramite Criteri di gruppo (e tenere traccia delle modifiche agli oggetti Criteri di gruppo manualmente), ma nulla di altrettanto elegante.

Scusate.


2

Personalmente tengo traccia delle modifiche nel registro di Windows con Regshot . Fai uno snapshot prima della modifica e poi una seconda dopo averlo apportato. Puoi anche ottenere un bel report HTML delle modifiche. Ovviamente devi assicurarti di apportare solo alcune modifiche tra le istantanee se vuoi capire cosa fa ogni modifica. Regshot è un programma open source.

Se stai cercando il rilevamento / backup delle modifiche al file system, è probabile che ci sia DocShield . Puoi tenere traccia di qualsiasi cartella con esso sebbene i dati dell'applicazione siano probabilmente la tua ipotesi migliore per le modifiche alle tue preferenze personali della maggior parte dei software consapevoli dei profili degli utenti di Windows. DocShield è gratuito per gli utenti domestici. Puoi imitare quello che fa usando xcopy /d:{m-d-y}le cartelle che ti servono e quindi zip / 7z l'output.

Quindi aggiungi l'output di entrambi i backup a qualsiasi repository di controllo versione con le tue osservazioni.


Dato che non mi interessano i report HTML, cosa farebbe Regshot che Microsoft reg.exee Cygwin regtoolnon fanno? Per quanto riguarda DocShield, cosa fa qualsiasi software di controllo versione non funzionerà meglio?
Gilles 'SO- smetti di essere malvagio' il

Premio assegnato a Regshot. Non penso sia davvero quello che voglio, ma è un buon inizio su cui potrei essere in grado di basarmi (specialmente dato che è open source).
Gilles 'SO- smetti di essere malvagio' il

Penso che il mio fosse più quello che cercavi ... ma non perché volevo la generosità solo per farti sapere.
jer.salamon,

1

Non sarebbe semplice, ma è possibile utilizzare Sysinternals Process Monitor per determinare quali file e impostazioni del registro sono stati modificati. È quindi possibile aggiungere le modifiche del registro e i file aggiornati in un programma più grande che apporti le modifiche. Probabilmente potresti usare Power Shell o qualcosa come AutoIt. Quindi controlla lo script risultante nel tuo vcs. Uso un metodo simile per automatizzare le impostazioni strane negli script di accesso e nei modelli di amministrazione personalizzati di Criteri di gruppo.


Se ti capisco correttamente, fondamentalmente stai proponendo di mantenere solo la diff indotta dalle mie modifiche, anziché l'intero registro e il Application Datacontenuto, giusto? Come posso rilevare le modifiche apportate quando il programma di monitoraggio non è in esecuzione per qualche motivo? Esiste un modo ragionevole per estendere il flusso di lavoro per abilitare le operazioni di aggiornamento (ad esempio, ho già effettuato un checkout e voglio applicare alcune altre modifiche apportate su un altro computer)?
Gilles 'SO- smetti di essere malvagio' il

1

Non ho una soluzione OS per te, ma c'è una possibilità a pagamento. Quello che potresti fare è fare il backup del tuo disco usando DriveImage XML

Il formato di backup è XML. È quindi possibile salvare questo file XML (sono possibili anche differenze) sul sistema di controllo versione preferito.

Come ha detto HarryMC , non puoi davvero usare questa immagine per apportare modifiche a un nuovo sistema, ma puoi sicuramente usare l'immagine su un nuovo sistema con esattamente lo stesso hardware.


1

È possibile utilizzare il software di gestione dei profili di ForensiT per copiare l'intero profilo con l'impostazione di una finestra di Windows. Vai qui per verificarlo: User Profile Manager


Non vedo come questo programma possa aiutarmi: sembra che sia per la distribuzione di profili su più macchine, che non è la mia preoccupazione principale (gestione della cronologia). Vedo che potrebbe essere uno strumento prezioso per gli amministratori, ma sono un utente qui.
Gilles 'SO- smetti di essere malvagio'

Ti offre la possibilità di eseguire il backup del tuo profilo utente e di ripristinarlo quando lo desideri. Non è quello che stai cercando?
jer.salamon,

-2

Mi sembra che tu stia descrivendo un'applicazione di database in cui tieni traccia delle chiavi di registro e le indicizzi con un tag. Anche se non sono abbastanza tecnico con le chiavi del Registro di sistema per farlo, nel tuo esempio vuoi cercare Pink Desk top nel database e ottenere le istruzioni che implementeranno quella modifica su un altro computer. Cioè, se capisco le tue intenzioni

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.