在Windows上,如何防止注册表项被修改?

时间:2011-12-20 15:16:58

标签: windows winapi

我看到一些反病毒软件注意到我正在尝试修改我的注册表项并询问是否允许它。如果在我做出决定之前修改我的注册表,这个反病毒软件如何挂起并停止?我找不到任何可以执行此类操作的API,这对我的项目至关重要。

谢谢,

4 个答案:

答案 0 :(得分:2)

这也是通过游戏完成的。它们劫持了在3D场景中渲染对象的函数调用,然后它们告诉游戏引擎将所有字符渲染到每个其他对象之上,这会导致一个wallhack。

您可以使用的API(现在不再是反欺骗软件阻止它)是绕道API。你仍然可以将它用于你自己的目的。

网上有很多关于此API的信息。

http://research.microsoft.com/en-us/projects/detours/

答案 1 :(得分:2)

考虑使用RegSetKeySecurity(MSDN)正确保护应用程序注册表项。

或者,您还可以构建注册表筛选器内核模式驱动程序。这样的驱动程序可以利用CmRegisterCallback/Ex()服务来过滤注册表事件。这是大工作(tm),但是我知道的唯一记录/支持的方法来实现这一目标。

答案 2 :(得分:1)

我想你可以查看RegNotifyChangeKeyValue,但我认为防病毒软件不会使用这种方法。这样做阻止对注册表所做的更改,但可用于在修改密钥时获得通知。

答案 3 :(得分:1)

防病毒软件最有可能挂钩注册表函数,因此在将请求传递给实际函数之前,首先调用自己的代码。

请注意,除了一些非常具体的情况外,这样做可能会产生可疑行为。