Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Druckerport auslesen

Frage Entwicklung VB for Applications

Mitglied: superwasi

superwasi (Level 1) - Jetzt verbinden

09.10.2008, aktualisiert 10.10.2008, 10650 Aufrufe, 4 Kommentare

Druckerport LPT, USB oder TCP?

Hallo zusammen. Ich habe ein kleines Problem und hoffe das mir ein schlauer Kopf weiter helfen kann!

Gibt es die Möglichkeit mit einem VB Script herauszufinden, ob der Druckerport für einen LPT USB oder Netzwerkdrucker bestimmt ist?

Oder gibt es über den Druckernamen die Möglichkeit, beispielsweise mit einem Regestryeintrag herauszufinden, mit was für einer Schnittstelle der Drucker angeschlossen ist?

Danke im voraus.
Mitglied: superwasi
09.10.2008 um 10:53 Uhr
Oder anderst gefragt, gibt es denn keine Möglichkeit per VBS die Anschlussart eines Druckers (LPT, USB, TCP also Netzwerkseitig) heraus zu finden?

Danke im voraus.
Bitte warten ..
Mitglied: Jochem
09.10.2008 um 13:07 Uhr
Moin,
in der Registry von W2K:

HKLM - System - CurrentControlSet - Control - Print - Printers

gibt es für jeden im System konfigurierten Drucker einen Eintrag. Einer der zugehörigen Schlüssel dazu lautet "Port".

Bei einem Netzwerkdrucker steht dort die jeweilige IP-Adresse drin, bei einem parallel angeschlossenen Drucker entsprechend "LPT1:", bei USB eben dann "USB001".

Wie Du die Werte nun ausgelesen bekommst, dazu können Dir sicher die VBS-Spezis Hilfestellung geben.
Bitte warten ..
Mitglied: superwasi
10.10.2008 um 11:23 Uhr
Danke Jochem!

Das war genau das, was ich benötigt habe.

Super!!!
Bitte warten ..
Mitglied: superwasi
10.10.2008 um 11:43 Uhr
Ich poste mal hier das ganze Script, fals jemand davon was brauchen sollte.
Ihr müsst nur darauf achten, dass manche Zeilenumbrüche durch das einfügen auf diese Seite entsatnden sind, die nicht zum Programm gehören.



'Variablen und Konstaten deklarieren
Dim SQLStr, strRecordSet, strComputer,druckerString,druckerString2,erstesZeichen,printServerName,druckerNummer,printserver1Oder2,printserver,printerName,nichtslash,zwischenspeicher, oldPrintServerName
Dim ipZaehler,strCommand,abgeschnitteneZahl,Value

'Hier wird der aktuell angemeldete User und der WS- Name ausgelesen.
Set Testobjekt= CreateObject("WScript.Network")
benutzername = Testobjekt.UserName
wsname = Testobjekt.ComputerName

'Hier wird das aktuelle Datum ausgelesen.
datum = date()

'Verbindung mit Datenbank herstellen.
StrConnect = "Driver={SQL Server};Server=sqlc8;Database=Printserver;"
Set conn = CreateObject("ADODB.Connection")
conn.Open StrConnect

On Error Resume Next

'Als Computeradresse wird ein . angegeben. Somit wird der Lokalhost angesprochen.
strComputer= "."

'Unterhalb werden die Drucker ausgelesen die auf dem lokalen Rechner installiert sind.
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer",,48)
For Each objItem In colItems

'Der Name des Druckers wird der Variable druckerString übergenem.
druckerString = objItem.Name

