在VB編程中使用系統“注冊表”
發表于:2007-07-14來源:作者:點擊數:
標簽:
文/朱文剛 用 VB 編程,在打開一個主鍵時,常常會用RegOpenKey,比如要鎖定注冊表就寫成: Private Declare Function RegOpenKey Lib advapi32.dll Alias RegOpen KeyA (ByVal hKey As Long, ByVal lpSubKey As String, phkRes ult As Long) As Long ......
文/朱文剛
用
VB編程,在打開一個主鍵時,常常會用RegOpenKey,比如要鎖定注冊表就寫成:
Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpen
KeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkRes
ult As Long) As Long
......
Dim Hkey,r As Long
r=RegOpenKey(HKCU,LockREG,Hkey)
........
但是,有沒有想過有的用戶注冊表中沒有System主鍵,就無法打開這個子鍵,也就無法實現這個功能。解決的辦法是用另一個API,RegCreateKey這個API有主鍵則打開,如果沒有就自動創建并打開。所以上面的代碼應寫成
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
......
r=RegCreateKey(HKCU,LockREG,Hkey)
......
這樣就不會出錯了。放棄RegOpenKey吧,把用RegOpenKey的地方全部改成RegCreateKey,因為參數相同,所以不會出錯。這樣你的軟件才能在所有用戶的機器上通行無阻。(文中的HKCU = HKEY_CURRENT_USER;LockREG = Software\Microsoft\
Windows\CurrentVerson\Policies\System)
原文轉自:http://www.anti-gravitydesign.com