Windows構成のバージョン管理


8

Windowsの個人設定をバージョン管理下に置くにはどうすればよいですか?

概要(詳細と例は次のとおりです):

  • システム構成(ドライバーなど)ではなく、個人構成(デスクトップ設定など)。管理者権限なしで動作するはずです
  • バックアップやディスクイメージングではなくバージョン管理

ここで、私ができることをいくつか紹介します。

  • 構成の現在の状態をリポジトリにコミットします。できればある程度の細分度で(2つの変更を行った場合、一方をコミットせずにもう一方をコミットできるようにしたい)。
  • コミットするたびに変更ログエントリを書き込み、各構成ファイルの変更ログエントリのリストを確認します。
  • 現在の状態とリポジトリバージョンの違いを確認します。
  • 新しいWindowsマシンのリポジトリからチェックアウトして、私の構成を再現します(少なくとも新しいマシンに同じバージョンのWindowsがある場合)。

<added1> 「構成」の完全に正確な定義を示すことはしません。私はあらゆる種類の個人設定をカバーしようとしています(たとえば、管理者権限なしでコントロールパネルで設定可能なもの、ユーザー固有の[プログラム]メニューのショートカットなど)。ドキュメントやインストール済みのアプリケーションを含めたくありません。 </ added1>

<added2> システム構成ではなく、個人構成を対象としていることに注意してください(これも役に立ちますが、この質問の目的ではありません)。たとえば、管理者権限がなくてもソリューションが機能することを期待しています。 </ added1>

私がUNIXでやっていることは、私のドットファイル(の一部)をバージョン管理下に置くことです。Windowsでは、レジストリといくつかのファイル(どれ?)をにコミットする必要があると思いますApplication Data。レジストリファイル全体をバージョン管理下に置くよりも良いものを望んでいます(これは十分な粒度ではなく、ロックの問題を恐れています)。<added1>いくつかの一般的なバージョン管理ソフトウェア(Bazaar、CVS、Darcs、Git、Mercurial、Subversionなど)でラッパーまたはスクリプトを使用するのが理想的ですが、それは絶対的な要件ではありません。</ added1>

現在、Windows 2000およびWindows XPを使用する必要があります。これは作業マシン用なので、ペイウェアは機能しません(オープンソースが理想的です)。GUIよりもコマンドラインの方が快適です。

<added1>これ はサンプルワークフローです。

  • ある日、デスクトップの背景をピンクにしたいと思いました。そのため、GUIを使用して変更を行います。これにより、レジストリの構成ファイルキーの行が変更されます。次に、変更をコミットして追跡します。
  • 後で、なぜデスクトップの背景がピンク色なのかと思います。そこで、変更ログで「デスクトップカラー」を検索します。
  • ある日、新しいマシンを使用する必要があります。だから私は私の構成リポジトリとピンクのデスクトップをチェックアウトします。

ここに私がやっていないいくつかのことがあります:

  • バックアップを作成するつもりはありません。(日付だけでなく、セマンティクスまたは少なくとも構文によって)変更をトレースし、マシン間で情報を共有したい(1つのリポジトリ、複数のチェックアウト)。

  • Windowsインストールを複製しようとはしていません。ハードウェアの依存関係、インストールされているアプリケーション、またはドキュメントを引き継ぎたくありません。

</ added1>


4
これの最終目標は何ですか?アプリをリバースエンジニアリングしようとしていますか?私が尋ねる理由は、何が違うのかについての報告がなければ、凍結乾燥状態を維持することは簡単でしょう。変更を確認することもそれほど難しくはないかもしれませんが、バージョン管理にチェックインしないでください。私はあなたが何を達成したいかについてもっと理解したいと思います、そして多分私は異なるアプローチを提案することができます。
スコットマクレニング2010

@Scottに同意します。これが非常に実用的であるとは思いません(さらに言えば、それは可能です)。あなたが達成しようとしていることについての詳細は素晴らしいでしょう。
サーシャチェディゴフ2010

1
+1 ...これはほぼ間違いなく間違った方向に進んでいます。
Zac Thompson

@スコット:私の目標は、Windowsのカスタマイズにバージョン管理を使用することです。私の質問がなぜあなたにリバースエンジニアリングを示唆しているのか私にはわかりません。@Zac:私は最初のステップを踏んでいないので、これについて間違った方向に進むことはできません。
Gilles「SO-邪悪になるのをやめる」

