Windows配置的版本控制


8

如何将Windows个人配置置于版本控制下

摘要(详细信息和示例如下):

  • 个人配置(例如,桌面首选项),而不是系统配置(例如,驱动程序);应该在没有管理员权限的情况下工作
  • 版本控制,而不是备份或磁盘映像

这是我想做的几件事:

  • 将配置的当前状态提交给存储库,最好以某种粒度(如果我进行了两次更改,我希望能够提交一个而不提交另一个)。
  • 每当我提交时,都写一个变更日志条目,并查看每个配置文件的变更日志条目列表。
  • 查看当前状态和存储库版本之间的差异。
  • 从新Windows计算机上的存储库中签出并重现我的配置(至少在新计算机具有相同版本的Windows的情况下)。

<add1> 我不会尝试给出“配置”的完全精确的定义;我正在尝试涵盖各种个人喜好(例如,在控制面板中可设置的,没有管理员权限的任何内容,用户特定的“程序”菜单中的快捷方式……)。我不想包含我的文档或已安装的应用程序。 </ add1>

<add2> 请注意,我的目标是个人配置,而不是系统配置(这也很有用,但这不是此问题的目的)。例如,我希望没有管理员权限的解决方案就可以工作。 </ add1>

我在unix中所做的就是将我的点文件(选择)置于版本控制下。在Windows下,我假设我应该在下提交注册表和一些文件(哪个?)Application Data。我希望有比将整个注册表文件置于版本控制下更好的方法(粒度不够,而且我担心锁定问题)。<add1>理想情况下,我将使用包装程序或脚本以及一些常见的版本控制软件(Bazaar,CVS,Darcs,Git,Mercurial,Subversion等),但这不是绝对要求。</ add1>

我目前需要使用Windows 2000和Windows XP。由于这是用于工作机器的,因此不会使用付费软件(开源是理想的选择)。与GUI相比,我对命令行更满意。

<add1> 这是一个示例工作流程:

  • 有一天,我决定希望桌面背景为粉红色。因此,我通过GUI进行了更改。这将修改注册表中配置文件项中的一行。然后,我提交更改,以跟踪它。
  • 后来我想知道为什么我的桌面背景是粉红色的。因此,我在变更日志中搜索“桌面颜色”。
  • 有一天我需要使用一台新机器。因此,我从配置库和voilà(粉色桌面)中签出。

以下是一些我不想做的事情:

  • 我不是要备份。我希望能够跟踪更改(通过语义或至少语法,而不仅仅是按日期),并能够在计算机之间共享信息(一个存储库,多个签出)。

  • 我不是要复制Windows安装。我不想保留硬件依赖性,已安装的应用程序或文档。

</ add1>


4
最终目的是什么,您是否要对应用程序进行反向工程?我问的原因是没有关于不同之处的报道,保持冷冻干燥状态很容易。即使看到更改可能也不会太难,但不要将其检入版本控制。我想对您想要完成的事情有更多的了解,也许我可以建议另一种方法。
Scott McClenning

同意@Scott,我认为这不太实用(就此而言,甚至可能)。关于您要实现的目标的更多详细信息将非常有用。
Sasha Chedygov

1
+1 ...您几乎肯定会以错误的方式进行操作。
Zac Thompson

@Scott:我的目标是对Windows自定义使用版本控制。我不知道为什么我的问题向您建议进行逆向工程。@Zac:我不可能走错路,因为我还没有迈出第一步。
吉尔(Gilles)“所以

看来您的目标似乎是在系统上执行某些操作,然后查看发生了什么,然后设置可以稍后恢复的配置。如果以后确实需要还原到配置,则可以使用一些虚拟机软件来拍摄快照。那不会告诉你发生了什么,但是会一次又一次地把你带到同一地点。如果您想查看应用程序的功能,则有一些程序可以通过在安装前和安装后进行不同的系统制作msi文件。然后,您可以查看msi的内部,查看该应用程序的感动/更改。但是这些都不是“版本控制”。
Scott McClenning

Answers:


9

据我所知,Windows配置太分散,无法可靠地备份注册表中太多的文件和位置。

无法将注册表备份到一台计算机上并在另一台计算机上(甚至在同一台计算机上)将其还原,因为太多的密钥对于该计算机而言太过特定,并且某些密钥受Windows保护。

系统还原旨在保持计算机状态,但出于您的目的,它是不可靠的,因为它会自行决定要删除哪些备份以节省空间,并具有其他负面问题,例如Windows 2000中不存在。

我能看到的唯一通用解决方案是使用磁盘映像产品对系统磁盘进行完整映像并在需要时进行还原。

有几种质量非常好的磁盘映像产品,如果您发现此解决方案对您感兴趣,我可以推荐这些产品。其中有几个保存了具有描述性的图像存储库。尽管最好的软件是商业软件,但是免费软件的软件仍然非常好。

当系统驱动器不包含用户数据时,磁盘映像处理效果最佳。


1
+1我同意这一点。我看不到磁盘映像的功能,但是我使用DriveImage(runtime.org/driveimage-xml.htm),它允许您在使用可靠技术的系统时备份磁盘。它还允许您浏览文件
Cristian T

使用虚拟机并拍摄快照比使用磁盘映像产品可能更简单。如果硬件不相同,则在机器之间迁移将容易得多。
Velociraptors

