Windows: Probleme beim RDP Wrapper lösen

Da es immer wieder Kommentare oder gar E-Mails zum Thema RDP Wrapper in Verbindung „geht nicht“ gibt, versuche ich mit diesem Beitrag eine Art zentrale Anlaufstelle (innerhalb dieses Blogs) dafür zu schaffen. Das bedeutet, wenn möglich soll der Beitrag weiter aktualisiert werden.

Zu Beginn ein wenig Historie und Hintergrund

Während RDP Wrapper beispielsweise unter Windows 7 lange Zeit ohne Updates auskam ist es bei Windows 10, aktuell allem voran bei 1809 leider ganz anders. Die Ursache ist dabei relativ einfach: Ändert Microsoft die „termsrv.dll“, das ist die Bibliothek die die Remotedesktopdienste realisiert, muss auch die „rdpwrap.ini“ des RDP Wrappers angepasst werden.

Zugegeben, leider kommen vom Macher des RDP Wrappers schon seit geraumer Zeit keine Updates mehr, daher nutzt es dann auch wenig wenn man die „update.bat“ ausführt, helfen tut dafür in der Regel die Community. Auf GitHub findet man unter Issues der Projektseite meist relativ schnell die notwendigen Änderungen, die man selbst per Hand einpflegen darf.

Als Alternative zum Aktualisieren der „rdpwrap.ini“ kann man ein Downgrade/Rollback der „termsrv.dll“ durchführen, damit der RDP Wrapper wieder läuft. Erwähnt wurde dies z.B. bereits hier:

Windows: Wenn RDP Wrapper nicht mehr funktioniert, ein Downgrade der termsrv.dll durchführen

Als auch in den Kommentaren zu

Windows Vista, 7, 8.x und 10 mit dem RDP Wrapper zum Terminalserver machen

Grundsätzlich muss man allerdings festhalten, das Microsoft jederzeit durch entsprechende Änderungen den RDP Wrapper (oder andere Lösungen dieser Art) unbrauchbar machen kann oder gar gänzlich diese „Option“ verbaut. Ferner stören sich zudem so manche Virenscanner am RDP Wrapper, das ist sogar verständlich, können solche Tools positiv wie negativ verwendet werden.

Zu Empfehlen vor dem Einspielen von Windows Updates, nicht nur wegen dem RDP Wrapper, ist ein Backup anzulegen oder z.B. in einer virtuellen Maschine zunächst zu prüfen, ob alles nach der Installation der Updates noch so läuft, wie es soll.

Das häufigste Problem lösen: Nach Windows Update funktioniert der RDP Wrapper nicht mehr, die „RDPconf.exe“ meldet „unsupported“.

I.d.R. habe ich fast ausschließlich mit Windows 7, 8 und 10 in der Pro-Edition zu tun, von daher kann ich zu den Home-Editionen nicht allzuviel beitragen. Ferner sind die allermeisten Systeme mit 64-bit-Windows bestückt, 32-bit wäre damit ebenfalls quasi raus. Ferner verwende ich keine Test- oder Vorabversionen von zukünftigen Windows 10 Builds. Was den RDP Wrapper betrifft greife ich immer zur ZIP-Datei, die MSI habe ich noch nie verwendet (oder es ist solange her, das ich mich nicht mehr daran erinnern kann).

Meldet die „RDPconf.exe“ bei „Listener state“ ein „[not supported]“ liegt das an einer Version der „termsrv.dll“ die bislang nicht unterstützt wird und folglich ein Update der „rdpwrap.ini“ notwendig ist.

„rdpwrap.ini“ aktualisieren

Die „rdpwrap.ini“ findet sich unter „C:\Program Files\RDP Wrapper“. Diese kann mit einem einfachen Text-Editor wie dem Windows-Bordmittel Notepad oder externen Tools wie z.B. Notepad++ editiert werden. Es werden erhöhte Rechte benötigt.

In der Regel müssen nur weitere Zeilen für die neu zu unterstützende „termsrv.dll“-Version am Ende der Datei hinzugefügt werden.

Wichtig: Ganz am Ende der „rdpwrap.ini“ muss eine Leerzeile sein! Andernfalls funktioniert es nicht (mehr).

Damit die Änderung direkt an der Datei vorgenommen werden kann, muss der Dienst „Remotedesktopdienste“ beendet sein. Gleiches gilt, wenn man die Datei ersetzen möchte.

Wichtig: Führt man diese Änderung bereits über eine RDP-Verbindung durch und es geht irgendetwas schief, sperrt man sich aus! Ein Plan B um z.B. mittels VNC, TeamViewer, PsExec oder direkt an der Konsole Zugriff zu haben ist also wärmstens zu empfehlen!

