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:
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

Terminalserver 2016 (RDS): PDF-Dateien können nicht mit dem Adobe Reader DC geöffnet oder gedruckt werden

Problem:
Nach der Installation des Adobe Readers DC auf einem Terminalserver 2016 konnten die PDFs aus dem eigenen TEMP-Ordner geöffnet werden. Mein erster Verdacht waren die neuen VHD-Profiles.

Lösung:
Des Rätsels Lösung war ganz einfach. Es ist der "Geschütze Modus" (Potected Mode) des Adobe Readers. Scheinbar macht das schon immer Probleme auf einem Terminalserver. Man kann die Funktion testweise bei einem Benutzer mal auscahlten:
- Wählen Sie Bearbeiten > Voreinstellungen.
- Wählen Sie auf der linken Seite unter Kategorien die Option Sicherheit (erweitert).
- Deaktivieren Sie im Abschnitt Sandbox-Schutz die Option Geschützten Modus beim Start aktivieren.

Um das Problem für alle Benutzer zu lösen, kann man einen Registry-Key per GPP ausstreuen:
Keypath: HKLM\SOFTWARE\Wow6432Node\Policies\Adobe\Acrobat Reader\DC\FeatureLockDown
Value name: bProtectedMode
Value type: REG_DWORD
Value data: 0

Damit wird der "geschützte Modus" deaktiviert und das Öffnen und Drucken soltle problemlos funktionieren!

Quelle: FAQ-O-MATIC: Terminalserver: Den Protected Mode des Adobe Reader X abschalten

RDP: Wie setzt man eine RDP-Sitzung remote zurück (cmd - Session Reset)

Problem:
Ich hatte eine RDP-Session, die sich "verrannt" hat und ich konnte auch keinen weiteren Benutzer mehr anmelden.
Stattdessen lese ich folgende Meldung beim Anmeldebildschirm:
"Der angeforderte Vorgang konnte nicht ausgeführt werden, da die Remotedesktopdienste derzeit ausgelastet sind. Versuchen Sie es in einigen Minuten noch einmal. Andere Benutzer können sich normalerweise weiterhin anmelden."

Die Anmeldung mit einem anderen Benutzer ist ebenfalls nicht möglich.
Wie komme ich jetzt an den Server um die Session zurückzusetzen?

Lösung:
Man kann von einem anderen Server/Client aus die Session per Kommandozeile ermitteln und zurücksetzen.
WICHTIG: SIE BENÖTIGEN EINEN BENUTZER, DER ADMINISTRATOR-RECHTE AUF DEM BETROFFENEN SERVER HAT!

1.) Melden Sie sich mit dem administrativen Benutzer an einem anderen Server/Client an

2.) Führen Sie den Befehl "query session /server:" aus, wobei Sie für den Namen des betroffenen Servers eintragen.

3.) In der Ausgabe sollten sie die betroffene Session sehen - merken Sie sich die entsprechende SESSION-ID

5.) Nun setzen Sie die betroffene RDP-Sitzung mit folgendem Befehl zurück: "reset session >SESSION-ID> /server:"
Wobei die Session-ID und der Servername mit den jeweiligen richtigen Werten ersetzt werden müssen.

6.) FERTIG - Die Session wird nun zurückgesetzt - das kann einige Minuten dauern!

Sollte der Fehler häufiger auf Server 2008R2 auftreten, dann gibt es von Microsoft einen Hotfix.
Hier scheint es ein Problem zu geben zwischen dem Prozess csrss.exe und manchen Anwendungen.
Microsoft: KB2661332 - Sie können keine Remotedesktopdienste-Sitzung auf einem Windows Server 2008 R2-basierten Server wiederherstellen.

Quelle:
rodolfovaraujo: How to kill RDP sessions remotely

Server 2003: Event ID 9024 - A problem with Terminal Services functionality has been corrected nach Update KB2653956

Problem:
Nach der Installation des Updates KB2653956 hatten wir Probleme mit unseren Citrix XenApp Servern.
Es konnten nach einem Neustart keine Verbindungen über ICA und RDP hergestellt werden.
Bei Neustart des Servers erschien folgende Fehlermeldung:

"A problem with Terminal Services functionality has been corrected on the server running MetaFrame Presentation Server"

Nur ein mehrfacher Neustart hat das Problem behoben!

Lösung:
Nach einiger Suche bin ich in einem Citrix-Forum auf die Lösung gestoßen. Es gibt hierfür den Hotfix 958476 von Microsoft!

Zitat:
Known issues with the security update KB2653956

After you install this security update on a Windows Server 2003 SP2-based terminal server, Remote Desktop Protocol (RDP) clients or Independent Computing Architecture (ICA) clients may be unable to connect to the terminal server. To resolve this problem, *install hotfix 958476.*


Nach der Installation des Hotfixes ist das Problem nicht mehr aufgetreten!

Quelle:
Citrix Discussions: Event ID 9024 - A problem with Terminal Services functionality has been corrected on the server running MetaFrame Presentation Server.

Windows Sysprep: Sysprep-Fehlermeldung bei installierten Internet Explorer 10

Problem:
Man versucht ein neues Sysprep-Template für seine Server oder Workstation erstellen möchte. Man patcht das System auf den aktuellen Stand und integriert auch den Internet Explorer 10.
Doch man erhält nur die Fehlermeldung „Beim Erstellen des Systemabbildes ist ein schwerwiegender Fehler aufgetreten“.

Lösung:
Das Problem ist der Internet Explorer 10. Hier gibt es einen IE10-Sysprep-Bug, der noch nicht gefixt ist.
Also…neues Image OHNE IE10 und alles ist gut.

ACHTUNG: Es gibt einen Workaround für das Problem, jedoch würde ich das nicht in einem Produktiv-Template anwenden!

Quelle: https://www.lernschmiede.de/ie10-sysprepworkaround-ist-da/
“Sicher ist, dass nichts sicher ist. Selbst das nicht.”
Joachim Ringelnatz