注冊表保存了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可以隨時調用。tw.WInGwiT.COM下面給出主程序的和全局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下編寫及調試成功。
From:http://tw.wingwit.com/Article/Software/201309/338.html