あなたの目標はシステムで何かをして何が起こったのかを見ることであるように見えました。逆に、後で復元できる構成をセットアップしてください。後で構成に復元する必要がある場合は、仮想マシンソフトウェアを使用してスナップショットを作成します。何が起こったのかはわかりませんが、同じ場所に何度も行くことになります。アプリの機能を確認したい場合は、インストールの前後にシステムのdiffを実行してmsiファイルを作成するプログラムがあります。次に、msiの内部を調べて、アプリが何を変更したかを確認できます。しかし、これらはいずれも「バージョン管理」ではありません。
スコットマクレニング2010

回答:


9

私の知る限り、Windowsの構成は、レジストリ内のファイルや場所が多すぎるため、確実にバックアップするには分散しすぎています。

1つのマシンでレジストリをバックアップし、それを別のマシン(または同じマシン)に復元することはできません。キーが多すぎるとマシンに固有すぎて、一部のキーはWindowsによって保護されているためです。

システムの復元は、マシンの状態を維持することを目的としていますが、スペースを節約するために削除するバックアップを自動的に決定するため、信頼性が低く、Windows 2000で使用できないなどのマイナスの問題もあります。

私が見ることができる唯一の普遍的な解決策は、システムイメージ全体をイメージ化し、必要に応じてディスクイメージ化製品を使用して復元することです。

非常に高品質のディスクイメージング製品がいくつかあります。このソリューションに興味がある場合は、これをお勧めします。それらのいくつかは、説明のある画像のリポジトリを保持しています。最高のものは商用ですが、フリーウェアのものはまだ非常に優れています。

ディスクイメージングは​​、システムドライブにユーザーデータが含まれていない場合に最適に機能します。


1
+1私はそれに同意します。Disk-Imagingの機能を見ることができませんが、DriveImage(runtime.org/driveimage-xml.htm)を使用しています。これにより、信頼できる技術を使用してシステムを使用しながらディスクをバックアップできます。また、ファイルを閲覧することもできます
Cristian T

ディスクイメージング製品を使用するよりも、VMを使用してスナップショットを作成する方が簡単な場合があります。ハードウェアが同一でない場合は、マシン間を移行する方がはるかに簡単です。
Velociraptors

@harrymc:最初の公式が最初に明確にならなかったとすいません(私が意味を理解するにはUNIXの背景が必要だったと思います)が、システム構成ではなくユーザー構成をバックアップしようとしています。
Gilles「SO-邪悪なことをやめなさい」10/9/27

1
ユーザー構成の要素のリストをかなり鋭く絞り込むことができない限り、答えは同じです。Linuxのドットディレクトリとは異なり、Windowsには実際の「ユーザー設定」領域はありません。ユーザーレジストリハイブは存在しますが、多くのユーザー情報が他の場所やディスク全体の "Program Files"、 "Users"などに散在しています。Windows自体が多くのことを変更しているため、レジストリの変更を監視することもできません。作業中のそれらの。そして、すべてのアプリケーションは独自のルールを発明します。Linuxがより効率的である理由があります...
harrymc

Windowsユーザーとして、私はあなたが概説するようなメカニズムを持ちたいと思っていました。悲しいかな、それは全く不可能です。データが格納されている場所を見つけるには、プロセスモニターを使用してすべてのアプリケーションと変更の種類をトレースする必要があります。これは巨大な時間の投資を要求する巨大なプロジェクトです。
harrymc

2

フェンスのサーバー側から来て、構成の変更とそれがどこから来たかについて非常に偏執的であると予想されるので、それらは実際には存在しないと言えます。グローバル設定追跡は、ほとんどの場合完全に手動のプロセスです。特定のレジストリ領域の変更を監視することは可能ですが(防ぐことはできません)、それを可能にする無料/安価なソフトウェアパッケージはなく、非常に高価なパッケージもいくつかあります(ファイル情報を追跡してから2つを比較するよりもはるかに複雑な問題です)テキストファイル;したがって、高価です)。

これは、Unix管理者をバティにします。StackOverflow Incのシステム管理者であるKyle Brandtは、StackExchangeのためにWindowsマシンの新しいバッチをステージングしているときに、2週間前にこの種の問題に取り組んでいました。LinuxとWindowsのクロスオーバーSysAdminsはすべて彼と共謀しました。VCSに/ etcを置くことに相当するWindowsはありません。ディスクイメージング/スナップショットや、グループポリシーによる構成変更の強制(およびGPOへの変更の手動での追跡)など、見苦しい方法がありますが、それほどエレガントなものはありません。

