
Mellékelten megtalálható az alábbi szkript "RegAccess.vbs" néven. Futtatása után kiírja, hogy az aktuális felhasználó milyen jogosultságokkal rendelkezik a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet kulcs felett.
Alábbiakban a HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet kulcs hozzáférési jogosultságait olvassuk ki, de más kulcsok esetében is ugyanezt a módszert használhatjuk.
A hozzáférési engedélyeket a kulcs által visszaadott (hexadecimális) számok alkotják, melyeket a könnyebb olvashatóság kedvéért konstansokkal helyettesítünk.
const KEY_QUERY_VALUE = &H0001
const KEY_SET_VALUE = &H0002
const KEY_CREATE_SUB_KEY = &H0004
const DELETE = &H00010000
const HKEY_LOCAL_MACHINE = &H80000002
A lekérdezést a helyi gép (.) regisztrációs adatbázisán hajtjuk végre, de a pont helyére egy másik gépet beírva, azon is végrehajtható, fontos azonban, hogy a futtató felhasználónak elégséges jogosultsággal kell rendelkeznie.
Szkriptünk az aktuálisan bejelentkezett felhasználó hitelesítési adatait (impersonationLevel=impersonate) fogja használni a registry eléréséhez az előző változóban megadott gépen (strComputer). A Windows Management Instrumentation (WMI) objektummal a "Winmgmts" interfészen keresztül teremtünk kapcsolatot. Az "StdRegProv" osztály tartalmazza a felhasználói programok és a regisztrációs adatbázis közötti interakciók lehetőségét. Maga az osztály a \root\default névtérben található.
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
A HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet kulcsot vizsgáljuk, a főkulcsot "HKEY_LOCAL_MACHINE" és az alkucsot két különböző paraméterként kell megadni, ezért utóbbit egy változóba helyezzük.
strKeyPath = "SYSTEM\CurrentControlSet"
A "CheckAccess" metódussal lehet lekérdezni a hozzáférési jogosultságokat, első paramétere a főkulcs, második az alkucs elérési útja, harmadik a lekérdezendő jog, amit a negyedikbe kapunk vissza.
oReg.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_QUERY_VALUE, bHasAccessRight
Ha tehát a lekérdezési engedély (KEY_QUERY_VALUE) igaz értéket ad vissza a "bHasAccessRight" változóba, akkor van lekérdezési engedélye.
If bHasAccessRight = True Then
Wscript.echo "Lekérdezési engedély van"
Ha nem igaz a visszatérési érték, akkor nincs.
Else
Wscript.echo "Lekérdezési engedély nincs"
End If
Ugyanígy kell eljárnunk a többi kulcs esetében is.
oReg.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_SET_VALUE, bHasAccessRight
If bHasAccessRight = True Then
Wscript.echo "Írási engedély van"
Else
Wscript.echo "Írási engedély nincs"
End If
oReg.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, KEY_CREATE_SUB_KEY, bHasAccessRight
If bHasAccessRight = True Then
Wscript.echo "Létrehozási engedély van"
Else
Wscript.echo "Létrehozási engedély nincs"
End If
oReg.CheckAccess HKEY_LOCAL_MACHINE, strKeyPath, DELETE, bHasAccessRight
If bHasAccessRight = True Then
Wscript.echo "Törlési engedély van"
Else
Wscript.echo "Törlési engedély nincs"
End If