在Windows中重写注册表文件

4

我一直在尝试找到一种方法来"碎片整理"我的Windows机器上的注册表。首先,这样做有意义吗?有什么好处吗?(在superuser.com上没有太多关注)其次,我正在寻找一种使用C/C++和Windows API重写注册表的方法。是否有一种方法可以读取注册表并将其写入新文件,同时清除未使用的字节?(我可能需要编写新文件,然后启动另一个OS /磁盘,然后才能覆盖原始文件...但我愿意冒这个风险。)


请解释一下给我点踩的人。我已经在superuser.com上尝试过了。如果你认为那是适合这个问题的地方,请投票关闭。 - Agnel Kurian
3个回答

2
微软的PageDefrag正如其页面上所述,“ PageDefrag使用标准文件碎片整理API来整理文件。
(链接文章的副本在此处,因为按照典型的MSDN风格,他们的链接已经失效。)

这里有一些有用的信息。然而,这并不是我正在寻找的东西。我实际上正在寻找一个实用程序,它可以检查注册表文件中未使用的空间并将其清除。 - Agnel Kurian
5
根据我的《Windows Internals》书籍,“你可以通过使用Windows RegSaveKey和RegReplaceKey函数来备份和还原注册表,使其紧凑。这些函数由Windows备份实用程序使用。” - Alex K.
Alex是正确的;另请参见http://technet.microsoft.com/en-us/library/cc750583.aspx。 - Luke

2

http://www.larshederer.homepage.t-online.de/erunt/ - NTREGOPT NT注册表优化工具

与Windows 9x / Me类似,NT系统中的注册表文件随着时间的推移可能会变得碎片化,占用硬盘上比必要更多的空间并降低整体性能。您应该经常使用NTREGOPT实用程序,特别是在安装或卸载程序后,以最小化注册表文件的大小并优化注册表访问。
该程序通过“从头开始”重新创建每个注册表子项,从而删除可能留下的任何空闲空间,这些空间来自先前修改或删除的键。

http://reboot.pro/index.php?showtopic=11212 - Offreg.dll MS WDK离线注册表库

离线注册表库(Offreg.dll)用于在活动系统注册表之外修改注册表子项。此库旨在用于注册表更新方案,例如为操作系统映像提供服务。该库支持从Windows XP开始的注册表子项格式。 开发人员受众

http://reboot.pro/topic/11312-offline-registry/ - 离线注册表MS WDK命令行工具

一个命令行工具,允许您读取和写入离线注册表子项。

0

读取这些值应该是可行的。

但我从未见过任何关于注册表文件如何写入磁盘的规范,除非你能找到一个,否则你必须在操作系统中反向工程这些文件(可能在XP和7之间存在差异)。然后你必须记住,注册表不仅仅是一个文件,它是多个文件,其中一些属于特定的用户,我认为他们使用SID而不是用户名,因此即使您将它们移动到新计算机上,您也必须确保它是具有相同用户设置的相同OS版本和相同SID。

所有这些都是为了很少或没有收益,所以我同意超级用户的观点,这是没有意义的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接