C# 查找哪个进程访问注册表?

C# 查找哪个进程访问注册表?,c#,C#,好吧,如果有人能解决这个问题,他们一定是个天才,因为这在网络上是不存在的 该程序检测注册表访问并告诉您是哪个进程进行的 有人知道我怎么做吗?我可以检测到变化,但我无法获取过程 提前感谢这是通过挂接系统调用完成的。它将调用挂接到RegOpenKey(etc),并在将调用传递到realRegOpenKey之前记录有关访问注册表的进程的所有信息 有关使在Windows中编写API挂钩相对容易的库,请参阅 然而当我说“简单”时,我的意思是“这里有怪物!”API挂钩不适合胆小的人,在尝试之前,你应该对W

好吧,如果有人能解决这个问题,他们一定是个天才,因为这在网络上是不存在的

该程序检测注册表访问并告诉您是哪个进程进行的

有人知道我怎么做吗?我可以检测到变化,但我无法获取过程


提前感谢

这是通过挂接系统调用完成的。它将调用挂接到
RegOpenKey
(etc),并在将调用传递到real
RegOpenKey
之前记录有关访问注册表的进程的所有信息

有关使在Windows中编写API挂钩相对容易的库,请参阅


然而当我说“简单”时,我的意思是“这里有怪物!”API挂钩不适合胆小的人,在尝试之前,你应该对Windows的内部结构有很好的了解。

如果你只想知道它在做什么,那么你可以使用ProcessMonitor,或者这些工具的另一个派生自Sysinternals,现在由Microsoft作为Winternals运行。请参阅程序列表


如果你想写一个程序来完成它,你必须钩住注册表访问函数。其源代码可以在Sysinternals工具的存档中找到。该程序似乎不再提供了。

FYI:sysinternals的家伙在Windows方面非常有天赋。啊,谢谢你!所以本质上,一旦检测到更改,我将“抓取”一个键,然后将其挂起?或者我需要在检测到更改之前执行此挂接吗?对不起,我只知道这些。今天早些时候,我刚刚习惯了PInvoke,我终于学会了如何勾搭!谢谢ps,我需要在我的项目中包含哪些easyhook文件?.h和.dll?钩住RegOpenKey函数(比如),然后每当进程调用RegOpenKey时,就会调用您的函数,而不是真正的函数。然后记录传入的参数,并将其交给真正的RegOpenKey来执行实际工作。正如我所说,这不是为胆小的人准备的,老实说,如果你今天刚刚了解了P/Invoke,我认为你还没有准备好开始学习API挂钩。。。MarkRussinovich(Process Monitor的作者)从事Windows编程已有15年,是一名操作系统专家。。。