Windows - Mely fájlok alkotják a bejelentkezett felhasználó regisztrációs adatbázisát?

forráskód letöltése
A regisztrációs adatbázisnak vannak közös részei, melyek minden felhasználó esetében megegyeznek, ezek tárolják a gépre vonatkozó globális beállításokat. Továbbá vannak egyedi részek, melyek minden felhasználó esetében mások, ezek tárolják az egyedi beállításokat. Maga az adatbázis nem egy, hanem több fájlból tevődik össze. Az alábbiakban bemutatunk egy szkriptet a bejelentkezett felhasználó regisztrációs adatbázisát alkotó fájlok listázására.
Cikkünkhöz mellékeltük a szóban forgó szkriptet "ListRegFiles.vbs", futtatása a "ListRegFiles.bat" fájllal történik.
Elsőként deklarálunk egy konstanst, melyben közös géprészre vonatkozó kulcsra hivatkozunk. Szkriptekből nem a már megszokott, jól olvasható kulcsnevekkel lehet elérni a regisztrációs adatbázist, hanem hexadecimális számokkal. A könnyebb megértés kedvéért a számot konstanssal helyettesítjük.
const HKEY_LOCAL_MACHINE = &H80000002
A szkriptet a helyi számítógépen futtatjuk (".").
strComputer = "."
Minden megjelenített szöveget átirányítunk az alapértelmezett kimeneti eszközre (képernyő), így csak parancssorból lehet majd futtatni a szkriptet, de ez indokolt is a több sort tartalmazó eredmény miatt.
Set StdOut = WScript.StdOut
Szükségünk lesz a WMI (Windows Management Instrumentation) szolgáltatásra. Kapcsolódjuk hozzá a "winmgmts" interfészen keresztül az aktuálisan bejelentkezett felhasználó hitelesítési adataival (impersonationLevel=impersonate).
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_ 
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ó.
strComputer & "\root\default:StdRegProv")
A "System\CurrentControlSet\Control\hivelist" kulcs alatt vannak felsorolva az adatbázist alkotó komponensek.
strKeyPath = "System\CurrentControlSet\Control\hivelist"
Összegyűjtjük egy tömbbe az összetevőket.
oReg.EnumValues HKEY_LOCAL_MACHINE, strKeyPath,_
 arrValueNames, arrValueTypes
Egy ciklussal dolgozzuk fel a kapott eredményt.
For i=0 To UBound(arrValueNames)
Nem csak az alkotó fájlokat íratjuk ki, hanem a kulcsnevet is, melynek az adatait tárolják.
    StdOut.WriteLine "Kulcsnév: " & arrValueNames(i) & " -- "      
    oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,_
Alá kiíratjuk a fájlnevet.
    arrValueNames(i),strValue
    StdOut.WriteLine "Hely: " & strValue
Majd a jobb láthatóság kedvéért beszúrunk egy üres sort.
    StdOut.WriteBlankLines(1)
Végül zárjuk a ciklust.
Next