高手帮忙,如何禁止在注册表中重命名或创建值,300分求不够再加(300分)

  • 主题发起人 tianliangle2003
  • 开始时间
T

tianliangle2003

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位高手,如何禁止在注册表中重命名或创建值?<br>就是当我打开注册表在某键下禁止指定键的新建或重命名值操作,通过编程禁止此操作
 
你是说不让别的程序往注册表里写内容是吗/
 
原理上来说可以通过拦截注册表的API来实现。 不过带来的问题是,可能很多程序因为这样运行不了, 或者连操作系统本身也会出现问题。 因为WINDOWS对注册表是很敏感的,处理得不好就%……
 
大哥们能不能说的具体点啊,要是HookAPI,要HooK那个阿?<br>我现在已经实现了RegSetValueEx,RegCreateKeyEx,RegOpenKeyEx可是这只能拦截其他程序对注册表的操作,却拦截不了注册表本身的操作阿?
 
如果想从API上入手解决,恐怕此问题得费些时日,而且其兼容等问题都是难以预料,就算写出这样的程序,估计实用价值非常有限.<br><br>解决问题可以有多种方法,只要达到了目的,就是可行方案.<br>你要禁止在注册表中重命名和修改,这可能有点麻烦.<br>但换个角度来解决这个问题,既然禁止修改麻烦甚至做不到,何不让其修改,在被其修改后,将注册表或注册表相对应的键还原呢?<br>如果这样考虑,那就可以有多种手段方法来解决这个问题了.<br>如果你仅仅是要防止某个(些)键值不被修改,那可以弄个定时器监测这个键值,发现修改,即还原(*.SAV的文件是注册表备份文件,可以将注册表值和此备份注册表文件中键值对比,而不必在程序中保存原有的键值,可避免不兼容问题),当然你也可以对整个注册表监测,获得注册表文件的最新修改时间,比较这个时间来确定是否被修改.如被修改即还原.
 
在MSDN中打开RegSetValueEx,之后在下边的相关项中可以找到[注册表参考],之中会有所有的对注册表操作的API函数,你只要HOOK了里边的相关函数,那么对于普通的应用程序,基本上就没问题了.(HOOKAPI有很多种方法,比如修改导入/导出表,这可能在某种情况下被跳过),除此之外,也可以在内核中拦截.<br>定时监测也是一个方法,<br>如果可能的话,适当的修改注册项的权限也是一个不错的方法,详细决大部分程序都不会对权限不足的情况进行处理.
 
学习,学习一下
 
其实最通用的做法就是系统启动初期就还原注册表.
 
Hook ZwRegxxxxx
 
这个问题好,有点象瑞星杀毒软件中的注册表监控功能,值得收藏!<br><br>估计只能hook 注册表的API了,就是不知道MS有没有什么不公开的消息,如注册表准备创建或修改,会先广播一下消息。
 
帮顶! <br><br>http://www.source520.com <br><br>站长开发推广同盟 站长朋友的终极驿站 <br>同时拥有海量源码电子经典书籍下载 <br><br>http://www.source520.com/search/search.asp <br><br>&quot;编程.站长&quot;论坛搜索引擎-----为中国站长注入动力!
 
谢谢各位的积极讨论,此问题我自己已解决,回复者都有分
 

Similar threads

S
回复
0
查看
745
SUNSTONE的Delphi笔记
S
S
回复
0
查看
625
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
970
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
顶部