Anbei nun ein Beispiel von der Installation bis zum Updaten des RDP Wrappers:

System: Windows 10 Pro – 1809 – Build 17763.348
Die Version der „termsrv.dll“ lautet: 10.0.17763.292

Ist der RDP Wrapper noch nicht installiert, sieht die Ausgabe von „RDPconfig.exe“ so aus:

Nach dem Ausführen des „install.bat“ sieht es so aus (daran ändert auch das Ausführen der „update.bat“ nichts):

Das wäre soweit der klassische Fall, das eine „termsrv.dll“-Version nicht unterstützt wird. Für die angezeigte Version findet sich die Lösung unter

Add support for build 10.0.17763.292 #645

in der Antwort von RoosterIllusion und von ditchmagnet. Letzerer bietet sogar eine fertige „rdpwrap.ini“ zum Download an. Das Archiv entpacken, den Dienst „Remotedesktopdienste“ beenden, die Datei unter „C:\Program Files\RDP Wrapper“ ersetzen und den Dienst wieder starten.

Das Ergebnis von „RDPconf.exe“ nach diesem Eingriff sieht so aus:

Damit sind die grundsätzlichen Voraussetzungen für den (Weiter-)Betrieb des „Quasi-Terminalserver“ geschaffen.

Vergleich der original und der aktualisierten „rdpwrap.ini“

Mit Tools wie WinMerge lässt sich leicht ermitteln, was es für Differenzen zwischen zwei Dateien gibt. Nachfolgend als Screenshot der Vergleich zwischen Original (links) und Fälschung ähm Update (rechts):

Letztlich wurden für diese Version nur die folgenden Zeilen eingefügt:

[10.0.17763.292]
; Patch CEnforcementCore::GetInstanceOfTSLicense
LocalOnlyPatch.x86=1
LocalOnlyOffset.x86=AFAD4
LocalOnlyCode.x86=jmpshort
LocalOnlyPatch.x64=1
LocalOnlyOffset.x64=77A11
LocalOnlyCode.x64=jmpshort
; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled
SingleUserPatch.x86=1
SingleUserOffset.x86=4D665
SingleUserCode.x86=nop
SingleUserPatch.x64=1
SingleUserOffset.x64=1322C
SingleUserCode.x64=Zero
; Patch CDefPolicy::Query
DefPolicyPatch.x86=1
DefPolicyOffset.x86=4BE69
DefPolicyCode.x86=CDefPolicy_Query_eax_ecx
DefPolicyPatch.x64=1
DefPolicyOffset.x64=17F45
DefPolicyCode.x64=CDefPolicy_Query_eax_rcx
; Hook CSLQuery::Initialize
SLInitHook.x86=1
SLInitOffset.x86=5B18A
SLInitFunc.x86=New_CSLQuery_Initialize
SLInitHook.x64=1
SLInitOffset.x64=1ABFC
SLInitFunc.x64=New_CSLQuery_Initialize
[10.0.17763.292-SLInit]
bInitialized.x86 =CD798
bServerSku.x86 =CD79C
lMaxUserSessions.x86 =CD7A0
bAppServerAllowed.x86 =CD7A8
bRemoteConnAllowed.x86=CD7AC
bMultimonAllowed.x86 =CD7B0
ulMaxDebugSessions.x86=CD7B4
bFUSEnabled.x86 =CD7B8

bInitialized.x64 =ECAB0
bServerSku.x64 =ECAB4
lMaxUserSessions.x64 =ECAB8
bAppServerAllowed.x64 =ECAC0
bRemoteConnAllowed.x64=ECAC4
bMultimonAllowed.x64 =ECAC8
ulMaxDebugSessions.x64=ECACC
bFUSEnabled.x64 =ECAD0

Zugriffsrecht erteilen

Damit Nicht-Administratoren via Remotedesktop zugreifen dürfen, müssen diese Mitglied der Gruppe „Remotedesktopbenutzer“ sein. Es gibt mehrere Wege die Benutzer dieser Gruppe zuzuweisen:

Der Klassiker wäre:

Computerverwaltung - System - Lokale Benutzer und Gruppen - Gruppen

In der Eingabeaufforderung mit

net localgroup Remotedesktopbenutzer <Benutzername> /add

Weitere Probleme:

Firewall

RDP Wrapper richtet bei der Installation eine Regel in der Windows-Firewall ein, die den Zugriff zulässt. Verwendet man eine Firewall von einem Drittanbieter, so müssen dort ggf. die Ports 3389/tcp und 3389/udp freigegeben werden.

