Für die Nutzer eines Terminalservers soll natürlich auch ein Standarddrucker definiert werden, z. B. wie in diesem Artikel näher beleuchtet. Ärgerlich, wenn dann bei jeder Anmeldung eines Benutzers der Standard-Drucker wieder verschwindet und sich verstellt. Hierzu gibt es zum Glück die Registry-Einstellung „RemovePrintersAtLogoff“.
Problem
Der Nutzer oder die IT hat einen Standarddrucker festgelegt. Aber nach dem Ab- und wieder Anmelden am Terminalserver ist der Standarddrucker wieder weg. Bei einem Windows Server 2019 springt dieser dann laut meiner Beobachtung auf den integrierten PDF-Drucker „Microsoft Print to PDF“ um. Der Drucker muss dann von dem Benutzer selbständig wieder geändert werden.
Ursache
Vermutlich liegt es daran, dass die Drucker bei der Initialisierung nach der Anmeldung zu lange brauchen bis sie wieder verfügbar sind. Man kann dies ganz gut beobachten. Hierzu muss man sich nur am Terminalserver anmelden und direkt die „Geräte & Drucker“-Übersicht öffnen. Dort kann man dann wunderbar sehen, wie sich die verfügbaren Drucker nach und nach erst in der Auflistung zeigen.
Während des Setzens des Standarddruckers können diese also gar nicht gefunden werden und deshalb wird zwangsläufig ein anderer genommen. Der Prozess für das Auswahlverfahren wartet hier leider nicht bis der eigentlich eingestellte Standarddrucker endlich verfügbar ist.
Lösung
Damit das nicht mehr passiert muss man das Trennen der Verbindungen zu den Druckern beim Abmelden vom Terminalserver unterbinden. Die einzige Möglichkeit, die ich dafür gefunden habe, ist ein Eingriff in die Registry auf dem Terminalserver.
Unter dem Pfad „HKLM\Software\Microsoft\Windows NT\CurrentVersion\Print\Providers\Client Side Rendering Print Provider“ muss man einen DWORD-Eintrag mit dem Namen „RemovePrintersAtLogoff“ und dem Wert „0“ erstellen:
Danach ist mir diese Problematik nicht mehr untergekommen. Man kann dann außerdem schön beobachten, dass die Drucker noch unter „Geräte & Drucker“ stehen, wenn man sich neu am Server anmeldet und sofort dorthin navigiert.
Alternativ bleiben einem nur recht aufwendige Anpassungen, wie beispielsweise ein Login-Skript. Hier ergibt sich allerdings das Problem, dass eine Änderung des Standarddruckers durch den Benutzer nicht mehr von Dauer ist. Beim nächsten Anmeldevorgang wird dieser wieder auf den durch die IT vorgegebenen Standarddrucker geändert. Sollte dies kein Problem sein reicht folgender Eintrag im Login-Skript:
1 |
rundll32 printui.dll,PrintUIEntry /in /n /y \\SCHEISS-SERVER\SCHEISS-DRUCKER |
Reconnect statt Abmelden?
Wenn die Benutzer immer noch von dieser Problematik berichten, dann sollte man sich unbedingt mal ansehen wie genau sich diese vom Terminalserver „abmelden“. Denn dann zeigt sich, dass diese oftmals einfach nur das Remotedesktop-Fenster schließen und die eigentliche Sitzung offen bleibt. Hierbei entsteht dann bei einem Reconnect wieder die gleiche Problematik, zumindest bei durchgeschliffenen Druckern vom lokalen Arbeitsrechner. Denn die Drucker stehen dann wieder einen Moment nicht zur Verfügung. Hiergegen hilft anscheinend auch der Eintrag in der Registry nicht, da dieser ja nur für einen Logoff gilt. Eine richtige Lösung dafür habe ich bisher nicht gefunden. Denn leider gibt es wohl keine Möglichkeit ein Skript oder dergleichen bei einem Reconnect in eine bereits laufende Session auszuführen. Mit diesem könnte man das ganze wieder gerade biegen und den richtigen Drucker setzen. Aber stattdessen bleibt einem wohl nur die Benutzer zu schulen sich ordentlich vom Server abzumelden.
Der Pfad in dem Artikel ist fehlerhaft. Es sollte ein Leerzeichen zwischen \Windows NT\ sein.
Richtig wäre also:
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Providers\Client Side Rendering Print Provider
Hallo regedit,
hoppala. Danke für die Korrektur. Habe es im Artikel abgeändert.
Viele Grüße
Tobias