我打算在C中编写一个基本的Windows注册表过滤器。过滤器的目的是挂钩所有(用户和内核特权)注册表调用,以便我可以在我的程序中使用它们。我基本上是用Mark Rusinovich复制regmon / process monitor,但更基本。
我的问题是,一旦过滤器是用C语言编写的,你如何让系统实现自定义行为并且不实现注册表调用的原始预期行为?
我正在使用Windows 7
编辑:我正在尝试将此作为业余爱好c ++项目的一部分,该项目可以挂钩所有注册表调用。
答案 0 :(得分:8)
有特殊功能。在MSDN上查看CmRegisterCallback(),CmRegisterCallbackEx()和Filtering Registry Calls。
至于安装内核模式驱动程序,您可以使用服务控制器(sc.exe)。使用sc create [service name] binPath= [path to your .sys file] type= kernel
创建内核模式服务,使用sc start [service name]
启动它。在更改驱动程序之前,请不要忘记sc stop
和sc delete
。
答案 1 :(得分:2)
基本上,驱动程序被视为服务,您可以使用Service COntrol manager使用上述API,您基本上实现的是服务键下注册表中的相应条目。有关如何实现此检查this文章的示例,请滚动到底部的“动态加载和卸载驱动程序”部分。此外,如果你想实现简单的调试/开发并使用VS2k10,我建议你使用免费VisualDDK我相信这应该足以让你去。