注册表保存了Windows中极重要的配置信息,而任何人都可以通过运行Regedit命令或双击某个Reg文件来改写它,这样做其实是很危险的。本期介绍的编程方法,就是为防止注册表被改写而设计的。www.sq120.com推荐文章
本程序有三个功能:①显示当前注册表状态(处于可改写还是处于被保护状态);②锁定注册表使它不被人改写;③解锁注册表使它可以随时被改写。下面我们用VB6.0来实现它。
一、设计窗体
首先打开VB程序,新建一个FORM1,将其Caption改为“注册表保护程序演示”,BorderStyle设为1-Fixed Single。放上一个Label1(其Caption改为“当前注册表状态:”)和一个Label2,另放上COMMAND1,其Caption改为“禁止使用注册表”,再放上COMMAND2,其Caption改为“允许使用注册表”,COMMAND3的Caption改为“退出程序”。
二、编程思路
程序运行时首先检查注册表,看当前注册表的状态是处于被保护状态还是锁定状态,并返回信息到Label2。如已保护则COMMAND1不可用,如无保护则COMMAND2不可用,且建一个全局的BAS文件,其中包含所有访问注册表时要用的常数及函数程序,方便主FORM1可以随时调用。WWw.ITCOMpUter.coM.cN下面给出主程序的和全局BAS文件的核心代码。
三、核心代码
Private Sub Form_Load() //打开窗口
Dim ret As Integer
Move (Screen.Width - W-idth) \ 2, (Screen.Height - Height) \ 2 //居中显示
ret = GetDWORDValue("Software\Microsoft\Windows\Cur rentVersion\Policies\System", "DisableRegistryTools") //调用全局函数,在后面有全部的代码
//判断当前注册表处于何种状态
If ret = 1 Then //返回值为1说明已经禁用注册表
Label2.Caption = "你的注册表处于安全被保护的状态"
Command1.Enabled = False
Else //返回除1以外的任何值都说明注册表没有受到保护
Label2.Caption = "你的注册表处于随时被改写的状态"
Command2.Enabled = False
End If
End Sub
----------------------------------
Private Sub Command1_Click() //禁用注册表
//写DWORD值的值项"DWORD Value",值为"1"
SetDWORDValue "Software\Microsoft\Windows\Cur rentVersion\Policies\System", "DisableRegistryTools", "00000001"
//把DisableRegistryTools这个键值设置为1,如果没有这个键就自动新建一个。
MsgBox "写入成功"
Command1.Enabled = False
Command2.Enabled = True
Label2.Caption = "你的注册表处于安全被保护的状态"
End Sub
-------------------------
Private Sub Command2_Click()//可用注册表
//写DWORD值的值项"DWORD Value",值为"0"
SetDWORDValue "Software\Microsoft\Windows\Cur rentVersion\Policies\System", "DisableRegistryTools", "00000000"
MsgBox "写入成功"
Command2.Enabled = False
Command1.Enabled = True
Label2.Caption = "你的注册表处于随时被改写的状态"
End Sub
------------------------
Private Sub Command3_Click()//退出程序
Unload Me
End Sub
FORM1中的程序代码之所以看起来非常简洁,是因为它们调用了一个全局的BAS文件中的函数操作注册表,全局的BAS文件的代码由于太多,可以到网站下载,下载地址:
http://www.cpcw.com/xz/bas.rar
四、说明
在BAS文件的通用中有Public Const HKEY_CURRENT_USER = &H80000001,这是表明注册表中HKEY_CURRENT_USER这个主键的调用值,如果你使用其他主键写程序时,相应的常数值分别为:
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_DYN_DATA = &H80000006
注:以上程序在Windows XP SP2及VB6.0下编写及调试成功。
如何给注册表加锁
木马、病毒在侵入系统的同时,为了以后能更好的存活在系统内,恶意程序会在注册表里,写入一些相关的恶意信息,可见注册表的作用是非常大的。www.sq120.com推荐文章
因此毫不夸张地说保护系统安全,要从注册表开始,不过注册表的键值实在多如牛毛,而且每个键值都有一定的作用,很难让初学者掌握,所以不妨请Ghost Security Suite(以下简称GSS)(下载地址:http://download.cpcw.com)为你的注册表保驾护航。
为注册表撑起保护伞
GSS防火墙最大的特点就是为注册表提供很多防护设置,用户可根据自己的实际情况,来修改默认的规则或者自定义新规则等操作,从而可以有效降低病毒侵入的概率。
添加删除组
打开“GSS客户端”程序,默认选择的是“首页”标签,我们从中单击“配置”按钮,在弹出的“程序规则”对话框内,左侧“树形栏”已经为大家分好了“全局注册表规则”和“应用程序规则”的栏目,并且其下方还有好几个组件。
如果此时你想添加新组,可以在“分组名称”和“分组说明”文本处,输入想要创建组的相关信息,而后单击“添加分组”按钮,就可将其添加到左侧组件中。反之删除组件,只要选择想要删除的分组,单击“删除分组”按钮,就可将选中组的删除掉。
配置注册表规则
GSS默认情况下,已经为各个分组设置了相关的配置,如果你对默认的配置不满意,可以对它进行更改。这里选择不满意的分组,右侧窗口就会列出该组所包含的注册表,以及其相关项,然后从中选择不满意的键值设置,下方就会显示出默认设置的操作规则(图1)。
为了安全起见,你可依自己的实际情况,对事件操作、执行动作来进行勾选设置,当然你也可以不做修改,可按照默认设置保护注册表的安全。
导出、导入分组
如果此时你想将以上配置好的规则,导出与其他人共同分享,可以选中左侧里面的某个分组后,单击右侧窗口里的“导出分组”按钮,就可将当前分组信息导出,并且以Ghst文件的格式保存到硬盘上。另外相反单击“导入分组”按钮,则可以将硬盘里的分组信息导入到GSS规则内。
监视改动有提醒 病毒修改请绕道
以上规则都已经设置完毕后,GSS防火墙就开始自动监视注册表的举动。如果系统里的某个程序要改写注册表,此时GSS就会自动弹出警告的对话框,给予用户详细键值信息的修改提示(图2)。
大家可根据其信息来判断它是否为恶意修改,还是正常程序的加载,从而可以选择单击“允许”按钮对注册进行修改操作,反之单击“拦截”按钮,拒绝对注册表的读写操作,来保证注册表的安全。
From:http://www.itcomputer.com.cn/Article/Software/201309/338.html