Za upis i čitanje iz bilo kojeg ključa (HKEY_) u registry-u potrebno je koristiti modul VBregistry.bas. U sljedećem primjeru je prikazano učitavanje password-a iz registry-a ( password = GetRegValue(hKey, kljuc, podkljuc, "!") ), kao i upis novog password-a u registry. (SetRegValue(hKey, kljuc, stavka, vrijednost)).
Prije korištenja pomenutih funkcija, potrebno je u proceduri General_Declarations deklarisati sljedeće varijable:
Dim pass As String
Dim password As String
'Globalne varijable
Public hKey As Long
Public Create As Long
'Vrijednosti operativnih oznaka
Public NOOPERATION As Integer
Public DELETEREGVALUE As Integer
Public DELETEREGKEY As Integer
Public GETREGVALUEDATA As Integer
Public SETREGVALUEDATA As Integer
'Operativne oznake
Public CurrentOperation As Integer
Public poredjenje As String
Potrebno je u formi iz koje će se vršiti čitanje i upis u registry kreirati sljedeće funkcije:
Za čitanje iz registry-a:
Function GetRegValue(hKey As Long, lpszSubKey As String, szKey As String, _
szDefault As String) As Variant
On Error GoTo Greska
Dim phkResult As Long, lResult As Long, szBuffer As String, lBuffSize As Long
'Kreiraj Buffer
szBuffer = Space(255)
lBuffSize = Len(szBuffer)
'Otvori key
RegOpenKeyEx hKey, lpszSubKey, 0, 1, phkResult
'Učitaj vrijednost
lResult = RegQueryValueEx(phkResult, szKey, 0, 0, szBuffer, lBuffSize)
'Zatvori key
RegCloseKey phkResult
'Proslijedi učitanu vrijednost
If lResult = ERROR_SUCCESS Then
GetRegValue = Left(szBuffer, lBuffSize - 1)
Else
GetRegValue = szDefault
End If
Exit Function
Greska:
MsgBox "GREŠKA #" & Str$(Err) & " : " & Error
GetRegValue = ""
End Function
Za upis u registry potrebna je sljedeća funkcija:
Function SetRegValue(hKey As Long, lpszSubKey As String, ByVal sSetValue As String, _ ByVal sValue As String) As Boolean
On Error GoTo Greska
Dim phkResult As Long, lResult As Long, SA As SECURITY_ATTRIBUTES
'Funkcija kreira key ili vrijednost ako ona već ne postoji.
'Otvari ili kreiraj key
RegCreateKeyEx hKey, lpszSubKey, 0, "", REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, SA, phkResult, Create
lResult = RegSetValueEx(phkResult, sSetValue, 0, REG_SZ, sValue, CLng(Len(sValue) + 1))
'Zatvori Key
RegCloseKey phkResult
'Vraćanje rezultata za SetRegValue
SetRegValue = (lResult = ERROR_SUCCESS)
Exit Function
Greska:
MsgBox "GREŠKA #" & Str$(Err) & " : " & Error
SetRegValue = False
End Function
Čitanje podataka iz registry-a
U proceduri ili funkciji za čitanje password-a iz registry-a upotrijebiti sljedeći kod:
'Deklaracija lokalnih varijabli
Dim datum As Date, kljuc As String, podkljuc As String
Dim stavka As String, vrijednost As String
Dim phkResult As Long, lResult As Long, SA As SECURITY_ATTRIBUTES
'Učitavanje starog password-a
hKey = HKEY_LOCAL_MACHINE
kljuc = "SOFTWARE\Program\Login\"
podkljuc = "Password"
password = GetRegValue(hKey, kljuc, podkljuc, "!")
If password = "!" Then
MsgBox "Nemate postavljen password za logiranje!" & Chr(10) & _
"Unesite željeni password.", vbOKOnly + vbInformation, "Obavještenje"
End If
Upis podataka u registry
U proceduri ili funkciji za upis password-a upotrijebiti sljedeći kod:
'Deklaracija lokalnih varijabli
Dim kljuc As String, podkljuc As String
Dim stavka As String, vrijednost As String
Dim phkResult As Long, lResult As Long, SA As SECURITY_ATTRIBUTES
'Upis password-a u registry
kljuc = "SOFTWARE\Program\Login\"
podkljuc = "Password"
poredjenje = kljuc
'Inicijalizacija public varijabli
NOOPERATION = 0
DELETEREGVALUE = 1
DELETEREGKEY = 2
GETREGVALUEDATA = 3
SETREGVALUEDATA = 4
CurrentOperation = NOOPERATION
'Registry key koji će biti korišten
hKey = HKEY_LOCAL_MACHINE
If StrComp(kljuc, poredjenje, 1) = 0 Then
'Kreiranje default SubKey-a ako ne postoji
If RegCreateKeyEx(hKey, kljuc, 0, "", REG_OPTION_NON_VOLATILE, _
KEY_ALL_ACCESS, SA, phkResult, Create) <> ERROR_SUCCESS Then
MsgBox "Nije moguće Kreirati/Otvoriti SubKey."
End
End If
'Zatvaranje default SubKey-a
RegCloseKey phkResult
Else
'Provjera postojanja datog Registry SubKey-a
If RegOpenKeyEx(hKey, kljuc, 0, 1, phkResult) <> ERROR_SUCCESS Then
MsgBox "Za nastavak je potreban validan SubKey."
End
End If
'Zatvara dati SubKey
RegCloseKey phkResult
End If
'Upis stavke i njene vrijednosti
stavka = "Password"
vrijednost = txtPassword.Text
If Not SetRegValue(hKey, kljuc, stavka, vrijednost) Then
MsgBox "Nije moguće upisati vrijednost."
End If
Modul VBRegistry.BAS možete preuzeti sa linka ispod.
Rar arhivu je potrebno otpakovati i modul iskopirati u folder VB6 projekta te ga uključiti u sam projekat.
Napomena:
Korištenje Windows registry baze za čuvanje informacija vezanih za program je vrlo praktično, ali pri tome treba biti jako oprezan da ne dođe do pogrešnih upisa ili brisanja što može dovesti do 'pada' Windows-a.