flauschbobbel
Goto Top

Druckertreiber von Netzwerkdruckern deinstallieren

Hallo Zusammen,

ich versuche via Skript einen Netzwerkdrucker RICOH Aficio 4100N zu deinstallieren.
Auf jedem Client soll ein Script laufen und den Netzwerkdrucker und die Treiber deinstallieren.
Ich muss nur mit Windows-Bordmitteln versuchen den Drucker un die Treiber sauber zu deinstallieren. Ich kann/darf keine externen Tools hier bei uns im Unternehemen verwenden.

Hier nun zum Skript und mein Problem:

Der Befehl
...
rundll32 printui.dll,PrintUIEntry /dl /n %DruckerName%
...

funktioniert einwandfrei im Skript und löscht aber nur den Drucker aus der Ansicht "Drucker und Faxgeräte".

Nun versuche ich weiterhin im Skript

...
set ModellDruckerTreiber="RICOH Aficio SP 4110N PCL 6"
...
rundll32 printui.dll,PrintUIEntry /dd /m %ModellDruckerTreiber%
...

Dabei kommt die Meldung:

Der Vorgang konnte nicht abgeschlossen werden.
Der angegebene Druckertreiber ist in Verwendung.

Ich habe die gleiche Syntax verwendet, wie in den rundll32 printui.dll,PrintUIEntry /? Beispielen angegeben.
Lt. der Hilfe soll der Schalter /dd den Treiber entfernen. Macht er aber leider nicht.
Wie kann ich den Druckertreiber hier sauber im Skript deinstallieren? Könnt ihr mir weiterhelfen?

Habe auch mal bei WMIC nachgesehen. Hier kann ich aber nur ALLE Printer löschen, das soll aber nicht sein. Vor allem möchte ich versuchen die Treiber zu deinstallieren. Möglichst ohne Reboot!

Vielleicht habe Ihr aber auch generell eine andere Idee, denn mein Ziel/Aufgabe ist es, alle Änderungen, die bei der automatisierten Installation des Netzwerkdruckers gemacht werden (wird ebenfalls über rundll32 printui.dll,PrintUIEntry durchgeführt, Treiberinstallations usw.)
mittels dieser Deinstallationsroutine ggf. wieder rückgängig machen können.
Ich habe mir in einer virtuelle Testumgebung schon mal mittels dem Tool "Total Uninstall v4.6.0" (30Tg Testversion) angesehen, welche Dateien, Verzeichnisse und Registry-Keys angelegt werden. Bei Bedarf möchte ich diese Keys und Dateien mittels dieser Uninstallroutine wieder rückgängig machen. Wie gesagt, ich kann/darf keine externen, kommerziellen Tools bei uns verwenden. Soll alles über Windows-Bordmittel laufen.

Danke schon mal im voraus für Eure Unterstützung.

Grüße,
Flauschbobbel

Content-ID: 88951

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

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

60730
60730 02.06.2008 um 18:32:08 Uhr
Goto Top
Servus,

mich irritiert folgendes:

via Skript einen Netzwerkdrucker RICOH Aficio 4100N zu deinstallieren.

Im Zusammenhang mit:
rundll32 printui.dll,PrintUIEntry /dl /n usw. usf.

wenn ich nicht ganz daneben liege - war DL für den Lokalen Drucker.
Probier mal dn

bzw. zuerst /dd - dann /dn.
gruß
Flauschbobbel
Flauschbobbel 02.06.2008 um 19:01:58 Uhr
Goto Top
Hallo TimoBeil,

der Drucker ist unter "Drucker und Faxgeräte aufgelistet.
Verwende ich /dn ( rundll32 printui.dll,PrintUIEntry /dn /n %Druckername% )
erhalte ich die Meldung:

Die Druckerverbindung kann nicht entfernt werden.Entweder der eingegebene Druckername ist ungültig oder der eingegebene Drucker ist nicht mehr mit dem Server verbunden.
Klicken Sie auf Hilfe um weitere Informationen zu erhalten.

