在VB中使用注冊表
Windows系統中的注冊表(Resgister)保存著大量的信息,我們可讀寫注冊表來更好地為我們軟件服務。
下面詳細講敘如何通過調用API函數操作注冊表:如何打開、創建主鍵,如何保存鍵值,以及查詢某鍵的鍵值等。
一、常數定義和API申明(我們會在使用該API時對它進行說明):
二、將下列代碼放在窗體的Load事件中
Private Sub Form_Load()
Dim hKey As Long 主鍵的句柄
Dim lpData As String 查詢得到的鍵值
Dim SizeOfData As Long 鍵值的長度
Dim ValueType As Long 鍵值的類型
SizeOfData = 150
Dim return_OpenKey As Long 函數調用的返回值
Dim PriKey As String 主鍵
Dim KeyValue1, KeyValue2 As String 鍵值名稱
PriKey = "北信BITIPeople" 主鍵
KeyValue1 = "教授" 鍵值名稱
KeyValue2 = "學生" 鍵值名稱
下面的函數RegOpenKeyEx取得一個句柄hKey
下面的函數RegCreateKey建立一個主鍵,如此鍵已存在,則打開它
下面的函數RegSetValueEx給指定的鍵值名稱賦鍵值
下面的函數RegSetValueEx給指定的鍵值名稱"學生" 賦鍵值為"15020"
下面的函數RegQueryValueEx檢索指定鍵值名稱的鍵值和鍵值類型
運行此程序后,打開注冊表,我們會發現在主鍵 HKEY_CURRENT_USER(在此主鍵下記錄本機當前用戶的一些信息)下,增加了子鍵"北信BITIPeople",我們還可看到兩個指定的鍵值名稱都有正確的鍵值。從而完成了注冊的任務。
注:此程序在VB5.0中運行通過。
下面詳細講敘如何通過調用API函數操作注冊表:如何打開、創建主鍵,如何保存鍵值,以及查詢某鍵的鍵值等。
一、常數定義和API申明(我們會在使用該API時對它進行說明):
| Private Const HKEY_CLASSES_ROOT = &H80000000 主鍵 Private Const HKEY_CURRENT_USER = &H80000001 主鍵 Private Const STANDARD_RIGHTS_ALL = &H1F0000 Private Const KEY_ENUMERATE_SUB_KEYS = &H8 Private Const KEY_SET_VALUE = &H2 Private Const KEY_CREATE_SUB_KEY = &H4 Private Const KEY_QUERY_VALUE = &H1 Private Const KEY_NOTIFY = &H10 Private Const KEY_CREATE_LINK = &H20 Private Const SYNCHRONIZE = &H100000 Private Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE)) Private Const REG_MULTI_SZ = 7 Private Const ERROR_SUCCESS = 0& Private Const READ_CONTROL = &H20000 Private Const REG_SZ = 1 Private Const REG_DWORD = 4 Private Const REG_EXPAND_SZ = 2 Private Const REG_BINARY = 3 Private Const REG_DWORD_BIG_ENDIAN = 5 Private Const REG_DWORD_LITTLE_ENDIAN = 4 Private Const REG_NONE = 0 Private Declare Function RegOpenKeyEx Lib “advapi32.dll" Alias “RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long Private Declare Function RegCreateKey Lib “advapi32.dll" Alias “RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Private Declare Function RegSetValueEx Lib “advapi32.dll" Alias “RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long |
二、將下列代碼放在窗體的Load事件中
Private Sub Form_Load()
Dim hKey As Long 主鍵的句柄
Dim lpData As String 查詢得到的鍵值
Dim SizeOfData As Long 鍵值的長度
Dim ValueType As Long 鍵值的類型
SizeOfData = 150
Dim return_OpenKey As Long 函數調用的返回值
Dim PriKey As String 主鍵
Dim KeyValue1, KeyValue2 As String 鍵值名稱
PriKey = "北信BITIPeople" 主鍵
KeyValue1 = "教授" 鍵值名稱
KeyValue2 = "學生" 鍵值名稱
下面的函數RegOpenKeyEx取得一個句柄hKey
| return_OpenKey =RegOpenKeyEx(HKEY_CURRENT_USER, "",0, KEY_ALL_ACCESS, hKey) |
下面的函數RegCreateKey建立一個主鍵,如此鍵已存在,則打開它
| If RegCreateKey(hKey, PriKey, hKey) <> ERROR_SUCCESS Then MsgBox "create " & PriKey & "Failed" Exit Sub End If Dim KeyData As String 鍵值 KeyData = "500" |
下面的函數RegSetValueEx給指定的鍵值名稱賦鍵值
| If RegSetValueEx(hKey, KeyValue1, 0&, REG_SZ, ByVal KeyData, Len(KeyData) + 1) <> ERROR_SUCCESS Then MsgBox "SetValue " & KeyValue1 & "Failed " Exit Sub End If KeyData = "15020" |
下面的函數RegSetValueEx給指定的鍵值名稱"學生" 賦鍵值為"15020"
| If RegSetValueEx(hKey, KeyValue2, 0&, REG_SZ, ByVal KeyData, Len(KeyData) + 1) <> ERROR_SUCCESS Then MsgBox "SetValue " & KeyValue2 & "Failed " Exit Sub End If return_OpenKey = RegQueryValueEx(hKey, KeyValue1, 0&, REG_SZ, 0&, SizeOfData) lpData = String(SizeOfData + 1, " ") |
下面的函數RegQueryValueEx檢索指定鍵值名稱的鍵值和鍵值類型
| If RegQueryValueEx(hKey, KeyValue1, 0&, REG_SZ, ByVal lpData, SizeOfData) <> ERROR_SUCCESS Then MsgBox "Query " & KeyValue1 & "Failed" End If RegCloseKey (hKey) 釋放主鍵的句柄 End Sub |
運行此程序后,打開注冊表,我們會發現在主鍵 HKEY_CURRENT_USER(在此主鍵下記錄本機當前用戶的一些信息)下,增加了子鍵"北信BITIPeople",我們還可看到兩個指定的鍵值名稱都有正確的鍵值。從而完成了注冊的任務。
注:此程序在VB5.0中運行通過。