Schlagwort-Archive: Windows Print Spooler

Print Spooler ist der Windows-Dienst zuständig für das verarbeiten von Druckaufträgen. Print Spooling ist das Abfangen (Puffer) und Senden eines Druckauftrags zum Drucker.

Druckereinstellungen rundll32 printui.dll PrintUIEntry

Windows Druckereinstellungen vornehmen mit rundll32 printui.dll PrintUIEntry

printui.dll ist eine ausführbare Datei die Funktionen enthält, diese von den Dialogfeldern für die Druckereinstellungen verwendet werden. Diese Funktionen können auch aus einem Skript oder einer Befehlszeilen-Batchdatei heraus aufgerufen oder interaktiv über die Eingabeaufforderung ausgeführt werden.

rundll32 printui.dll,PrintUIEntry

Die Drucker Eigenschaften aufrufen mit + R under der Eingabe: rundll32 printui.dll,PrintUIEntry /s

Druckereinstellungen rundll32 printui.dll,PrintUIEntry

Das Fenster Eigenschaften von Druckerserver wird geöffnet.

Eigenschaften von Druckerserver

Das Fenster Eigenschaften von Druckerserver wird mit Abschnitt Treiber geöffnet: rundll32 printui.dll,PrintUIEntry /s /t2

Eigenschaften von Druckerserver Abschnitt Treiber

Mit dem Button Treibereinstellungen ändern und Hinzufügen können Treiber für vorhandene Drucker installiert werden, für diese später Anschlüsse zugewiesen werden, um über die Drucker Freigabe mit anderen Benutzer im Netzwerk gemeinsam zu verwenden.

Beispiel

Für das hinzufügen eines neuen Remotedrucker „Laserjet“ bei dem Computer „Client“, kann dieser Befehl ausgeführt werden:

rundll32 printui.dll PrintUIEntry /in /n\\client\laserjet

Hinweise

Das Schlüsselwort PrintUIEntry berücksichtigt die Groß- und Kleinschreibung. Die Syntax für diesen Befehl muss genau so eingeben, werden, wie in den Beispielen gezeigt.

Weitere Beispiele in der Befehlszeile mit dem folgenden Befehl: rundll32 printui.dll,PrintUIEntry /?

Syntax: rundll32 printui.dll,PrintUIEntry [Optionen] [@Befehlsdatei]
   /a[Datei] Name der Binärdatei
   /b[Name] Basisdruckername
   /c[Name] UNC-Computername, wenn die Aktion auf einem Remotecomputer ausgeführt wird.
   /dl Löscht den lokalen Drucker.
   /dn Löscht die Netzwerkdruckerverbindung.
   /dd Löscht den Druckertreiber.
   /e Zeigt Druckeinstellungen an.
   /f[Datei] Entweder INF-Datei oder Ausgabedatei.
   /F[Datei] Speicherort einer INF-Datei, von der die mit "/f" angegebene INF-Datei möglicherweise abhängt.
   /ga Fügt Druckerverbindungen pro Maschine hinzu. (Die Verbindung wird Benutzern bei der Anmeldung zur Verfügung gestellt.)
   /ge Listet Druckerverbindungen pro Maschine auf.
   /gd Löscht Druckerverbindungen pro Maschine. (Die Verbindung wird bei der Benutzeranmeldung gelöscht.)
   /h[Arch] Eine der folgenden Treiberarchitekturen: x86, x64 oder Itanium.
   /ia Installiert Druckertreiber mithilfe einer INF-Datei.
   /id Installiert Druckertreiber mithilfe des Assistenten.
   /if Installiert Drucker mithilfe der angegebenen INF-Datei.
   /ii Installiert Drucker mithilfe des Assistenten und einer INF-Datei.
   /il Installiert Drucker mithilfe des Assistenten.
   /im Installiert Drucker mithilfe des Assistenten und überspringt dabei Drucker im Netzwerk.
   /in Fügt eine Netzwerkdruckerverbindung hinzu.
   /ip Installiert Drucker mithilfe des Netzwerkdruckerinstallations-Assistenten.
   /j[Anbieter] Der Name des Druckanbieters.
   /k Druckt eine Testseite auf dem angegebenen Drucker. Bei der Druckerinstallation nicht verwendbar.
   /l[Pfad] Der Quellpfad des Druckertreibers.
   /m[Modell] Der Modellname des Druckertreibers.
   /n[Name] Der Name des Druckers.
   /o Zeigt die Druckerwarteschlange an.
   /p Zeigt die Druckereigenschaften an.
   /q Stiller Modus. Fehlermeldungen werden nicht angezeigt.
   /r[Port] Der Portname.
   /s Zeigt die Servereigenschaften an.
   /Ss Speichert die Druckereinstellungen in einer Datei.
   /Sr Stellt die Druckereinstellungen aus einer Datei wieder her.