'Die Variable druckerString wird zerlegt um zu überprüfen, ob es sich um einen
'lokal oder netzwerkseitig installierten Drucker handelt.
erstesZeichen = Left (druckerString,1)
'MsgBox druckerString
'Wenn der Drucker über einen Printserver installiert ist, durchläuft der
'Drucker den ersten Teil der Schleife.
If (erstesZeichen="\")then

'Es werden die ersten zwei Zeichen nach den voranführenden "\\" an die
'Variabel "printServerName" übergeben
printServerName = Mid (druckerString,3,2)

'Hier wird der druckerName vom Rest des Strings getrennt.
'Ausgangsstring sieht in etwa so aus \\ps-bsgpsa11\prn1865.
druckerString2 = druckerString

'In der folgenden Schleife wird jedes Zeichen von hinten her
'kontrolliert, ob es ein "\" ist, sobald das Zeichen ein "\" ist wird
'die Schleife unterbrochen. Zusätzlich werden alle Zeichen gezählt.
While (nichtslash = 0)
zwischenspeicher = Right(druckerString2, 1)

If (zwischenspeicher <> "\") Then
druckerString2 = Left(druckerString2, Len(druckerString2) -1)
buchstabenzaehler = buchstabenzaehler + 1
End If
If (zwischenspeicher = "\") Then
nichtslash = 1
End If
Wend

'Der Druckername wir aus dem String "druckerString" mit der ermittelten
'Anzhal an Zeichen an die Variable "druckerName" übergeben
printerName = Right(druckerString, buchstabenzaehler)


'Wenn der Printservername mit "PS" oder "ps" anfängt führe den ersten
'Teil der Wenn- Bedingung aus, ansonsten den zweiten oder dritten.
If (printServerName = "PS" Or printServerName = "ps" )then

'Der Name des alten Printserver wird an die Variabel
'"oldPrintServerName" übergeben
oldPrintServerName = Mid (druckerString,3,11)

'Kontrolle, ob der ermittelte Benutzer mit dem ermittelten
'Computer bereits in der DB erfasst wurde
Set recordSet = CreateObject("ADODB.Recordset")
SQLStr = "SELECT COUNT(*) AS AnzRows FROM dbo.tPrinterCheck WHERE (wsname = '" & wsname & "') AND (printerName = '" & printerName & "') AND (username = '" & benutzername & "')"
recordSet.Open SQLStr, conn, 1, 1
recordSet.MoveFirst

Do Until recordSet.EOF

strRecordSet = recordSet(0)

'Wenn noch kein Eintrag in der DB vorhanden ist, führe
'die Wenn- Bedingung aus.
If strRecordSet = "0" Then
'Informationen werden in Datenbank geschrieben.
'Installationsart alter Printserver.
Set cmd = CreateObject("ADODB.Command")
cmd = "INSERT INTO tPrinterCheck(datum, username, wsname, printerName,OldPrintServer) VALUES ('" & datum & "', '" & benutzername & "', '" & wsname & "', '" & printerName & "', '" & oldPrintServerName & "')"
conn.Execute cmd
End If

recordSet.MoveNext
Loop

'Wenn der Printservername(Workstation die einen Pr freigibt) mit "WS"
'oder "ws" anfängt führe den ersten Teil der Wenn- Bedingung aus,
'ansonsten den dritten Teil.
ElseIf(printServerName = "WS"Or printServerName = "ws" )then

'Der Name Workstation wird an die Variabel "wsDiePrShared"
'(Workstation die printer shared) übergeben
wsDiePrShared = Mid (druckerString,3,6)


'Kontrolle, ob der ermittelte Benutzer mit dem ermittelten
'Computer bereits in der DB erfasst wurde.
Set recordSet = CreateObject("ADODB.Recordset")
SQLStr = "SELECT COUNT(*) AS AnzRows FROM dbo.tPrinterCheck WHERE (wsname = '" & wsname & "') AND (printerName = '" & printerName & "') AND (username = '" & benutzername & "')"
recordSet.Open SQLStr, conn, 1, 1
recordSet.MoveFirst

Do Until recordSet.EOF

strRecordSet = recordSet(0)

'Wenn noch kein Eintrag in der DB vorhanden ist, führe
'die Wenn- Bedingung aus
If strRecordSet = "0" Then
'Informationen werden in Datenbank geschrieben.
'Installationsart neuer Printserver.
Set cmd = CreateObject("ADODB.Command")
cmd = "INSERT INTO tPrinterCheck(datum, username, wsname, printerName, sharePrintserver) VALUES ('" & datum & "', '" & benutzername & "', '" & wsname & "', '" & printerName & "','" & wsDiePrShared & "')"
conn.Execute cmd
End If

recordSet.MoveNext
Loop

Else
'Unterhalb wird selektiert ob der Drucker auf den Printserver
'vm-ps01 oder vm-ps02 installiert wird.
druckerNummer = Right (druckerString,4) 'Hier wird die
'vierstellige Zahl des druckerStrings abgeschnitten.
printserver1Oder2 = druckerNummer Mod 2
If (printserver1Oder2 = "0")then 'Wenn das Ergebnis 0 ist wird
'der Printservername vm-ps02 in die DB geschrieben.
printserver = "vm-ps02"
Else 'Wenn das Ergebnis 0 ist wird der Printservername vm-ps01
'in die DB geschrieben.
printserver = "vm-ps01"
End If

'Kontrolle, ob der ermittelte Benutzer mit dem ermittelten
'Computer bereits in der DB erfasst wurde.
Set recordSet = CreateObject("ADODB.Recordset")
SQLStr = "SELECT COUNT(*) AS AnzRows FROM dbo.tPrinterCheck WHERE (wsname = '" & wsname & "') AND (printerName = '" & printerName & "') AND (username = '" & benutzername & "') AND (newPrintserver = '1')"
recordSet.Open SQLStr, conn, 1, 1
recordSet.MoveFirst

Do Until recordSet.EOF

strRecordSet = recordSet(0)

'Wenn noch kein Eintrag in der DB vorhanden ist, führe
'die Wenn- Bedingung aus
If strRecordSet = "0" Then
'Informationen werden in Datenbank geschrieben.
'Installationsart neuer Printserver.
Set cmd = CreateObject("ADODB.Command")
cmd = "INSERT INTO tPrinterCheck(datum, username, wsname, printerName, newPrintserver) VALUES ('" & datum & "', '" & benutzername & "', '" & wsname & "', '" & printerName & "','" & printserver & "')"
conn.Execute cmd
End If

recordSet.MoveNext
Loop

End If

'Leere den Inhalt der Variable "druckerName"
printerName = 0

'Wenn der Drucker lokal installiert ist, durchläuft er den zweiten Teil der
'Schleife.
Else
'Kontrolle, ob der lokal installierte Drucker ein Anwendungsdrucker
'ist, wie z.B. ein "Adobe PDF"- Drucker.
'Ist dies der Fall, dann führe die erste Bedingung aus, ansonsten die
'zweite.
If (druckerString="Adobe PDF") Or (druckerString="Microsoft XPS Document Writer") Or (druckerString="CSB-PDF-PRINTER") Or (druckerString="Smart Label Printer 240") then
'Wenn ein "Adobe PDF" Drucker oder "Microsoft XPS Document
'Writer" intsalliert ist, wird dieser nicht in die Datenbank
'geschrieben.

Else

'Hier wird der Anschlusstyp aus der Regestry ausgelesen (USB, LPT, TCP).
Const HKEY_LOCAL_MACHINE = &H80000002
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")
'Hier wird aus der Regestrie der Hostname ausgelesen, der zum
'Port gehört.
Set WshShell = CreateObject("WScript.Shell")
Path = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers\"& druckerString & "\Port"
Value = WshShell.RegRead(Path)

'Da die Bezeichnung USB,LPD am Anfang oder Schluss der
'Portbezeichnung vorkommt werden die ersten 3 und letzten 3
'Zeichen überprüft.
anschlussart = Left (Value,3)
anschlussart2 = Right (Value,3)

'Wenn die folgende Zeichenkombinationen zutreffen, wird
'folgender Teil der Schleife durchlaufen.
If (anschlussart = "USB") Or (anschlussart = "usb") Or (anschlussart2 = "USB") Or (anschlussart2 = "usb")then
'Wertübergabe des ermittelten Druckernamens an die
'Variabel "druckerName"
printerName = druckerString

Set recordSet = CreateObject("ADODB.Recordset")
SQLStr = "SELECT COUNT(*) AS AnzRows FROM dbo.tPrinterCheck WHERE (wsname = '" & wsname & "') AND (printerName = '" & printerName & "') AND (username = '" & benutzername & "')"
recordSet.Open SQLStr, conn, 1, 1
recordSet.MoveFirst

Do Until recordSet.EOF

strRecordSet = recordSet(0)

If strRecordSet = "0" Then
'Informationen werden in Datenbank
'geschrieben. Installationsart lokal.
Set cmd = CreateObject("ADODB.Command")

cmd = "INSERT INTO tPrinterCheck(datum, username, wsname, printerName, lokal, USB_LPT_TCP) VALUES ('" & datum & "', '" & benutzername & "', '" & wsname & "', '" & printerName & "','1','USB')"
conn.Execute cmd
End If

recordSet.MoveNext
Loop

'Wenn die folgende Zeichenkombinationen zutreffen, wird
'folgender Teil der Schleife durchlaufen.
ElseIf (anschlussart = "LPT") Or (anschlussart = "lpt") Or (anschlussart2 = "LPT") Or (anschlussart2 = "lpt")then
'Wertübergabe des ermittelten Druckernamens an die Variabel
'"druckerName"
printerName = druckerString

Set recordSet = CreateObject("ADODB.Recordset")
SQLStr = "SELECT COUNT(*) AS AnzRows FROM dbo.tPrinterCheck WHERE (wsname = '" & wsname & "') AND (printerName = '" & printerName & "') AND (username = '" & benutzername & "')"
recordSet.Open SQLStr, conn, 1, 1
recordSet.MoveFirst

Do Until recordSet.EOF

strRecordSet = recordSet(0)

If strRecordSet = "0" Then
'Informationen werden in Datenbank geschrieben.
'Installationsart lokal.
Set cmd = CreateObject("ADODB.Command")
cmd = "INSERT INTO tPrinterCheck(datum, username, wsname, printerName, lokal, USB_LPT_TCP) VALUES ('" & datum & "', '" & benutzername & "', '" & wsname & "', '" & printerName & "','1','LPT')"
conn.Execute cmd
End If

recordSet.MoveNext
Loop



Else

'Wertübergabe des ermittelten Druckernamens an die
'Variabel "druckerName"
printerName = druckerString

Set recordSet = CreateObject("ADODB.Recordset")
SQLStr = "SELECT COUNT(*) AS AnzRows FROM dbo.tPrinterCheck WHERE (wsname = '" & wsname & "') AND (printerName = '" & printerName & "') AND (username = '" & benutzername & "') AND (lokal = '1')"
recordSet.Open SQLStr, conn, 1, 1
recordSet.MoveFirst

Do Until recordSet.EOF

strRecordSet = recordSet(0)

If strRecordSet = "0" Then
'Informationen werden in Datenbank
'geschrieben. Installationsart lokal.
Set cmd = CreateObject("ADODB.Command")
cmd = "INSERT INTO tPrinterCheck(datum, username, wsname, printerName, lokal, USB_LPT_TCP) VALUES ('" & datum & "', '" & benutzername & "', '" & wsname & "', '" & printerName & "','1','TCP')"
conn.Execute cmd
End If

recordSet.MoveNext
Loop
End If
End If

End If
Next
Bitte warten ..
Ähnliche Inhalte
Windows 7
Druckerport via GPO festlegen:
Frage von DorianWindows 7

Hallo zusammen, ich habe mal wieder eine Frage. Ist es möglich via GPO den Druckerport von 9100 auf xxxx ...

Drucker und Scanner
Zugriff auf virtuellen Druckerport für USB per Browser möglich?
Frage von imebroDrucker und Scanner16 Kommentare

Hallo, ich habe meinen Laserdrucker (OKI C530dn) per USB direkt an meinem PC angeschlossen. Vorher hing dieser Drucker per ...

Batch & Shell
TCP IP Druckerport auf Win 7 Client von IP ändern auf DNS Hostname
Frage von pixel0815Batch & Shell9 Kommentare

Moin, ich suche nach einer einfachen Lösung den Druckerport zu ändern. Stelle es mir so vor, dass ein Skript ...

Exchange Server
Kalenderberechtigungen auslesen
gelöst Frage von garciamExchange Server8 Kommentare

Hallo Ich müsste von allen Kalendern die Standard-Berechtigung auslesen können und in eine CSV-Datei exportieren. Folgendes Script habe ich ...

Neue Wissensbeiträge
Viren und Trojaner

Deaktivierter Keylogger in HP Notebooks entdeckt

Information von bitcoin vor 16 StundenViren und Trojaner1 Kommentar

Ein Grund mehr warum man Vorinstallationen der Hersteller immer blank bügeln sollte Der deaktivierte Keylogger findet sich im vorinstallierten ...

Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 19 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Heiß diskutierte Inhalte
Batch & Shell
Trusted Sites für alle User auf dem PC einpflegen
Frage von xXTaKuZaXxBatch & Shell12 Kommentare

Aufgabestellung: Es sollen auf 1 PC (bzw. mehreren PCs) vertrauenswürdige Sites per Powershell eingetragen werden, die für alle User ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Vmware
DOS 6.22 in VMWare mit CD-ROM
gelöst Frage von hesperVmware10 Kommentare

Hallo zusammen! Ich hab ein saublödes Problem. Es ist eine VMWare mit DOS 6.22 zu erstellen auf dem ein ...

Cloud-Dienste
PIM als SaaS Nutzungsgebühr
Frage von vanTastCloud-Dienste8 Kommentare

Moin, wir haben uns ein PIM (Product Information Management) nach unseren Ansprüchen für viel Geld als SaaS-Lösung bauen lassen. ...