Versionskontrolle für die Windows-Konfiguration

8

Wie kann ich meine persönliche Windows-Konfiguration unter Versionskontrolle stellen ?

Zusammenfassung (Details und Beispiele folgen):

  • Persönliche Konfiguration (z. B. Desktop-Einstellungen), keine Systemkonfiguration (z. B. Treiber); sollte ohne Administratorrechte funktionieren
  • Versionskontrolle, keine Backups oder Disk Imaging

Hier sind einige Dinge, die ich tun möchte:

  • Übertragen Sie den aktuellen Status meiner Konfiguration in ein Repository, vorzugsweise mit einer gewissen Granularität (wenn ich zwei Änderungen vorgenommen habe, möchte ich eine festschreiben können, ohne die andere festzuschreiben).
  • Schreiben Sie bei jedem Festschreiben einen Änderungsprotokolleintrag und sehen Sie sich die Liste der Änderungsprotokolleinträge für jede Konfigurationsdatei an.
  • Sehen Sie sich die Unterschiede zwischen dem aktuellen Status und einer Repository-Version an.
  • Checken Sie aus meinem Repository auf einem neuen Windows-Computer aus und reproduzieren Sie meine Konfiguration (zumindest wenn der neue Computer dieselbe Windows-Version hat).

<added1> Ich werde nicht versuchen, eine vollständig genaue Definition von "Konfiguration" zu geben. Ich versuche, alle Arten von persönlichen Einstellungen abzudecken (z. B. alles, was in der Systemsteuerung ohne Administratorrechte eingestellt werden kann, Verknüpfungen in meinem benutzerspezifischen Menü „Programme“,…). Ich möchte meine Dokumente oder installierten Anwendungen nicht einschließen. </ added1>

<added2> Beachten Sie, dass ich auf meine persönliche Konfiguration abziele, nicht auf die Systemkonfiguration (das wäre auch nützlich, aber es ist nicht der Zweck dieser Frage). Zum Beispiel erwarte ich, dass eine Lösung ohne Administratorrechte funktioniert. </ added1>

Unter Unix mache ich (eine Auswahl) meiner Punktedateien unter Versionskontrolle . Unter Windows sollte ich die Registrierung und einige Dateien (unter welchen?) Festschreiben Application Data. Ich hätte gerne etwas Besseres, als die gesamte Registrierungsdatei unter Versionskontrolle zu stellen (das reicht nicht aus, und ich befürchte, Probleme beim Sperren zu haben). <added1> Idealerweise würde ich Wrapper oder Skripte mit einer gängigen Versionskontrollsoftware (Bazaar, CVS, Darcs, Git, Mercurial, Subversion, ...) verwenden, aber das ist keine absolute Voraussetzung. </ added1>

Ich muss derzeit mit Windows 2000 und Windows XP arbeiten. Da dies für eine Arbeitsmaschine gilt, funktioniert Payware nicht (Open Source wäre ideal). Ich bin mit der Befehlszeile besser vertraut als mit GUIs.

<added1> Hier ist ein Beispielworkflow:

  • Eines Tages möchte ich, dass mein Desktop-Hintergrund rosa ist. Also mache ich die Änderung über die GUI. Dadurch wird eine Zeile in einem Konfigurationsdateischlüssel in der Registrierung geändert. Ich begebe dann die Änderung, um den Überblick zu behalten.
  • Später frage ich mich, warum mein Desktop-Hintergrund rosa ist. Also suche ich im Changelog nach „Desktop-Farbe“.
  • Eines Tages muss ich eine neue Maschine benutzen. Also checke ich aus meinem Konfigurations-Repository und voilà, pink Desktop.

Hier sind einige Dinge, die ich nicht versuche:

  • Ich versuche nicht, Backups zu erstellen. Ich möchte in der Lage sein, Änderungen (nach Semantik oder zumindest Syntax, nicht nur nach Datum) zu verfolgen und Informationen zwischen Computern auszutauschen (ein Repository, mehrere Checkouts).

  • Ich versuche nicht, eine Windows-Installation zu replizieren. Ich möchte keine Hardwareabhängigkeiten, installierten Anwendungen oder Dokumente übertragen.

</ added1>

