chas0rde
Goto Top

HKEY USERS via VBS auslesen zwecks Druckeranalyse

Programmierung eines VBScripts, welches aus der Registry eines Terminalservers die gemappten Drucker (und deren Treiber) ausliest, um "Treiberleichen" zwecks verbesserter Systemstabilität zu deinstallieren

Hallo,
ich möchte ein Script schreiben, welches mittel VBS (oder auch ähnlichem) aus HKEY_USERS die gemappten Drucker der User an einem Win2000 TS mit Citrixumgebung ausliest.

Mit den gewonnenen Daten möchte ich anschließend eine Auswertung fahren, um nicht mehr verwendete Druckertreiber aus dem System zu entfernen und so die Stabilität zu erhöhen.

Ich scheitere jedoch schon direkt am Anfang beim Auslesen der Daten aus der Registy.

Folgendes Codebeispiel:
Const HKEY_CLASSES_ROOT  = &H80000000
Const HKEY_CURRENT_USER   = &H80000001
Const HKEY_LOCAL_MACHINE  = &H80000002
Const HKEY_USERS          = &H80000003
Const HKEY_CURRENT_CONFIG = &H80000005

 

Set reo = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")  

regKey = "S-1-5-21-527237240-113007714-682003330-18312\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts"  
reo.EnumValues HKEY_USERS, regKey, arrValueNames, arrValueTypes

Const REG_SZ        = 1
Const REG_EXPAND_SZ = 2
Const REG_BINARY    = 3
Const REG_DWORD     = 4
Const REG_MULTI_SZ  = 7

For i=0 To UBound(arrValueNames)
    WScript.Echo arrValueNames(i)
    Select Case arrValueTypes(i)
        Case REG_SZ
            WScript.Echo "  String"  
        Case REG_EXPAND_SZ
            WScript.Echo "  Expanded String"  
        Case REG_BINARY
            WScript.Echo "  Binary"  
        Case REG_DWORD
            WScript.Echo "  DWORD"  
        Case REG_MULTI_SZ
            WScript.Echo "  Multi String"  
    End Select
Next 

Das lesen aus HKEY_USERS klappt hier nicht.
Das Script bricht mit einem Fehler in Bezug auf UBound ab.
Fehler:Typen unverträglich: UBound
Code: 800A000D

Ein Test mit isArray, ob arrValueNames ein Array ist scheitert.
Ich vermute also, dass ein quasi leeres Resultat zurückgeliefert wird.

Selbige Abfrage auf HKLM oder andere funktioniert.
Auch eine direkte Abfrage eines REG_SZ innerhalb des Pfades im Codebeispiel mittels WSH-Shell mittels readkey funktioniert.

Hat jemand eine Idee woran dies liegen könnte?

Das Script selbst wird direkt auf dem Terminalserver ausgeführt und die Einträge sind in der Registry vorhanden.

Danke
chaser

Content-Key: 67746

Url: https://administrator.de/contentid/67746

Printed on: April 19, 2024 at 10:04 o'clock

Member: chas0rde
chas0rde Sep 04, 2007 at 07:21:11 (UTC)
Goto Top
Hallo @ll,
ich habe einen alternativen Lösungsweg gefunden:

installierte Drucker auslesen

mich interessiert jedoch trotzdem, warum das Auslesen in HKEY_USERS nicht funktioniert.
Also falls jemand eine Idee hat, kann diese ruhig posten ;)

Danke
chaser