Nach der Deinstallation von RDP Wrapper funktioniert RDP überhaupt nicht mehr

Bei der Deinstallation wird RDP deaktiviert, man kann es ganz einfach wieder aktivieren.

Windows 10 Kuriositäten

Ob RDP aktiv ist oder nicht, sollte man einfach via Einstellungen oder Systemsteuerung klären können. Bei meinem Testsystem fiel mir folgendes auf:

Hinweis am Rande: RDP Wrapper ist installiert und funktioniert. Warum unter „Einstellungen – System – Remotedesktop“ allerdings Remotedesktop als „Aus“ angezeigt wird und unter „Systemsteuerung – System – Remoteeinstellungen“ als aktiviert bleibt offen.

Wenn man Hilfe benötigt

Grundsätzlich muss man folgende Angaben parat haben:

  • Windows-Version und -Edition, Beispiel: Windows 10 Pro – 1809, idealerweise mit Build-Nummer
  • Version der „termsrv.dll“ (kann via „RDPconf.exe“ ermittelt werden)
  • Status des RDP Wrapper (gemeint ist das was die „RDPconf.exe“ anzeigt)
  • Genaue Fehlerbeschreibung und zwar so, das man das Vorgehen reproduzieren kann! Einfach zu schreiben „geht ned“ hilft nicht.

Die erste Anlaufstelle bei Schwierigkeiten ist die „RDPconf.exe“, steht da schon ein „unsupported“, „not installed“, „stopped“, „not listening“ o.ä. ist das schonmal ungut. Als nächstes lohnt ein Blick auf die Issues-Seite des RDP Wrapper.

Update 11.04.2019

Neuer Monat, neue Windows Updates und (leider) Änderungen wegen RDP Wrapper nötig.

Bei Windows 7 kam nun ein von mir bislang noch nicht gesichteter Status „supported partially“ dazu. Die termsrv.dll-Version 6.1.7601.24402 wird teilweise unterstützt:

Soweit wie es getestet wurde klappt zumindest eine Anmeldung via RDP + Konsole. In diesem Fall wird noch die Ini-Datei die direkt vom RDP-Macher zur Verfügung gestellt wird (Stand: 2018-10-10) verwendet. Eine Aktualisierung findet sich hier, danach sollte es so aussehen:

Wie Windows 7 trifft es seit langem auch Windows 8.1 und Windows Server 2012 R2. Folgender Screenshot stammt von einem Windows Server 2012 R2:

Wie man sieht, wird die neue termsrv.dll in der Version 6.3.9600.19318 nicht unterstützt. Auf GitHub gibt es bereits Anfragen dazu (z.B. hier und hier). Für den Moment hilft nur ein Downgrade der termsrv.dll auf die Version vor dem Windows Update vom April 2019. Die aktuell notwendigen Änderung(en) finden sich hier in der Antwort von jirijanata.

Zu guterletzt kommt noch der Dauerbrenner Windows 10 1809. Auch hier für Version 10.0.17763.437 ein „not supported“. Es gibt auf GitHub ebenso mehrere offene Anfragen. Für den Moment hilft nur ein Downgrade der termserv.dll.

Die notwendige Aktualisierung findet sich hier in der Antwort von FZappatta bzw. direkt als Download unter

https://github.com/stascorp/rdpwrap/files/3062713/rdpwrap.zip

Nicht die Exe-Datei von yesidtaz (im Archiv „RDP 1.6.2.zip“ enthalten) verwenden!

Bei wem die zuerst verlinkte bzw. genannten Version für 10.0.17763.437 nicht funkioniert, kann die Versionen aus diesem Thread ausprobieren:

RDP Wrap not working on windows 10 build 10.0.17763.437 (1809) & 10.0.17134.706 (1803) #763

Der Vollständigkeit halber: Eine Deinstallation der Windows Updates nur wegen RDP Wrapper ist nicht notwendig bzw. zu empfehlen. Eine mögliche Lösung für die 32-bit Version unter Windows 10 1803 (termsrv.dll 10.0.17134.706) findet sich hier (ungetestet) und für 64-bit hier (ungetestet).

Kleine Update-Hilfe:

Mitunter klappt es nicht mit dem Aktualisieren der Ini-Datei und einem Dienstneustart, oft heisst es dann „not listening“, so das nur RDP Wrapper deinstallieren und neuinstallieren hilft. Beim Neuinstallieren ist dann allerdings zu beachten, das nur eine aktualisierte lokale ini-Datei verwendet werden soll.

