注冊表保存了Windows中極重要的配置信息而任何人都可以通過運行Regedit命令或雙擊某個Reg文件來改寫它這樣做其實是很危險的本期介紹的編程方法就是為防止注冊表被改寫而設計的
本程序有三個功能①顯示當前注冊表狀態(處於可改寫還是處於被保護狀態)②鎖定注冊表使它不被人改寫③解鎖注冊表使它可以隨時被改寫下面我們用VB來實現它
一設計窗體
首先打開VB程序新建一個FORM將其Caption改為注冊表保護程序演示BorderStyle設為Fixed Single放上一個Label(其Caption改為當前注冊表狀態)和一個Label另放上COMMAND其Caption改為禁止使用注冊表再放上COMMAND其Caption改為允許使用注冊表COMMAND的Caption改為退出程序
二編程思路
程序運行時首先檢查注冊表看當前注冊表的狀態是處於被保護狀態還是鎖定狀態並返回信息到Label如已保護則COMMAND不可用如無保護則COMMAND不可用且建一個全局的BAS文件其中包含所有訪問注冊表時要用的常數及函數程序方便主FORM可以隨時調用下面給出主程序的和全局BAS文件的核心代碼
三核心代碼
Private Sub Form_Load() //打開窗口
Dim ret As Integer
Move (ScreenWidth Width) \ (ScreenHeight Height) \ //居中顯示
ret = GetDWORDValue(Software\Microsoft\Windows\Cur rentVersion\Policies\System DisableRegistryTools) //調用全局函數在後面有全部的代碼
//判斷當前注冊表處於何種狀態
If ret = Then //返回值為說明已經禁用注冊表
LabelCaption = 你的注冊表處於安全被保護的狀態
CommandEnabled = False
Else //返回除以外的任何值都說明注冊表沒有受到保護
LabelCaption = 你的注冊表處於隨時被改寫的狀態
CommandEnabled = False
End If
End Sub
Private Sub Command_Click() //禁用注冊表
//寫DWORD值的值項DWORD Value值為
SetDWORDValue Software\Microsoft\Windows\Cur rentVersion\Policies\System DisableRegistryTools
//把DisableRegistryTools這個鍵值設置為如果沒有這個鍵就自動新建一個
MsgBox 寫入成功
CommandEnabled = False
CommandEnabled = True
LabelCaption = 你的注冊表處於安全被保護的狀態
End Sub
Private Sub Command_Click()//可用注冊表
//寫DWORD值的值項DWORD Value值為
SetDWORDValue Software\Microsoft\Windows\Cur rentVersion\Policies\System DisableRegistryTools
MsgBox 寫入成功
CommandEnabled = False
CommandEnabled = True
LabelCaption = 你的注冊表處於隨時被改寫的狀態
End Sub
Private Sub Command_Click()//退出程序
Unload Me
End Sub
FORM中的程序代碼之所以看起來非常簡潔是因為它們調用了一個全局的BAS文件中的函數操作注冊表全局的BAS文件的代碼由於太多可以到網站下載下載地址
四說明
在BAS文件的通用中有Public Const HKEY_CURRENT_USER = H這是表明注冊表中HKEY_CURRENT_USER這個主鍵的調用值如果你使用其他主鍵寫程序時相應的常數值分別為
Public Const HKEY_CLASSES_ROOT = H
Public Const HKEY_CURRENT_USER = H
Public Const HKEY_LOCAL_MACHINE = H
Public Const HKEY_USERS = H
Public Const HKEY_PERFORMANCE_DATA = H
Public Const HKEY_CURRENT_CONFIG = H
Public Const HKEY_DYN_DATA = H
注以上程序在Windows XP SP及VB下編寫及調試成功
From:http://tw.wingwit.com/Article/os/xtgl/201405/30892.html