2016-05-12 156 views
0

我当前正在尝试在C#(.NET)中编写能够备份整个Windows注册表(包括像HKEY_CURRENTUSER这样的配置单元)的程序,并将其与当前Windows新/更改/删除键的注册表。它应该能够指出更改的确切密钥,类似于FileSystemWatcher。如果它能够提供某种像FileSystemWatcher一样的活饲料,那将是最好的。但只要我能够发挥其作用,我也愿意接受其他想法。备份整个注册表并与当前注册表进行比较

我试图寻找到WMI来监视注册表项更改,但它不适用于HKEY_CLASSES_ROOT和HKEY_CURRENT_USER,这也是我需要监视。

有没有人有任何想法我可以做到这一点?如果有人能帮助我,我会很感激。

回答

0

解决该问题最简单的尝试是将注册表导出到文本文件之前和之后,并对这些文件进行文本比较。

与(0123)使用reg export创建的文件(词汇)比较的最大问题是您并不总是保证这些密钥会显示相同的顺序(取决于导出时存在哪些密钥),更糟糕的是,可以表示为REG_BINARY,即使它是一个字符串。 IIRC,我见过一个关键字被表示为REG_BINARY一次,另一个是REG_SZ的导出示例。这将完全阻碍词汇比较。恕我直言,你最好打赌是创建你自己的导出方法(使用递归不是非常困难),要么以有序的文本格式保存注册表数据,要么在内存中进行比较。