Gilles 'SO - hör auf böse zu sein'
quelle
4
Was ist das Endziel davon? Versuchen Sie, eine App zurückzuentwickeln? Der Grund, den ich frage, ist, dass es ohne die Berichte darüber, was anders ist, einfach wäre, einen gefriergetrockneten Zustand beizubehalten. Selbst wenn Sie die Änderungen sehen, ist dies möglicherweise nicht allzu schwierig, aber Sie können sie nicht in die Versionskontrolle einchecken. Ich möchte nur mehr Verständnis dafür haben, was Sie erreichen möchten, und vielleicht könnte ich einen anderen Ansatz vorschlagen.
Scott McClenning
Ich stimme @Scott zu, ich sehe dies nicht als sehr praktisch (oder sogar als möglich) an. Weitere Details darüber, was Sie erreichen möchten, wären großartig.
Sasha Chedygov
1
+1 ... du machst das mit ziemlicher Sicherheit falsch.
Zac Thompson
@Scott: Mein Ziel ist es, die Versionskontrolle für meine Windows-Anpassungen zu verwenden. Ich habe keine Ahnung, warum meine Frage Ihnen Reverse Engineering vorschlägt. @Zac: Ich kann das nicht falsch machen, da ich den ersten Schritt nicht gemacht habe.
Gilles 'SO - hör auf böse zu sein'
Es schien nur so, als ob Ihr Ziel darin bestand, etwas auf einem System zu tun und dann zu sehen, was passiert ist, und eine Konfiguration einzurichten, die Sie später wiederherstellen können. Wenn Sie später eine Konfiguration wiederherstellen müssten, würde ich eine Software für virtuelle Maschinen verwenden, um Snapshots zu erstellen. Das wird dir nicht sagen, was passiert ist, aber es würde dich immer wieder an den gleichen Ort bringen. Wenn Sie sehen möchten, was eine App tut, gibt es Programme, die MSI-Dateien erstellen, indem sie einen Unterschied zwischen einem System vor und nach der Installation machen. Sie können dann in die MSI schauen und sehen, was die App berührt / geändert hat. Aber keine davon ist "Versionskontrolle".
Scott McClenning

Antworten:

9

Soweit ich weiß, ist die Windows-Konfiguration zu verstreut, um zuverlässig zwischen zu vielen Dateien und Stellen in der Registrierung zu sichern.

Es ist unmöglich, die Registrierung auf einem Computer zu sichern und auf einem anderen (oder sogar auf demselben) Computer wiederherzustellen, da zu viele Schlüssel zu spezifisch für den Computer sind und einige Schlüssel von Windows geschützt werden.

Die Systemwiederherstellung zielt darauf ab, den Computerstatus beizubehalten. Für Ihren Zweck ist sie jedoch unzuverlässig, da sie selbst entscheidet, welche Sicherungen aus Platzgründen gelöscht werden sollen, und andere negative Probleme aufweist, z. B. die Nichtverfügbarkeit in Windows 2000.

Die einzige universelle Lösung, die ich sehen kann, besteht darin, die Systemfestplatte in ihrer Gesamtheit abzubilden und sie bei Bedarf mithilfe eines Disk-Imaging-Produkts wiederherzustellen.

Es gibt mehrere Disk-Imaging-Produkte von sehr guter Qualität, die ich empfehlen kann, wenn Sie feststellen, dass diese Lösung Sie interessiert. Einige von ihnen führen ein Repository mit beschreibenden Bildern. Obwohl die besten kommerziell sind, sind die Freeware immer noch sehr gut.

Disk-Imaging funktioniert am besten, wenn das Systemlaufwerk keine Benutzerdaten enthält.