Speichert Optionsflags für Druckereinstellungen oder stellt sie wieder her. Die Flags müssen am Ende des Befehls stehen:
 2 PRINTER_INFO_2
 7 PRINTER_INFO_7
 c Farbprofil
 d Druckerdaten
 s Sicherheitsbeschreibung
 g DevMode (global)
 m Minimale Einstellungen
 u DevMode (Benutzer)
 r Namenskonflikte auflösen
 f Name erzwingen
 p Port auflösen
 i Treibernamenskonflikt
   /u Verwendet den vorhandenen Druckertreiber (sofern installiert).
   /t[#] Nullbasierte Indexseite zum Starten
   /v[Version] Eine der folgenden Treiberversionen: Typ 2 - Kernelmodus oder Typ 3 - Benutzermodus.
   /w Fordert vom Benutzer einen Treiber an, wenn der angegebene Treiber nicht in der INF-Datei gefunden wird.
   /y Richtet den Drucker als Standarddrucker ein.
   /Xg Ermittelt die Druckereinstellungen.
   /Xs Legt die Druckereinstellungen fest.
   /z Verhindert die automatische Freigabe des Druckers.
   /Y Erstellt den Druckernamen nicht automatisch.
   /K Ändert die Bedeutung von "/h", damit 2, 3 oder 4 für x86, x64 bzw. Itanium akzeptiert wird, und von "/v", damit 3 für "Typ 3 - Benutzermodus" akzeptiert wird.
   /Z Gibt diesen Drucker frei. Die Verwendung ist nur mit der Option "/if" möglich.
   /? Zeigt diese Hilfemeldung an.
   @[Datei] Die Befehlszeilenargumentdatei.
   /Mw[Meldung] Zeigt vor der Ausführung des Befehls eine Warnung an.
   /Mq[Meldung] Zeigt vor der Ausführung des Befehls eine Bestätigungsmeldung an.
   /W[Flags] Gibt die Flags und Switches für die Assistenten an (für APW und APDW)
	r	Sorgt dafür, dass der Assistent auf der letzten Seite neu gestartet werden kann.
   /G[Flags] Gibt die globalen Flags und Switches an.
	w	Unterdrückt Warnungen zur Treibereinrichtung auf der Benutzeroberfläche (besonders stiller Modus).
   /R Erzwingt die Ersetzung des vorhandenen Treibers durch den ausgewählten Treiber.
Beispiele:
   Startet die Servereigenschaften: 
rundll32 printui.dll,PrintUIEntry /s /t1 /c\\Computer
   Startet die Druckereigenschaften: 
rundll32 printui.dll,PrintUIEntry /p /n\\Computer\Drucker
   Startet den Druckerinstallations-Assistent lokal: 
rundll32 printui.dll,PrintUIEntry /il 
   Druckerinstallations-Assistenten auf \\machine ausführen: 
rundll32 printui.dll,PrintUIEntry /im /c\\machine
   Startet die Warteschlangenansicht: 
rundll32 printui.dll,PrintUIEntry /o /n\\Computer\Drucker
   INF-Installation ausführen: 
rundll32 printui.dll,PrintUIEntry /if /b "Testdrucker" /f c:\infpath\infFile.inf /r "lpt1:" /m "Brother DCP-128C"
   Installation einer INF-Datei (mit INF-Abhängigkeit) ausführen; im Beispiel hängt "prnbr002.inf" von "ntprint.inf" ab.
rundll32 printui.dll, PrintUIEntry /ia /m "Brother DCP-128C" /K /h x64 /v 3 /f "c:\infpath\prnbr002.inf" /F "c:\infpath\ntprint.inf"
   Druckerinstallations-Assistenten mithilfe einer INF-Datei ausführen: 
rundll32 printui.dll,PrintUIEntry /ii /f c:\infpath\infFile.inf
   Einen Drucker mithilfe eines mitgelieferten Treibers hinzufügen: 
rundll32 printui.dll,PrintUIEntry /if /b "Testdrucker" /r "lpt1:" /m "Brother DCP-128C"
   Fügt eine Druckerverbindung pro Computer hinzu: (Die Verbindung wird Benutzern bei der Anmeldung zur Verfügung gestellt.)
rundll32 printui.dll,PrintUIEntry /ga /c\\Computer /n\\Computer\Drucker /j"LanMan-Druckdienste"
   Löscht die Druckerverbindung pro Maschine: (Die Verbindung wird bei der Benutzeranmeldung gelöscht.) 
rundll32 printui.dll,PrintUIEntry /gd /c\\Computer /n\\Computer\Drucker
   Zählt die Druckerverbindungen pro Maschine auf: 
rundll32 printui.dll,PrintUIEntry /ge /c\\Computer
   Druckertreiber mithilfe einer INF-Datei hinzufügen: 
rundll32 printui.dll,PrintUIEntry /ia /c\\machine /m "Brother DCP-128C" /h "x86" /v "Typ 3 - Benutzermodus" /f c:\infpath\infFile.inf
   Druckertreiber mithilfe einer INF-Datei hinzufügen: 
rundll32 printui.dll,PrintUIEntry /ia /K /c\\machine /m "Brother DCP-128C" /h "x86" /v 3
   Mitgelieferten Druckertreiber hinzufügen: 
rundll32 printui.dll,PrintUIEntry /ia /c\\machine /m "Brother DCP-128C" /h "Intel" /v "Typ 3 - Kernelmodus"
   Druckertreiber entfernen: 
rundll32 printui.dll,PrintUIEntry /dd /c\\machine /m "Brother DCP-128C" /h "x86" /v "Typ 3 - Benutzermodus"
   Druckertreiber entfernen: 
rundll32 printui.dll,PrintUIEntry /dd /K /c\\machine /m "Brother DCP-128C" /h "x86" /v 3
   Richtet den Drucker als Standarddrucker ein: 
rundll32 printui.dll,PrintUIEntry /y /n "Drucker"
   Richtet einen Kommentar zum Drucker ein: 
rundll32 printui.dll,PrintUIEntry /Xs /n "Drucker" Comment "Mein cooler Drucker"
   Liest die Druckereinstellungen:
rundll32 printui.dll,PrintUIEntry /Xg /n "Drucker"
   Schreibt die Druckereinstellungsergebnisse in eine Datei: 
rundll32 printui.dll,PrintUIEntry /f "Ergebnisse.txt" /Xg /n Drucker"
   Befehlssyntax für das Einrichten der Druckereinstellungen: 
rundll32 printui.dll,PrintUIEntry /Xs /n "Drucker" ?
   Speichert alle Druckereinstellungen in einer Datei: 
rundll32 printui.dll,PrintUIEntry /Ss /n "Drucker" /a "Datei.dat"
   Stellt alle Druckereinstellungen aus einer Datei wieder her: 
rundll32 printui.dll,PrintUIEntry /Sr /n "Drucker" /a "Datei.dat"
   Speichert Level-2-Druckerinformationen in einer Datei: 
rundll32 printui.dll,PrintUIEntry /Ss /n "Drucker" /a "Datei.dat" 2
   Stellt aus einer Datei die Druckersicherheitsbeschreibung wieder her: 
rundll32 printui.dll,PrintUIEntry /Sr /n "Drucker" /a "Datei.dat" s
   Stellt aus einer Datei die globalen Devmode- und Druckerdaten wieder her: 
rundll32 printui.dll,PrintUIEntry /Sr /n "Drucker" /a "Datei.dat" g d
   Stellt aus einer Datei die minimalen Einstellungen wieder her und löst den Anschlussnamen auf: 
rundll32 printui.dll,PrintUIEntry /Sr /n "Drucker" /a "Datei.dat" m p
   Clientseitige Druckaufbereitung für einen Drucker aktivieren: 
rundll32 printui.dll,PrintUIEntry /Xs /n "Drucker" ClientSideRender enabled
   Clientseitige Druckaufbereitung für einen Drucker deaktivieren:
rundll32 printui.dll,PrintUIEntry /Xs /n "Drucker" ClientSideRender disabled.

rundll32

Lädt und führt DLLs (Dynamic Link Libraries) mit der Größe von 32 Bit aus. Es gibt keine konfigurierbaren Einstellungen für Rundll32. Hilfeinformationen werden für eine bestimmte DLL bereitgestellt, die mit dem Befehl rundll32 ausgeführt werden.

Der Befehl rundll32 muss in einer Eingabeaufforderung mit erhöhten Rechten ausgeführt werden. Klicke zum Öffnen einer Eingabeaufforderung mit erhöhten Rechten auf Start, klicke mit der rechten Maustaste auf Eingabeaufforderung, und klicke dann auf Als Administrator ausführen.

Fazit

In diesem Tutorial wird erläutert, wie Windows Druckereinstellungen für die automatisierung mit rundll32 printui.dll,PrintUIEntry vorgenommen werden können. printui.dll ist eine ausführbare Datei die Funktionen enthält, diese von den Dialogfeldern für die Druckereinstellungen verwendet werden. Diese Funktionen können interaktiv über die Eingabeaufforderung aufgerufen werden. rundll32 printui.dll kann auch aus Befehlszeilen-Batchdatei heraus aufgerufen werden.

Druckerverbindung kann nicht hergestellt werden

Fehler bei Druckerverbindung herstellen: Druckerverbindung kann nicht hergestellt werden. Fehler bei Vorgang 0x00000006

Erscheint beim Netzwerkdrucker Hinzufügen der Fehler; Druckerverbindung kann nicht hergestellt werden, kann dieser Beitrag die Lösung sein.

PrintNightmare Drucker Probleme durch August-Update

Einer schwerwiegenden Sicherheitslücke im Print-Spooler von Windows (CVE-2021-1678) zugrunde liegend, veröffentlichte Microsoft ein Patch, der über den kumulative Update August verteilt wurde. Dieser für viele Anwender zu Problemen beim Drucken führt. Es kommt zum Fehler; Druckerverbindung kann nicht hergestellt werden.

Mit dem August Update wurde die Sicherheits­lücke geschlossen, indem die Installation von Drucker­treibern nun über standard­mäßig administrative Rechte erfordert. Wenn auf dem Server ein neuerer Treiber als auf dem Client vorhanden ist, wird versucht diesen beim Client zu aktualisieren, mit der Aufforderung ein Admin-Passwort einzugeben.

Faktisch bleibt eigentlich nur die Lösung, das Verhalten zurück­zusetzen, wieder in den Zustand wie vor dem August-Update.

Registry Ändert das Standardverhalten

Microsoft sieht dafür einen Eintrag in der Registry vor, es ist dies der Key Restrict­Driver­Installation­To­Administrators mit dem Wert 0, um Benutzern zu erlauben, Drucker­treiber zu installieren. Der Eintrag ist standard­mäßig nicht vorhanden. Per Gruppenrichtlinie für Point-and-Print-Einschränkungen oder per Script kann der Eintrag mit administrativen Rechte wie folgt hinzugefügt werden.

REG ADD "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" /v RestrictDriverInstallationToAdministrators /t REG_DWORD /d 0 /f

  Mit dieser Maßnahme entfällt der Schutz gegen Exploits von CVE-2021-1678. Microsoft empfiehlt diesen Schritt daher nur temporär, um Arbeits­unter­brechungen zu vermeiden.

Pfad zu Druckertreiber in Registry wiederherstellen

Mit Windows Drucker Freigaben auf Server, kann es vorkommen das beim Netzwerkdrucker Hinzufügen es beim Client zum Fehler kommt. Das ist dann der Fall wenn der Installations-Assistent den Druckertreiber im DriverStore des Systems nicht mehr findet. Es ist vorgesehen das der Assistent den Verzeichnispfad zum Druckertreiber in der Registry aus dem Key InfPath ausliest.

HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Drivers\Version-3
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Drivers\Version-3\

Nachdem nun der Pfad zum Druckertreiber nicht mehr gültig ist, muss der Pfad in der Registry des Servers gesucht werden, hier in diesem Beispiel ist es der Drucker Sharp MX-C401 PCL6, dieser den Pfad zum Druckertreiber mit der INF-Datei im Key InfPath speichert, der Pfad ist hier wie folgt:

C:\Windows\System32\DriverStore\FileRepository\sn0emdeu.inf_amd64_284362ba62125445\

Der Pfad wird im Key InfPath als Wert eingefügt, dieser vermutlich leer ist, dabei sind zur Änderung Adminrechte erforderlich, hierzu regedit.exe als Administrator ausführen, oder dem Benutzer vorübergehend erhöhte Rechte erteilen.

  Ist ein weiterer Drucker auf dem Client mit demselben Treiber vorhanden, kann dieser Wert von InfPath kopiert werden, und bei dem Drucker mit ungültigem Wert, oder bei dem der Wert leer ist, mit einem Doppelklick auf InfPath eingefügt werden.

Drucker manuell installieren

Nun am Client die administrative Freigabe print$ zum Printserver öffnen, dort die Druckertreiber des Servers liegen.

Beispiel: \\SERVER02\print$

Unter der Freigabe print$ befinden sich die Druckertreiber der installierten Drucker auf dem Printserver. In unserem Beispiel unter \\SERVER02\x64\PCC sind Druckertreiber für die 64 Bit Systemearchitektur.

Hier nach der passenden CAB-Archivdatei suchen, die denselben Treiber, also Dateiname aufweist, wie die Datei im RegistryKey InfPath, hier demzufolge sn0emdeu.inf.

\\SERVER02\print$\x64\PCC\sn0emdeu.inf_amd64_284362ba62125445.cab

Die zum Drucker passende komprimierte CAB-Archivdatei aus der Freigabe print$ mit 7-Zip entpacken, und die Dateien in den Pfad kopieren, dieser aus InfPath entnommen wird.

Das Verbinden und Hinzufügen von Netzwerkdrucker ist nun wieder wie gewohnt möglich.

  Eine ebenfalls einfache Lösung bietet sich an, im dem man einen neuen Drucker installiert über Drucker hinzufügen, dabei kann als Anschluss LPT1 gewählt werden, auch wenn LPT1 nicht existiert, es wird hierdurch bei der Installation der Pfad im Registrierungsschlüssel InfPath wieder korrekt eingetragen, so dass danach die Druckerverbindung zu Netzwerkdrucker wieder funktioniert, der zuvor installierte Drucker auf LPT1 kann mit Gerät entfernen wieder gelöscht werden.

Benutzer ohne Administratorberechtigung

Mit dem Windows Update KB5005652, dieser am 10. August 2021 veröffentlicht wurde, werden standardmäßig Administratorrechte erforderlich, um Treiber installieren zu können. Diese Änderung wurde zum Standardverhalten gemacht, um das Risiko auf allen Windows-Geräten zu minimieren. Weitere Informationen zum Ändern des Standardverhaltens findent man unter dem Beitrag hier.