Verwende ich den Parameter /dl kann ich den Drucker löschen.

rundll32 printui.dll,PrintUIEntry /dd /m %ModellDruckerTreiber%
bringt nix, dann erhalte ich wie oben beschrieben die Meldung:

Der Vorgang konnte nicht abgeschlossen werden.
Der angegebene Druckertreiber ist in Verwendung

Grüße,
Flauschbobbel
60730
60730 02.06.2008 um 19:24:29 Uhr
Goto Top
ok..

der ist aber nicht der std. Drucker ? *duck*

Probier mal einen Neustart nach dem /dl - vielleicht klapperts dann besser...

Ps:
rundll32 printui.dll,PrintUIEntry /dd /m "RICOH Aficio SP 4110N PCL 6"
-ohne Variable - was kommt dabei raus?
Dynadrate
Dynadrate 02.06.2008 um 19:28:54 Uhr
Goto Top
Ich würde zwischendurch den spooler durchstarten:
net stop spooler
net start spooler
Flauschbobbel
Flauschbobbel 02.06.2008 um 20:20:24 Uhr
Goto Top
Nein, der ist nicht der Standarddrucker.
Ein Neustart nach dem /dl hat nichts gebracht.

Grüße,
Flauschbobbel
Flauschbobbel
Flauschbobbel 02.06.2008 um 20:25:49 Uhr
Goto Top
Ah, sorry hatte vergessen: Ohne Variable besteht das Problem auch nach wie vor.
Grüße,
Flauschbobbel
Flauschbobbel
Flauschbobbel 02.06.2008 um 20:26:52 Uhr
Goto Top
Hallo Dynadrate,

leider hat das auch nichts gebracht.

Grüße,
Flauschbobbel
60897
60897 02.06.2008 um 23:00:37 Uhr
Goto Top
rundll32 printui.dll,PrintUIEntry /dn /n %Druckername% <- wobei %Druckername% der Freigabename ist!
net stop spooler
net start spooler
rundll32 printui.dll,PrintUIEntry /dd /m %ModellDruckerTreiber%

Warum so? /dl löscht einen lokalen Drucker, d.h., der wird dann zwar nicht mehr angezeigt, aber die Netzwerkverbindung ist weiterhin vorhanden, deswegen die anschließende Fehlermeldung. Also zwingend /dl.
Spooler stoppen und starten muss sein, weil Dateien in Gebrauch sind.
Als Druckernamen den Freigabenamen verwenden: Damit habe ich mich mal herumgeärgert, ist unter 2000 aber anders, als unter 2003!
Und dann Treiber weg. %ModellDruckerTreiber% = Name, wie der Treiber angezeigt wird.

Mein Vorschlag dazu. Viel Erfolg, ich leide mit Dir!

Bonkers
Flauschbobbel
Flauschbobbel 03.06.2008 um 17:49:14 Uhr
Goto Top
Hallo Bonkers,

danke für Deine Info.

Auf allen meinem Clients (WinXP SP2) in einem Standort wurde mittels einem Skript die Drucker installiert und der dazugehörige Standard-TCPIP-Port zuvor mittels REG ADD in der Registry angelegt.
Anschliessend habe ich auf des Clients den Spooler gestoppt/wieder gestartet (das Ganze natürlich im Skript)
und danach den Drucker hinzugefügt wie nachfolgend beschrieben.

Hier die Syntax, die ich beim Anlegen auf den Clients verwendet habe:
...
::  	Druckertreiber hinzufuegen
	rundll32 printui.dll,PrintUIEntry /ia /m %ModellDruckerTreiber% /f %INFfile% /q
...
::  	Logischen Drucker einrichten
	rundll32 printui.dll,PrintUIEntry /if /b %DruckerName% /f %INFfile% /r"%IPPortName%" /m %ModellDruckerTreiber% /q  
...

