Autor: Samir Gutić
Pročitano: 4133 puta

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.