如何查找更改的注册表值?

时间:2012-05-08 21:54:44

标签: c# .net registry

我正在尝试查找对注册表进行了哪些更改或启动了哪些进程。例如:如果我更改Windows-explorer的视图以显示隐藏的文件和文件夹 - 我想查看哪个注册表项已更改。

有人建议使用进程监视器,但是a)注册表访问太多,而b)我找不到对注册表的任何更改。 (虽然我记得读过它是对控制它的注册表的更改)

我这样做是因为我希望我的程序能够做同样的事情。

C#中的答案没问题。

3 个答案:

答案 0 :(得分:1)

是的,哇,这可能会变得非常棘手,因为注册表可能很大。在过去,我会导出注册表的一个分支,比如HKEY_LOCAL_MACHINE \ SOFTWARE \ InnaTech,然后运行一些我怀疑在该分支中编辑内容的程序,然后再将其导出到另一个文件。如果分支不大,那么我可以通过它来观察差异,否则我会使用正常的差异程序ala WinDiff来查找任何更改。

答案 1 :(得分:1)

RegNotifyChangeKeyValue()是您需要调用的系统函数。我从来没有见过任何人试图从C#中使用它,但是到达它应该不需要比调用任何其他非托管代码更麻烦。基本上,你调用它,它在第一次更改后返回,你再次调用它并等待下一个chande。

<强> http://msdn.microsoft.com/en-us/library/windows/desktop/ms724892%28v=vs.85%29.aspx

对其使用有相当好的描述。

答案 2 :(得分:0)

http://www.mydigitallife.info/trick-to-enable-show-hidden-files-and-folders-in-windows/

转到“开始”菜单,然后单击“运行”(Windows Vista和Windows 7使用“开始搜索”)。 键入RegEdit并按Enter键以运行注册表编辑器。 导航到以下注册表项:

HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CURRENTVERSION \ Explorer中\高级\文件夹\隐藏\ SHOWALL

在右窗格中,验证CheckedValue值数据是否为REG_DWORD类型。如果不是(例如属于REG_SZ),则删除CheckedValue值数据。 如果已删除CheckedValue,则创建一个新的DWORD(32位)值并将其命名为CheckedValue。 双击CheckedValue并将其值数据更改为1(病毒可能将其更改为0或2)。 在同一注册表项中,验证Type值数据是否为REG_SZ类型,并且值为data radio。如果没有,请将其设置为无线电。病毒可能会将其更改为空白。 将系统设置为显示或显示所有隐藏文件,文件夹和驱动器,然后检查是否显示隐藏文件和文件夹。