Das funktioniert auch einwandfrei.
Die Drucker wurden angelegt, es wurde kein Standarddrucker festgelegt (ist beabsichtigt)und auch keine Freigabe für den Drucker erstellt. Drucken funktioniert enwandfrei.
Der Drucker auf den Clients taucht als weiterer zusätzlicher Drucker auf und kann bei Bedarf angesprochen werden.
Der Drucker ist doch dann ein lokaler Drucker auf jedem Client, der eben nicht direkt phsikalisch am Client angeschlossen ist, sondern eben als Netzwerkdrucker? Oder?

So weit so gut. Ich habe nun Deinen Vorschlag versucht:

rundll32 printui.dll,PrintUIEntry /dn /n %DruckerName%

Dabei erhalte ich die Meldung:
Die Druckerverbindung kann nicht entfernt werden. Entweder der eingegebene Druckername ist ungültig,oder der angegebene Drucker ist nicht mehr mit dem Server verbunden. Klicken Sie auf Hilfe...

%DruckerName% ist genau der Name den ich bei der Anzeige "Drucker und Faxgeräte" als Druckername angezeigt bekomme.
In meiner Testumgebung wäre das als Beispiel der Name: "Drucker_Schalter_192.168.1.226"
Was meinst Du mit Freigabename? Ich habe den Drucker nicht freigegeben.
Zur Sicherheit habe ich auch den Printer manuell installiert mit einem kürzeren Druckernamen (7 Zeichen) und ohne "_" und ohne "."
Das Ergebnis ist aber das gleiche. Siehe Meldung oben.

Ich habe auch mal rundll32 printui.dll,PrintUIEntry /dn /n "\\MeinComputername\Drucker_schalter_192.168.1.226" versucht, aber das Ergebnis bleibt gleich.

net stop spooler
net start spooler

rundll32 printui.dll,PrintUIEntry /dd /m "RICOH Aficio SP 4110N PCL 6"

bringt die Meldung:
Der Vorgang konnte nicht abgeschlossen werden. Der angegebene Druckertreiber ist in Verwendung.


Oh Bonkers,
ich glaube ich habe eben beim Schreiben meinen Fehler gefunden:
Der Druckertreiber heißt: "RICOH Aficio SP 4100N PCL 6" !!!
Eine "1" zuviel.

Nun scheint auch das Skript zu laufen:
rundll32 printui.dll,PrintUIEntry /dl /n %DruckerName% --> löscht den lokalen Drucker
rundll32 printui.dll,PrintUIEntry /dd /m "RICOH Aficio SP 4100N PCL 6" ---> Entfernt die Treiber
Stop/Start Spooler

Nun muss ich nur noch einige Registry-Keys und Files/Folders über das Skript löschen. Dann sollte der Cleint wieder aufgeräumt sein.
Danke für Eure Unterstützung!!


Grüße,
Flauschbobbel
60897
60897 03.06.2008 um 18:05:09 Uhr
Goto Top
Ok, ich geh mal so stückweise da durch:

Zuerst mal: Ich hab das wohl falsch verstanden, dass alle Drucker lokal angelegt sind. Ich dachte, dass Du auf einen freigegebenen Netzwerkdrucker losgehst. Jetzt erklärt sich auch die Porteinrichtung. Gut, dass wir also darüber gesprochen haben.

Dann: Wenn Du mit einer Inf-Datei installiert hast, müsste das doch rückwärts genauso möglich sein, schon getestet? Ich habe noch nie mit inf-Dateien Drucker installieren, deswegen habe ich mich damit noch nicht beschäftigt.

Die Meldung auf den Versuch mit /dn ist dann auch logisch, kann also abgehakt werden.

Och! Ich hab erst jetzt das Ende gelesen...

Kein Thema nicht, wenn sich alle Fehler so auflösen lassen, wird wenigstens irgendwann mein Buch voll, was ich immer schon mal schreiben wollte face-wink

Bonkers