http://dieseyer.de • all rights reserved • © 2011 v11.4

'v4.7********************************************************
' File: DruckerListe.vbs
' Autor: dieseyer@gmx.de
' dieseyer.de
'
' Listet alle Drucker, die am Computer definiert sind
'************************************************************

Option Explicit

Dim n, i, Text, TextX
Dim WSHShell, WSHNet, NetPRN, fso
Dim ObjReg, ObjRemote, KeyX, Rootkey, oVal

Set WSHShell = WScript.CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSHNet = WScript.CreateObject("WScript.Network")
Set NetPRN = WSHNet.EnumPrinterConnections


If (fso.FileExists("REGOBJ.DLL")) Then ' Regobj.dll registrieren (erfordert AdminRechte)
Text = "REGSVR32.EXE " & "REGOBJ.DLL" & " /S" ' damit lt sich besser auf die registry zugreifen
WshShell.Run (Text),,TRUE ' mu im gleichen Verzeichnis wie das Script stehen
Set ObjReg = WScript.CreateObject("RegObj.Registry")
Else
MsgBox "REGSVR32.EXE " & "REGOBJ.DLL" & " /S" & vbTab & " konnte nicht aufgerufen werden!", , WScript.ScriptName
WScript.Quit
End If

Set ObjRemote = objReg.RemoteRegistry(wshnet.ComputerName) ' Objekt zeigt auf aktuellen PC (REGOBJ.DLL)
KeyX = "\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion"
KeyX = "\HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows"

On Error Resume Next
Set RootKey = objRemote.RegKeyFromString(KeyX)
For Each oVal In RootKey.Values ' Auflistung Werte
if oVal.Name = "Device" then TextX = oVal.Value & "Device"
Next
On Error GoTo 0

Text = ""
For i = 0 To NetPRN.Count-1 Step 2
Text = Text & vbCRLF & vbTab & "Dr." & (i+2)/2 & vbTab & NetPRN(i) & vbTab & NetPRN(i+1)
If InStr( TextX, NetPRN(i) ) then Text = Text & vbCRLF & "==>" & vbTab & "Dr." & (i+2)/2 & " ist der Standarddrucker."
Next

MsgBox Text, , WScript.ScriptName

Set ObjReg = nothing
WshShell.Run ("REGSVR32.EXE " & "REGOBJ.DLL" & " /U /S"),,TRUE ' REGOBJ.DLL - Registrierung aufheben

WScript.Quit


http://dieseyer.de • all rights reserved • © 2011 v11.4