Quasi als Zusammenfassung vom uninstall- und install-Skript kann man diese wenigen Zeilen als *.bat- oder *.cmd-Datei speichern und ausführen:

@echo off

rem uninstall

"%~dp0RDPWInst" -u

rem Short break

timeout /t 10

rem install with local ini

"%~dp0RDPWInst" -i

Wichtig: Dieses Skript zusammen mit einer aktualisierten Ini-Datei im gleichen Ordner speichern, in dem man zuvor den RDP Wrapper entpackt hat.

Update 24.05.2019

Kleiner Trick am Rande, um etwas schneller die *.ini-Datei aktualisieren zu können:

  • Mit erhöhten Rechten Notepad starten.
  • Die Datei
    C:\Programme\RDP Wrapper\rdpwrap.ini

    öffnen.

  • Den Inhalt der Datei aktualisieren und speichern.
  • Anschließend (ebenfalls mit erhöhten Rechten) folgenden Befehl ausführen:
    rdpwinst.exe -r

Weitere Quelle bzw. Version für Windows 10 1809 – 10.0.17763.437 hinzugefügt (s.o.).

Für Windows 10 1903 scheint es aktuell noch keine Lösung zu geben.

Für Windows 10 1903 (10.0.18362.53) gibt es ebenfalls eine Lösung:

win10 18362.53 #766

Die Antwort von sbzagorodin funktioniert zumindest mit Windows 10 1903 Pro 64-bit. Folgende Zeilen müssen hinzugefügt werden:

[10.0.18362.53]
LocalOnlyPatch.x64=1
LocalOnlyOffset.x64=82FB5
LocalOnlyCode.x64=jmpshort
SingleUserPatch.x64=1
SingleUserOffset.x64=0DCC9
SingleUserCode.x64=Zero
DefPolicyPatch.x64=1
DefPolicyOffset.x64=1FE15
DefPolicyCode.x64=CDefPolicy_Query_eax_rcx
SLInitHook.x64=1
SLInitOffset.x64=22DDC
SLInitFunc.x64=New_CSLQuery_Initialize

[10.0.18362.53-SLInit]
bInitialized.x64 =F6A8C
bServerSku.x64 =F6A90
lMaxUserSessions.x64 =F6A94
bAppServerAllowed.x64 =F6A9C
bRemoteConnAllowed.x64=F6AA0
bMultimonAllowed.x64 =F6AA4
ulMaxDebugSessions.x64=F6AA8
bFUSEnabled.x64 =F6AAC

Wie immer am Schluss die Leerzeile nicht vergessen 😉

