Windows - Registry műveletek VBScriptekből

Registy 3. rész

forráskód letöltése
A Windows regisztrációs adatbázisáról szóló cikksorozatunk jelen részében VBScriptekből fogunk bejegyzéseket kiolvasni, létrehozni és törölni a Registryből. Kitérve arra is, hogy egyeztethető össze a VBScript automatikus változódeklarációja és a Registry kötött típusa. Cikkünkhöz mellékelve megtalálhatók a példákban szereplő szkriptek:
"RegRead.vbs" - Kiolvassa a regisztrációs adatbázisból az alaplapi BIOS dátumot, majd megjeleníti a képernyőn.
"RegWrite.vbs" - Létrehoz egy új bejegyzést.
"RegDelete.vbs" - Törli az előzőleg létrehozott bejegyzést.

A Windows Scripting Host-on keresztül lehet a regisztrációs adatbázishoz hozzáférni szkriptekből. Három metódus áll rendelkezésünkre, amelyekkel írási, olvasási és törlési feladatokat tudunk elvégezni:

A Registry olvasása:

A "RegRead" metódussal lehetséges, szintaxisa:
obj.RegRead (sztring)
Ahol az "obj" egy definiált "WshShell" objektum, a "sztring" pedig a Registry kiolvasandó értékének az elérési útja.
Az elérési útban a főkulcsok neveit kiírhatjuk teljes hosszukban, de használhatjuk az alábbi rövidítéseket is:
HKEY_CURRENT_USER = HKCU
HKEY_LOCAL_MACHINE = HKLM
HKEY_CLASSES_ROOT = HKCR
HKEY_USERS = HKEY_USERS (nem rövidíthető)
HKEY_CURRENT_CONFIG = HKEY_CURRENT_CONFIG (nem rövidíthető)
A metódus visszatérési értékénél szinkronban kell lennie a Registry és a VBScriptekben használható változóknak, ezért az alábbi típusokkal tudunk dolgozni:
REG_SZ = string
REG_DWORD = integer
REG_BINARY = VBArray - integerekből álló tömb
REG_EXPAND_SZ = sztring
REG_MULTI_SZ = VBArray - sztringekből álló tömb

Ez alapján készítsünk egy szkriptet és olvastassuk ki a " HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\Biosinfo\SystemBiosDate" helyen lévő sztringet (REG_SZ), amely az alaplapi BIOS dátumát tartalmazza:

Első lépésben definiálunk egy "rr" nevű "WScript.Shell" objektumot:
Set rr = CreateObject("WScript.Shell")
A "val" nevű változóba beolvassuk a Registry értékét. Mivel az adott bejegyzés REG_SZ, a "val" automatikusan felveszi a string típust:
val = rr.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Biosinfo\SystemBiosDate")
Ennek megfelelően sztringként kezelve hozzáfűzhetjük egy másik sztringhez, így egy értelmes mondatot kapunk, majd az egészet kiíratjuk a képernyőre:
MsgBox ("Az alaplap BIOS dátuma: " + val)

Második metódusunk neve: "RegWrite", szintaxisa:
obj.RegWrite (sztring, érték, típus)
Ahol az "obj" egy "WshShell" objektum. A "sztring" Registry elérési út, ahol az új érték lesz. A "típus" egy opcionális érték, nem kötelező megadni, a beírt adat Registry-beli típusát jelenti. Utóbbira a pontosítás végett van szükség, mert sztring típusú VBScript változó lehet REG_EXPAND_SZ és REG_SZ is, az integer pedig lehet REG_DWORD és REG_BINARY is.
Figyelem! A REG_MULTI_SZ érték létrehozását a RegWrite metódus nem támogatja.

Készítsünk egy szkriptet, hozzunk létre egy "Proba" nevű REG_SZ típusú bejegyzést "Sikerült" értékkel feltöltve:

Az első lépés ismét a "WScript.Shell" objektum létrehozása:
Set rr = CreateObject("WScript.Shell")
Bejegyzésünket közvetlenül a "HKEY_CURRENT_USER" főkulcs alatt helyezzük el:
val = rr.RegWrite("HKCU\Proba","Sikerült","REG_SZ")
Ugyanígy a Registry faszerkezetének belsőbb részeire is írhatunk és az itt megadott fix sztringek helyett változókat is használhatunk. Arra vonatkozóan nem történik ellenőrzés, hogy az adott bejegyzés létezik-e, ha igen minden külön figyelmeztetés nélkül felülíródik, ha nem - létrejön. Ezért nem tartalmaz a WSH külön bejegyzés módosító parancsot.


Utolsó metódusunkkal az adott bejegyzés törlését tudjuk elvégezni. Neve: RegDelete, szintaxisa:
obj.RegDelete (sztring)
Ahol az "obj" egy "WshShell" objektum. A "sztring" a törlendő Registry bejegyzés elérési útja.
Az előző példában létrehozott bejegyzést így törölhetjük:

Az első lépés itt is a "WScript.Shell" objektum létrehozása:
Set rr = CreateObject("WScript.Shell")
Majd a bejegyzés törlése:
rr.RegDelete("HKCU\Proba")
A törlés előtt nem kapunk külön figyelmeztető üzenetet.





Registry cikksorozat