当我使用C#时,我只能访问用户模式注册表访问。
使用C ++访问内核模式注册表访问是否非常困难?
我记得在某处我可能要创建一个虚拟Windows驱动程序或什么?
编辑:基本上作为一个业余爱好项目,我希望创建一个简单的注册表监视器。但是,我确实希望捕获内核模式(以及用户模式)注册表访问.....上次我这样做,使用C#我无法访问内核模式活动。答案 0 :(得分:2)
有两种方法可以实现这一目标:
构建registry filter driver - 这是现在鼓励的方法来解决此问题,并且是进程监视器的工作方式。您也可以这种方式构建文件系统筛选器驱动程序。基本上,您只需将信息传递回用户区,该用户区可归结为:
IoRegisterDevice(...somewhere in \Devices\YourDriverName...)
IoCreateSymbolicLink(\\DosDevices\Name -> \Devices\YourDriverName)
然后C,C ++,C#应用程序应该能够打开文件\\.\YourDriverName
和DeviceIoControl
并接收回复。
可以使用C ++编写内核驱动程序,但是see this before you embark on doing so。更清楚一点,你需要非常小心内核模式(分页,非分页)中的内存,并且你不会访问大部分标准库。
顺便说一句,你应该知道:
\Registry\System
,而userland访问HKLM
。