@harrymc:很抱歉,如果我的初次表达方式不清楚,我很抱歉(我怀疑需要使用unix背景才能理解我的意思),但是我正在尝试备份用户配置,而不是系统配置。
吉尔斯(Gillles)“所以-别再作恶了”

1
答案仍然是相同的,除非您可以大幅缩小用户配置中的元素列表。与Linux点目录不同,Windows中没有真正的“用户配置”区域。存在一个用户注册表配置单元,但是很多用户信息散布在其他位置以及“程序文件”,“用户”等中的整个磁盘中。您甚至无法监视注册表更改,因为Windows本身修改了很多内容他们在工作时。每个应用程序都会发明自己的规则。Linux效率更高是有原因的……
harrymc

作为Windows用户,我也希望拥有一种概述的机制。las,这是完全不可能的。您将需要使用Process Monitor跟踪每个应用程序和变更种类,以便找到数据的存储位置。这是一个巨大的项目,需要大量时间。
harrymc

2

来自篱笆的服务器端,您可能希望我们对配置更改以及更改的来源非常偏执,我可以说它们确实不存在。全局配置跟踪在大多数情况下是完全手动的过程。可以监视(但不能阻止)特定注册表区域的更改,但是我知道没有免费/廉价的软件包允许这样做,也有几种非常昂贵的软件包(这比跟踪文件信息然后分散两个信息要复杂得多。文本文件;因此很昂贵)。

这会驱动Unix管理员。几周前,StackOverflow Inc.的系统管理员Kyle Brandt正为这种事情而苦恼,当时他正在为StackExchange准备一批新的Windows计算机。Linux / Windows跨系统SysAdmins都对他感到同情。在Windows中,根本没有将/ etc放在VCS下的等效方法。那里有一些丑陋的麻烦,例如磁盘映像/快照或仅通过组策略强制更改配置(并手动跟踪对GPO的更改),但几乎没有那么优雅。

抱歉。


2

我个人使用Regshot跟踪Windows注册表中的更改。您在更改之前拍摄快照,然后在更改之后拍摄第二张快照。您还可以获得有关更改的漂亮HTML报告。当然,如果要弄清楚每个更改的作用,则必须确保在快照之间仅进行了少量更改。Regshot是一个开源程序。

如果您正在寻找跟踪/备份的文件系统更改,则可能最接近DocShield。尽管应用程序数据可能是大多数Windows用户配置文件识别软件的个人喜好更改的最佳猜测,但您可以使用它跟踪任何文件夹。DocShield对于家庭用户是免费的。您可以通过使用xcopy /d:{m-d-y}所需的文件夹来模仿它的功能,然后对输出进行zip / 7z。

然后用您的评论将两个备份的输出添加到任何版本控制存储库。


鉴于我不在乎HTML报告,Regshot将做什么,而Microsoft reg.exe和Cygwin regtool不会做什么?至于DocShield,任何版本控制软件都不会做得更好?
吉尔(Gilles)“所以,别再邪恶了”,2010年

Regshot获得赏金。我认为这不是我真正想要的,但是这可能是我可以建立的一个良好的开端(特别是考虑到它是开源的)。
吉尔(Gilles)“所以,别再邪恶了”,2010年

我认为我更多的是您要寻找的东西...但不是因为我想要赏金只是为了让您知道。
jer.salamon 2010年

1

这并不容易,但是您可以使用Sysinternals Process Monitor来确定更改了哪些文件和注册表设置。然后,您可以将注册表编辑和更新的文件添加到一个较大的程序中,该程序将为您进行更改。您可能使用Power Shell或类似AutoIt的工具。然后,将生成的脚本检入到vcs中。我使用类似的方法将奇怪的设置自动化到登录脚本和自定义组策略管理模板中。


如果我对您的理解正确,那么您基本上是在建议仅保留由我的更改引起的差异,而不是整个注册表和Application Data内容,对吗?当监视器程序由于某种原因未运行时,如何检测所做的更改?是否有合理的方法来扩展工作流以启用更新操作(即,我已经完成了结帐,并想在另一台计算机上应用更多更改)?
吉尔(Gilles)“所以,别再邪恶了”,2010年

1

我没有适合您的OS解决方案,但是有付费的可能。您可以做的是使用DriveImage XML备份驱动器

备份格式为XML。然后,您可以将此xml文件(也可以存在差异)保存到您喜欢的版本控制系统中。

就像HarryMC所说的那样,您不能真正使用该映像对新系统进行更改,但是您可以在具有完全相同硬件的新系统上使用该映像。


1

您可以使用ForensiT的配置文件管理软件通过关闭Windows框来复制整个配置文件。转到此处进行检查:User Profile Manager


我看不出该程序对我有什么帮助:看起来好像是在将配置文件部署到多台计算机上,这不是我的中心问题(管理历史记录)。我可以看到它对于管理员来说可能是一个有价值的工具,但是我是这里的用户。
吉尔(Gilles)'所以

它使您能够备份用户配置文件,并可以在选择时还原它。那不是你要找的吗?
jer.salamon 2010年

-2

在我看来,您正在描述一种数据库应用程序,在其中跟踪注册表项并通过标签对其进行索引。尽管我对注册表项的技术不够了解,但是在您的示例中,您想在数据库中搜索Pink Desk top并获取将在另一台计算机上实现此更改的说明。也就是说,如果我了解您的意图

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.