Terminalserver/RDS 2016: Falscher Standarddrucker bei manchen Anwendungen
Problem:
Wir haben seit längerem das Problem, dass auf Terminalserver basierend auf Server 2016 der Standarddrucker nicht korrekt gesetzt wird. Das passiert aktuell inicht bei allen Anwendungen sondrn nur bei älteren Applikationen. Nach etwas Recherche hat sich herausgestellt, dass sich beim Server 2016 bzgl. des Standarddruckers in der Registry etwas geändert hat und einige ältere Applikationen den neuen Pfad nicht abfragen bzw. mit einer alten Routine hier den Standarddrucker ermitteln.
Ursache:
Früher war der Standarddrucker hier gesetzt:
Neu seit Server 2016 ist es dieser Pfad, der sich immer wieder ändert:
Lösung:
Da wir die problematischen Anwendungen nicht selbst ändern konnten und der Hersteller das Problem nicht lösen wollte/konnte, mussten wir uns etwas einfallen lassen. Ich habe hierzu ein Skript gefunden, welches den Standarddrucker aus dem neuen Pfad ausliest und dann im alten Pfad setzt.
Folgendes habe ich dazu eingerichtet:
1.) Das Skirpt zum Auslesen und Setzen des Standarddruckers:
Ich habe dann die Applikation über eine Batch-Datei starten lassen und darin das VBS zusätzlich laufen lassen:
Quellen zur Lösung:
RemoteApp Default Printer Redirection Not Working in Server 2016
Default Printer not Mapped Properly within ICA Session
Wir haben seit längerem das Problem, dass auf Terminalserver basierend auf Server 2016 der Standarddrucker nicht korrekt gesetzt wird. Das passiert aktuell inicht bei allen Anwendungen sondrn nur bei älteren Applikationen. Nach etwas Recherche hat sich herausgestellt, dass sich beim Server 2016 bzgl. des Standarddruckers in der Registry etwas geändert hat und einige ältere Applikationen den neuen Pfad nicht abfragen bzw. mit einer alten Routine hier den Standarddrucker ermitteln.
Ursache:
Früher war der Standarddrucker hier gesetzt:
HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\Devices
Neu seit Server 2016 ist es dieser Pfad, der sich immer wieder ändert:
HKCU\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\SessionDefaultDevices\S-1-5-5-0-xxxxxxxxx
Lösung:
Da wir die problematischen Anwendungen nicht selbst ändern konnten und der Hersteller das Problem nicht lösen wollte/konnte, mussten wir uns etwas einfallen lassen. Ich habe hierzu ein Skript gefunden, welches den Standarddrucker aus dem neuen Pfad ausliest und dann im alten Pfad setzt.
Folgendes habe ich dazu eingerichtet:
1.) Das Skirpt zum Auslesen und Setzen des Standarddruckers:
Option Explicit On Error Resume Next Const HKCU = &H80000001 Dim strComputer, objReg, strOrigPath, strNewPath, arrKeys, strKey, strPrinter strComputer = "." Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _ strComputer & "\root\default:StdRegProv") strOrigPath = "Software\Microsoft\Windows NT\CurrentVersion\Windows\SessionDefaultDevices" strNewPath = "Software\Microsoft\Windows NT\CurrentVersion\Windows" objReg.EnumKey HKCU, strOrigPath, arrKeys For Each strKey In arrKeys objReg.GetStringValue HKCU, strOrigPath & "\" & strKey, "Device", strPrinter If strPrinter <> vbNull Then objReg.SetStringValue HKCU, strNewPath, "Device", strPrinter End If Next Set strComputer = Nothing Set objReg = Nothing Set strOrigPath = Nothing Set strNewPath = Nothing Set arrKeys = Nothing Set strKey = Nothing Set strPrinter = Nothing
Ich habe dann die Applikation über eine Batch-Datei starten lassen und darin das VBS zusätzlich laufen lassen:
REM Startskript für Applikation start \\server\freigabe\anwendung.exe REM Kurze Wartezeit um RDS-Session aufzubauen und Drucker zu mappen ping 127.0.0.1 -n 10 > nul REM Setzen des Default-Printers im Legacy Registrykey start \\server\freigabe\set_printer.vbs
Quellen zur Lösung:
RemoteApp Default Printer Redirection Not Working in Server 2016
Default Printer not Mapped Properly within ICA Session