harrymc
quelle
1
+1 Dem stimme ich zu. Ich kann die Funktionen von Disk-Imaging nicht sehen, verwende jedoch DriveImage ( runtime.org/driveimage-xml.htm ), mit dem Sie die Festplatte sichern können, während Sie das System mit zuverlässigen Techniken verwenden. Es ermöglicht Ihnen auch, die Dateien zu durchsuchen
Cristian T
Es ist möglicherweise einfacher, eine VM zu verwenden und Snapshots zu erstellen, als ein Disk-Imaging-Produkt zu verwenden. Die Migration zwischen Computern wäre viel einfacher, wenn die Hardware nicht identisch wäre.
Velociraptors
@harrymc: Es tut mir leid, wenn meine ursprüngliche Formulierung beim ersten Mal nicht klar war (ich vermute, dass ein Unix-Hintergrund erforderlich war, um zu verstehen, was ich meinte), aber ich versuche, meine Benutzerkonfiguration zu sichern, nicht die Systemkonfiguration .
Gilles 'SO - hör auf böse zu sein'
1
Die Antwort wäre immer noch dieselbe, es sei denn, Sie können die Liste der Elemente in der Benutzerkonfiguration ziemlich scharf eingrenzen. Im Gegensatz zu Linux-Punktverzeichnissen gibt es in Windows keinen echten Bereich "Benutzerkonfiguration". Es gibt eine Benutzerregistrierungsstruktur, aber viele Benutzerinformationen sind an anderen Stellen und auf der gesamten Festplatte in "Programme", "Benutzer" usw. verteilt. Sie können Registrierungsänderungen nicht einmal überwachen, da Windows selbst eine Menge Änderungen vornimmt von ihnen während der Arbeit. Und jede Anwendung erfindet ihre eigenen Regeln. Es gibt einen Grund, warum Linux effizienter ist ...
harrymc
Als Windows-Benutzer hätte ich mir auch einen Mechanismus gewünscht, wie Sie ihn skizzieren. Leider ist es ziemlich unmöglich. Sie müssten jede Anwendung und jede Art von Änderung mit Process Monitor verfolgen, um herauszufinden, wo die Daten gespeichert sind. Dies ist ein riesiges Projekt, das einen ungeheuren Zeitaufwand erfordert.
Harrymc
2

Wenn ich von der Serverseite des Zauns komme, wo wir erwarten würden, dass wir in Bezug auf Konfigurationsänderungen sehr paranoid sind und woher sie stammen, kann ich sagen, dass sie nicht wirklich existieren. Das globale Konfigurations-Tracking ist größtenteils ein vollständig manueller Prozess. Es ist möglich, bestimmte Registrierungsbereiche auf Änderungen zu überwachen (aber nicht zu verhindern ), aber ich kenne keine freien / billigen Softwarepakete, die dies zulassen, und einige sehr teure (es ist ein viel komplexeres Problem, als Dateiinformationen zu verfolgen und dann zwei zu unterscheiden Textdateien; also teuer).

Dies macht Unix-Administratoren verrückt. Kyle Brandt , Systemadministrator bei StackOverflow Inc, hat sich vor ein paar Wochen mit solchen Dingen befasst, als er eine neue Reihe von Windows-Computern für StackExchange bereitstellte. Die Linux / Windows-Frequenzweiche SysAdmins hat ihn alle bedauert. Es gibt einfach kein Windows-Äquivalent zu / etc unter VCS. Es gibt einige hässliche Probleme, wie z. B. Disk Imaging / Snapshotting oder nur das Erzwingen von Konfigurationsänderungen über Gruppenrichtlinien (und das manuelle Verfolgen von Änderungen an den Gruppenrichtlinienobjekten), aber nichts annähernd so Elegantes.

Es tut uns leid.

SysAdmin1138
quelle
2

Persönlich verfolge ich Änderungen in der Windows-Registrierung mit Regshot . Sie machen vor der Änderung einen Schnappschuss und nach dem Erstellen einen zweiten. Sie können auch einen schönen HTML-Bericht über die Änderungen erhalten. Natürlich müssen Sie sicherstellen, dass zwischen den Schnappschüssen nur wenige Änderungen vorgenommen werden, wenn Sie herausfinden möchten, was jede Änderung bewirkt. Regshot ist ein Open Source Programm.

Wenn Sie nach dem Tracking / Backup von Dateisystemänderungen suchen, ist DocShield wahrscheinlich das nächstgelegene . Sie können jeden Ordner damit verfolgen, obwohl Anwendungsdaten wahrscheinlich die beste Vermutung für Ihre persönlichen Präferenzänderungen der meisten Windows-Benutzerprofilsoftware sind. DocShield ist für Privatanwender kostenlos. Sie können nachahmen, was es tut, indem xcopy /d:{m-d-y}Sie die benötigten Ordner verwenden und dann die Ausgabe zip / 7z.

Fügen Sie dann die Ausgabe beider Sicherungen mit Ihren Anmerkungen zu einem beliebigen Versionskontroll-Repository hinzu.

