通过某个进程监视添加的注册表项(使用c#)

时间:2013-11-22 16:35:48

标签: c# registry

有没有办法,使用c#来监视某个进程添加了哪个注册表项? 对我来说重要的是要知道密钥名称(路径)而不仅仅是密钥的事实 已被添加。 感谢

1 个答案:

答案 0 :(得分:0)

以我的拙见,你不能只在C#中这样做。

但是,我可以引导您找到解决方案(但它非常先进)

注册由winapi调用(本机函数)处理。 例如,其中一个是:

[DllImport("advapi32.dll", CharSet = CharSet.Auto, BestFitMapping = false)]
internal static int RegSetValueEx(SafeRegistryHandle hKey, string lpValueName, int Reserved, RegistryValueKind dwType, string lpData, int cbData);

因此,知道进程何时设置注册表值等同于知道何时调用此函数。

您可以使用easy hook注入一个进程并“破解”一个函数(即用您自己的实现替换现有函数)。

您的解决方案是使用此库,挂钩您想要的进程并将RegSetValueEx(在advapi32.dll中)替换为仅将调用转发给实际实现的自定义实现,并在需要时通知您。