返回列表 回復 發帖

註冊表加鎖的方法

註冊表保存了Windows中極重要的配置資訊,而任何人都可以通過運行Regedit命令或雙擊某個Reg檔來改寫它,這樣做其實是很危險的。本期介紹的編程方法,就是為防止註冊表被改寫而設計的。本程式有三個功能:?顯示當前註冊表狀態(處於可改寫還是處於被保護狀態);?鎖定註冊表使它不被人改寫;?解鎖註冊表使它可以隨時被改寫。下麵我們用VB6.0來實現它。
一、設計窗體
  首先打開VB程式,新建一個FORM1,將其Caption改為“註冊表保護程式演示”,BorderStyle設為1-Fixed Single。放上一個Label1(其Caption改為“當前註冊表狀態:”)和一個Label2,另放上COMMAND1,其Caption改為“禁止使用註冊表”,再放上COMMAND2,其Caption改為“允許使用註冊表”,COMMAND3的Caption改為“退出程式”。
 
二、編程思路
  程式運行時首先檢查註冊表,看當前註冊表的狀態是處於被保護狀態還是鎖定狀態,並返回資訊到Label2。如已保護則COMMAND1不可用,如無保護則COMMAND2不可用,且建一個全局的BAS檔,其中包含所有訪問註冊表時要用的常數及函數程式,方便主FORM1可以隨時調用。下麵給出主程序的和全局BAS檔的核心代碼。
三、核心代碼
  Private Sub Form_Load() //打開窗口
  Dim ret As Integer
  Move (Screen.Width - W-idth)  2, (Screen.Height - Height)  2 //居中顯示
  ret = GetDWORDValue("SoftwareMicrosoftWindowsCur rentVersionPoliciesSystem", "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 "SoftwareMicrosoftWindowsCur rentVersionPoliciesSystem", "DisableRegistryTools", "00000001"
  //把DisableRegistryTools這個鍵值設置為1,如果沒有這個鍵就自動新建一個。
  MsgBox "寫入成功"
  Command1.Enabled = False
  Command2.Enabled = True
  Label2.Caption = "你的註冊表處於安全被保護的狀態"
  End Sub
  -------------------------
  Private Sub Command2_Click()//可用註冊表
  //寫DWORD值的值項"DWORD Value",值為"0"
  SetDWORDValue "SoftwareMicrosoftWindowsCur rentVersionPoliciesSystem", "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下編寫及調試成功。
返回列表