在VB中使用注冊表

字號:

用VB編程,在打開一個主鍵時,常常會用RegOpenKey,比如要鎖定注冊表就寫成:
    Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpen
    KeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    ......
    Dim Hkey,r As Long
    r=RegOpenKey(HKCU,LockREG,Hkey)
    ........
    但是,有沒有想過有的用戶注冊表中沒有System主鍵,就無法打開這個子鍵,也就無法實現(xiàn)這個功能。解決的辦法是用另一個API,RegCreateKey這個API有主鍵則打開,如果沒有就自動創(chuàng)建并打開。所以上面的代碼應寫成
    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,因為參數(shù)相同,所以不會出錯。這樣你的軟件才能在所有用戶的機器上通行無阻。(文中的HKCU=HKEY_CURRENT_USER;LockREG=Software\Microsoft\Windows\CurrentVerson\Policies\System)