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:
Das lesen aus HKEY_USERS klappt hier nicht.
Das Script bricht mit einem Fehler in Bezug auf UBound ab.
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 67746
Url: https://administrator.de/contentid/67746
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
1 Kommentar