11 Kommentare

  • Pingback: Windows Vista, 7, 8.x und 10 mit dem RDP Wrapper zum Terminalserver machen | Andys Blog – Linux & Windows

  • Pingback: Windows: Wenn RDP Wrapper nicht mehr funktioniert, ein Downgrade der termsrv.dll durchführen | Andys Blog – Linux & Windows

  • Wir haben hier ein Windows 10 Pro V1809 Build 17763.397. termserv.dll hat die Version 17763.292
    Nach der Installation von RDPWrap-v1.6.2 inklusive der erweiterten rdwrap.ini erscheint bei RDPConf in der Zeile Listener State: Listening [not supportet].
    Die RDP-Verbindung klappt, aber wir können keine zweite Session öffnen, die erste Session wird automatisch geschlossen.
    Gibt es schon Erfahrungen, wie dieses Problem zu beheben ist?
    Viele Grüße …

  • Ich hab‘ gerade mal auf meiner Testbüchse geschaut:

    Win 10 1809 Pro – Build 10.0.17763.379
    termserv.dll 10.0.177.63.292
    RDP Wrapper 1.6.2 bzw. (laut RDPConf) 1.5.0

    Alles fully supported und läuft (1x Anmeldung an der Konsole, 3x Anmeldungen via RDP, alles gleichzeitig)

    Evtl. hilft das:

    RDP Wrapper deinstallieren, die Dateien unter „C:\Program Files\RDP Wrapper“ entfernen, neu starten und dann nochmal von vorne versuchen.

    Ansonsten hier mal schauen:

    Please support for Windows 10 1809 – 10.0.17763.379

    Der Patch (von mir ungetestet) enthält eine Ini und eine termsrv.dll, laut Version und Prüfsumme die Gleiche wie sowieso installiert (zumindest bei mir).

    Ansonsten gibt hier noch weitere INIs und DLL (ebenfalls ungetestet):

    Github – infowayrs/INI-RDPWRAP

  • Nach einer neuen Installation sind alle Einträge grün. Aber der Konsolenbenutzer fliegt raus bei einer RDP-Anmeldung mit einem anderen Benutzernamen. Was könnte das noch sein?

  • Hallo Ronald,

    hab‘ ich selbst noch nicht gehabt, scheint aber bekannt zu sein. Auf die Schnelle fand sich das hier:

    https://github.com/stascorp/rdpwrap/issues/422

    Als workaround wird beschrieben, die Authentifizierung von „Network Level Authentication“ auf „GUI Authentication only“ oder „Default RDP Authentication“ zu ändern.

  • Hallo Andy,
    auch die beschriebenen Einstellungen haben nichts gebracht. Ich habe testweise die ini-Datei mal umbenannt – trotzdem sind nacheiner Neuinstallation alle Einträge grün. Aber weiterhin lässt der RDP-Server mit Win 10 pro keine zweite Verbindung zu, die lokale Session wird geschlossen.
    Ich habe einen Screenshot von RDPConfig: https://www.magentacloud.de/lnk/iCgqAfgi

    Hast du noch eine Idee?

  • Hallo Ronald,

    auf meiner „Test-Büchse“ (W10Pro 1809, aktueller Patchlevel) habe ich eine andere „Service state“/termsrv.dll-Version (10.0.17763.437) als bei dir im Screenshot und es läuft.
    Fehlen evtl. Windows Updates bzw. Upgrades?

    Kleiner Nachtrag:

    Wenn ich mir die beiden so durchlese, würde ich sagen, da geht’s noch um Windows 10 1803 mit Patchlevel von April/Mai 2018 (oder so):

    Fresh install doesn’t work on win 10.0.17134.1 Pro #486
    Add support for termsrv 10.0.17134.1 #456

    Von daher würde ich sagen, erstmal auf den aktuellen Stand bringen und dann nochmal testen.

  • Andy hat das Thema an anderer Stelle so eingeleitet:

    „Möchte man mehrere gleichzeitige Verbindungen zulassen, so muss man mit entsprechenden Tools entweder die Datei „termsrv.dll“ verändern, diese durch eine bereits gepatchte oder eine Server-Version ersetzen oder den RDP Wrapper verwenden.“

    Lange Zeit war der RDP-Wrapper die einfachste Lösung, weil man selbst nicht am Windows „operieren“ musste. Bis vor ca. einem Jahr. Aufgrund der aktuellen Schwierigkeiten (dem Virenscanner muss erst beigebracht werden, dass RDPWrapper sauber ist, RDPWrapper muss nach Windowsupdates wieder zum Laufen gebracht werden, Tipps in verschiedener Richtung wg. Anpassung der ini bzw. Downgrade der termsvr) ist m.E. RDP Wrapper nicht mehr brauchbar – der Austausch der termsvr.dll ist die bessere Lösung.

    Nachdem wohl das Aprilupdate wieder dazu geführt hat, dass keine gleichzeitige Verbindung mehr möglich war, habe ich erst einen halben Tag mit RDPWrapper experimentiert, Tipps aus dem halben Internet befolgt und bestimmt 5 verschiedene inis ausprobiert – ohne Erfolg.

    Dann habe ich RDPWrapper deinstalliert und (wie früher) den Austausch der aktuellen termsvr.dll durch eine gepachtete termsvr.dll (gleicher Version) duchgeführt und es lief wieder.

    Die Patches gibt es hier („Option1“), dto. eine (englische) Anleitung:
    https://www.mysysadmintips.com/windows/clients/545-multiple-rdp-remote-desktop-sessions-in-windows-10

  • Immer die termsrv.dll „downzugraden“ lässt mitunter Fehler oder gar Sicherheitslücken weiter bestehen.
    Aktuelles Fallbeispiel dürften wohl die Mai’19 Patches sein, da bei RDP eine Lücke geschlossen wird.
    Siehe auch:
    heise – Security – Patchday für Windows: Kritische Lücke in Fernwartungsfunktion

  • o.k. – die hier von Andy genannte Lücke betrifft zwar ausdrücklich Windows10 nicht.

    Aber das ist schon ein Argument für RDP-Wrapper, da die gepatchten termsvr.dll wohl nicht zwangsläufig die aktuellen sind (sondern die ursprünglichen des jeweiligen Funktionsupdates). Das Ersetzen der termsvr.dll war bisher aber eigentlich nur dann notwendig, wenn ein neues Funktionsupdate kam, sollte also im Normalfall aktuell sein.

    Wenn RDP-Wrapper wieder ohne Kunstgriffe funktioniert, benutze ich es gerne wieder. Derzeit kriege ich es leider nicht zum laufen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.