Shogox
quelle
Was würde Regshot tun, was Microsoft reg.exeund Cygwin regtoolnicht tun , da mir HTML-Berichte egal sind? Was bewirkt DocShield, dass eine Versionskontrollsoftware nicht besser funktioniert?
Gilles 'SO - hör auf böse zu sein'
Kopfgeld für Regshot vergeben. Ich denke nicht, dass es wirklich das ist, was ich will, aber es ist ein guter Anfang, auf den ich möglicherweise aufbauen kann (insbesondere angesichts von Open Source).
Gilles 'SO - hör auf böse zu sein'
Ich denke, meine war mehr das, wonach du suchst ... aber nicht, weil ich wollte, dass das Kopfgeld dich nur informiert.
jer.salamon
1

Es wäre nicht einfach, aber Sie könnten Sysinternals Process Monitor verwenden, um festzustellen, welche Dateien und Registrierungseinstellungen geändert wurden. Sie können dann die Registrierungsänderungen und aktualisierten Dateien zu einem größeren Programm hinzufügen, das die Änderungen für Sie vornimmt. Sie könnten wahrscheinlich Power Shell oder etwas wie AutoIt verwenden. Überprüfen Sie dann das resultierende Skript in Ihrem VCS. Ich verwende eine ähnliche Methode zum Automatisieren seltsamer Einstellungen in Anmeldeskripten und benutzerdefinierten Vorlagen für die Verwaltung von Gruppenrichtlinien.

lockerer
quelle
Wenn ich Sie richtig verstehe, schlagen Sie grundsätzlich vor, nur den durch meine Änderungen verursachten Unterschied beizubehalten, anstatt die gesamte Registrierung und den gesamten Application DataInhalt, oder? Wie würde ich Änderungen erkennen, die vorgenommen wurden, wenn das Monitorprogramm aus irgendeinem Grund nicht ausgeführt wird? Gibt es eine vernünftige Möglichkeit, den Workflow zu erweitern, um Aktualisierungsvorgänge zu ermöglichen (dh ich habe bereits eine Prüfung durchgeführt und möchte einige weitere Änderungen vornehmen, die auf einem anderen Computer vorgenommen wurden)?
Gilles 'SO - hör auf böse zu sein'
1

Ich habe keine Betriebssystemlösung für Sie, aber es gibt eine kostenpflichtige Möglichkeit. Sie können Ihr Laufwerk mit DriveImage XML sichern

Das Sicherungsformat ist XML. Sie können diese XML-Datei dann (Unterschiede sind auch möglich) in Ihrem bevorzugten Versionskontrollsystem speichern.

Wie HarryMC gesagt hat, können Sie dieses Image nicht wirklich verwenden, um Änderungen an einem neuen System vorzunehmen, aber Sie können das Image definitiv auf einem neuen System mit genau derselben Hardware verwenden.

Devdatta Tengshe
quelle
1

Sie können die Profilverwaltungssoftware von ForensiT verwenden, um Ihr gesamtes Profil zu kopieren, indem Sie eine Windows-Box aktivieren. Gehen Sie hier, um es auszuprobieren: Benutzerprofil-Manager

jer.salamon
quelle
Ich sehe nicht ein, wie dieses Programm mir helfen könnte: Es sieht so aus, als würde es Profile auf mehreren Computern bereitstellen, was nicht mein zentrales Anliegen ist (Verwalten des Verlaufs). Ich kann sehen, dass es ein wertvolles Werkzeug für Administratoren sein könnte, aber ich bin hier ein Benutzer.
Gilles 'SO - hör auf böse zu sein'
Es bietet Ihnen die Möglichkeit, Ihr Benutzerprofil zu sichern und es nach Belieben wiederherzustellen. Ist es nicht das, wonach du suchst?
jer.salamon
-2

Mir scheint, Sie beschreiben eine Datenbankanwendung, in der Sie die Registrierungsschlüssel verfolgen und durch ein Tag indizieren. Obwohl ich mit Registrierungsschlüsseln nicht technisch genug bin, um dies zu tun, möchten Sie in Ihrem Beispiel die Datenbank nach Pink Desk top durchsuchen und die Anweisung erhalten, die diese Änderung auf einem anderen Computer implementiert. Das heißt, wenn ich Ihre Absichten verstehe

user50466
quelle