ごめんなさい。


2

個人的にはRegshotを使用してWindowsレジストリの変更を追跡しています。変更前のスナップショットを作成してから、変更後に2番目のスナップショットを作成します。変更のすばらしいHTMLレポートを取得することもできます。もちろん、すべての変更が何をするのかを理解したい場合は、スナップショット間でほんの少しの変更が行われることを確認する必要があります。Regshotはオープンソースプログラムです。

ファイルシステムの変更の追跡/バックアップを探している場合、最も近いのはおそらくDocShieldでしょう。ほとんどのWindowsユーザープロファイル対応ソフトウェアの個人設定の変更については、おそらくアプリケーションデータが最良の推測ですが、それを使用して任意のフォルダーを追跡できます。DocShieldはホームユーザーには無料です。xcopy /d:{m-d-y}必要なフォルダーを使用してそれが何をするかを模倣し、出力をzip / 7zできます。

次に、両方のバックアップからの出力をコメント付きのバージョン管理リポジトリに追加します。


私がHTMLレポートを気にしない場合、RegshotはMicrosoft reg.exeとCygwinがregtool行わないことをどのように実行しますか?DocShieldについては、バージョン管理ソフトウェアがうまく機能しないことは何ですか?
Gilles「SO-邪悪なことをやめなさい」10/9/28

Regshotに授与される賞金。それが私が本当に望んでいることだとは思いませんが、(特にオープンソースを考えると)それを基にして構築できる可能性があるのは、良いスタートです。
Gilles「SO-邪悪なことをやめよ」

私のほうがあなたの探しているものだったと思います...しかし、報奨金を知らせたいだけだったからではありません。
jer.salamon

1

簡単ではありませんが、Sysinternals Process Monitorを使用して、変更されたファイルとレジストリ設定を確認できます。次に、レジストリの編集と更新されたファイルを、変更を加える大きなプログラムに追加できます。Power ShellまたはAutoItのようなものを使用できます。次に、結果のスクリプトをvcsにチェックインします。奇妙な設定をログオンスクリプトとカスタムグループポリシー管理テンプレートに自動化するために、同様の方法を使用しています。


私があなたを正しく理解していれば、基本的に、レジストリ全体やApplication Dataコンテンツ全体ではなく、変更によって引き起こされた差分のみを保持することを提案していますよね?何らかの理由でモニタープログラムが実行されていないときに行われた変更をどのように検出しますか?ワークフローを拡張して更新操作を有効にするための合理的な方法はありますか(つまり、既にチェックアウトを行っており、別のマシンで行われたいくつかの変更を適用したい)。
Gilles「SO-邪悪になるのをやめる」

1

OSソリューションはありませんが、有料の可能性があります。あなたができることは、DriveImage XMLを使用してドライブをバックアップすることです

バックアップ形式はXMLです。次に、このxmlファイル(diffも可能)をお気に入りのバージョン管理システムに保存できます。

以下のようHarryMCが言った、あなたは本当に新しいシステムに変更を加えるために、この画像を使用することはできませんが、間違いなくまったく同じハードウェアで新しいシステム上の画像を使用することができます。


1

ForensiTのプロファイル管理ソフトウェアを使用すると、ウィンドウボックスをオフに設定してプロファイル全体をコピーできます。こちらで確認してください:User Profile Manager


このプログラムがどのように役立つかはわかりません。プロファイルを複数のマシンに展開するためのようですが、これは私の中心的な関心事ではありません(履歴の管理)。管理者にとって価値のあるツールであることがわかりますが、私はここのユーザーです。
Gilles「SO-邪悪なことをやめ

それはあなたのユーザープロファイルをバックアップし、選択したときにそれを復元することができる機能を提供します。あなたが探しているものではありませんか?
jer.salamon

-2

レジストリキーを追跡し、タグでそれらにインデックスを付けるデータベースアプリケーションについて説明しているようです。私はこれを行うのに十分なレジストリキーを備えていませんが、この例では、データベースでPink Desk topを検索し、別のコンピューターにその変更を実装する手順を取得します。つまり、私があなたの意図を理解したら

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.