Compare commits
163 Commits
Author | SHA1 | Date |
---|---|---|
Kevin Smyth | a5c64a4331 | |
Stas'M | 326551985f | |
Stas'M | 2eef50f254 | |
Stas'M | dc3b07f1fe | |
Stas'M | 0c76513a27 | |
NULL | b3e1c77321 | |
Stas'M | 65b19543f4 | |
Stas'M | 9b2a50bfb8 | |
Stas'M | 2df3a74958 | |
Stas'M | 560c5a7b45 | |
1nd1g0 | 7dc8817de9 | |
Jim Yang | 56915ccf5b | |
Stanislav Motylkov | a3cd8ca630 | |
Stas'M | ba75e65dac | |
Stas'M | 5ad550638e | |
Stas'M | 63bf27f0a9 | |
Stas'M | 1459036d05 | |
Stas'M | 1223417ca1 | |
Stas'M | 180f41197a | |
Stas'M | 51b3421a65 | |
Stas'M | ebdd795d17 | |
Stas'M | 96fdc27be5 | |
Stas'M | 60eb9a6bc4 | |
Mark Yisri | 476e277ad3 | |
binarymaster | 8ace817d8d | |
binarymaster | 073c1282db | |
binarymaster | b50f2dec59 | |
binarymaster | 1c5b9c9e71 | |
binarymaster | 37d1872aa7 | |
binarymaster | 13fca00206 | |
binarymaster | 72f3d6ea07 | |
binarymaster | 8a3a20c6cb | |
binarymaster | 733ed36f70 | |
binarymaster | 3e7c0ebfd2 | |
binarymaster | 2ba5baa34f | |
Stas'M | dc9ff8910b | |
binarymaster | f26edcb6f8 | |
Alexander Georgievskiy | 7ef04f27c2 | |
binarymaster | 7b809a887d | |
binarymaster | f71684aa26 | |
Alexander Georgievskiy | f0e21b8802 | |
binarymaster | 49c9cbf379 | |
binarymaster | 85f2b39568 | |
binarymaster | 890006de99 | |
binarymaster | 8b2e24cecf | |
binarymaster | 49770e6bb8 | |
binarymaster | baddaab28e | |
Stas'M | ea1c0dd97d | |
Stas'M | 2ea06e79e7 | |
Stas'M | 4f85c52a45 | |
Stas'M | 51dd6cd440 | |
binarymaster | df2b23e2c0 | |
binarymaster | 7d31342dcf | |
binarymaster | fe3a61fa24 | |
binarymaster | ee1fa16bf5 | |
binarymaster | acaf2b2f72 | |
binarymaster | 1e93d3ca20 | |
binarymaster | 0f0fbeb71f | |
Stas'M | 9b666a3961 | |
binarymaster | 9699e08d1a | |
binarymaster | 5814e3fcf1 | |
binarymaster | 091a0b8e92 | |
binarymaster | 7412f7a732 | |
binarymaster | e1f1d7c123 | |
binarymaster | fe535fd34b | |
Stas'M | e9ad5e709f | |
binarymaster | e69261a495 | |
binarymaster | 3cb1ed5944 | |
binarymaster | 47830889eb | |
binarymaster | 0175a08fd1 | |
binarymaster | fe43b60f5c | |
binarymaster | 59a3a5b305 | |
binarymaster | ae54efba8e | |
binarymaster | 1bbeee751b | |
binarymaster | 73c2583a46 | |
binarymaster | 743b53ca16 | |
Stas'M | 4de59e9ff8 | |
cher-nov | 121f893c0c | |
binarymaster | 59b1924af9 | |
binarymaster | d556f4373f | |
binarymaster | a60c7f4351 | |
binarymaster | af6a3c7194 | |
binarymaster | 13c0932252 | |
binarymaster | ef2561fe79 | |
binarymaster | e45fde37c2 | |
Stas'M | 1254ac3b3b | |
Stas'M | 0e9385490b | |
binarymaster | 3edd0e5300 | |
binarymaster | 2d482b29be | |
binarymaster | 11be8c6833 | |
binarymaster | 64e0987053 | |
binarymaster | 558925a865 | |
binarymaster | 1395ea22bb | |
binarymaster | 92bc50b6db | |
binarymaster | f6b125331e | |
Stas'M | 87e6e00b1b | |
kbmorris | 533c3978a6 | |
binarymaster | cabb00fc78 | |
binarymaster | 078e5cd1cb | |
binarymaster | d19a8cf733 | |
binarymaster | bb6d905b8d | |
binarymaster | 53897b40c7 | |
Stas'M | d3de408f7e | |
Maximo Piva | 69f46c6caf | |
Stas'M | 89a03ccba9 | |
Chocobo1 | d02238218c | |
binarymaster | 37bcdd6414 | |
binarymaster | 6c58b69306 | |
binarymaster | a7d7972ca4 | |
binarymaster | fc58cf13c8 | |
binarymaster | 50e7459421 | |
binarymaster | 2c007fbb1d | |
binarymaster | ff3df89647 | |
binarymaster | 103a687689 | |
Stas'M | def243e15f | |
fig2k4 | 9c6a8f4914 | |
binarymaster | fdfbf0e1aa | |
binarymaster | 669c2bd20f | |
binarymaster | c881f80f60 | |
Stas'M | 2fe23a1b4f | |
fig2k4 | b0c471660b | |
binarymaster | b4a0fe1a7a | |
binarymaster | 741527eccd | |
binarymaster | 3d1f7c9e66 | |
binarymaster | 733e617a1f | |
binarymaster | 0c89dc564f | |
binarymaster | 00e4c3bf19 | |
binarymaster | eadebe921b | |
binarymaster | 5553d07206 | |
binarymaster | 216255b3b4 | |
binarymaster | e11b3c7354 | |
Stas'M | f534a1c8fc | |
WisdomWolf | d4d5111711 | |
WisdomWolf | 4bf2866b49 | |
WisdomWolf | 7c52a27ba5 | |
WisdomWolf | e6686b3b35 | |
WisdomWolf | 1f8e2b9e65 | |
binarymaster | 946bd7f8a6 | |
binarymaster | b9149eef02 | |
binarymaster | 80387dcc31 | |
binarymaster | 8ac3396165 | |
binarymaster | 8be10a125b | |
binarymaster | 7baa979752 | |
binarymaster | 425fc02fec | |
binarymaster | 659ba3dbcf | |
binarymaster | efe2872a26 | |
binarymaster | ca71d4ace4 | |
binarymaster | a42b740946 | |
binarymaster | fca45f61e7 | |
binarymaster | 5062ff6c75 | |
binarymaster | 9a7c501ca9 | |
binarymaster | adabe322c3 | |
binarymaster | eca971de03 | |
binarymaster | 6f23a18a24 | |
binarymaster | 09bfc748f4 | |
binarymaster | 97d0b92054 | |
binarymaster | 867c271cb3 | |
binarymaster | fd56533897 | |
binarymaster | 782dc346a9 | |
binarymaster | ca36e9f49f | |
binarymaster | 513a7a1ebf | |
binarymaster | 657ee646d5 | |
binarymaster | 5a37f663bc |
|
@ -0,0 +1,6 @@
|
||||||
|
# Auto detect text files and perform LF normalization
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
# Plain text (Windows)
|
||||||
|
*.txt diff=astextplain eol=crlf
|
||||||
|
*.ini diff=astextplain eol=crlf
|
|
@ -1,6 +1,17 @@
|
||||||
# Unnecessary files
|
# Delphi local files (user-specific info)
|
||||||
|
*.local
|
||||||
*.~pas
|
|
||||||
*.dproj.local
|
|
||||||
*.identcache
|
*.identcache
|
||||||
|
|
||||||
|
# Delphi history and backups
|
||||||
|
__history/
|
||||||
|
*.~*
|
||||||
|
|
||||||
|
# Compiled binaries
|
||||||
*.dcu
|
*.dcu
|
||||||
|
*.exe
|
||||||
|
*.dll
|
||||||
|
*.msi
|
||||||
|
|
||||||
|
# MSI local stuff
|
||||||
|
*.wixobj
|
||||||
|
*.wixpdb
|
||||||
|
|
669
README.md
669
README.md
|
@ -1,206 +1,463 @@
|
||||||
<b>RDP Wrapper Library by Stas'M</b><br>
|
# RDP Wrapper Library by Stas'M
|
||||||
<br>
|
|
||||||
The goal of this project is to enable Remote Desktop Host support and concurrent RDP sessions on reduced functionality systems for home usage.<br>
|
[![Telegram](https://img.shields.io/badge/chat-Telegram-blue.svg)](https://t.me/rdpwrap)
|
||||||
<br>
|
![Environment](https://img.shields.io/badge/Windows-Vista,%207,%208,%2010-brightgreen.svg)
|
||||||
RDP Wrapper works as a layer between Service Control Manager and Terminal Services, so the original termsrv.dll file remains untouched. Also this method is very strong against Windows Update.<br>
|
[![Release](https://img.shields.io/github/release/stascorp/rdpwrap.svg)](https://github.com/stascorp/rdpwrap/releases)
|
||||||
<br>
|
![License](https://img.shields.io/github/license/stascorp/rdpwrap.svg)
|
||||||
Screenshots:<br>
|
![Downloads](https://img.shields.io/github/downloads/stascorp/rdpwrap/latest/total.svg)
|
||||||
<div style="padding-top: 4px; width: 534px; white-space: nowrap; overflow: auto; overflow-y: hidden">
|
![TotalDownloads](https://img.shields.io/github/downloads/stascorp/rdpwrap/total.svg)
|
||||||
<a href="http://stascorp.com/images/rdpwrap/VistaST.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pVistaST.jpg"></a>
|
|
||||||
<a href="http://stascorp.com/images/rdpwrap/VistaHB.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pVistaHB.jpg"></a>
|
The goal of this project is to enable Remote Desktop Host support and concurrent RDP sessions on reduced functionality systems for home usage.
|
||||||
<a href="http://stascorp.com/images/rdpwrap/Win7ST.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin7ST.jpg"></a>
|
|
||||||
<a href="http://stascorp.com/images/rdpwrap/Win7HB.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin7HB.jpg"></a>
|
RDP Wrapper works as a layer between Service Control Manager and Terminal Services, so the original termsrv.dll file remains untouched. Also this method is very strong against Windows Update.
|
||||||
<a href="http://stascorp.com/images/rdpwrap/Win8DP.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin8DP.jpg"></a>
|
|
||||||
<a href="http://stascorp.com/images/rdpwrap/Win8CP.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin8CP.jpg"></a>
|
[pVistaST]: http://stascorp.com/images/rdpwrap/pVistaST.jpg
|
||||||
<a href="http://stascorp.com/images/rdpwrap/Win8RP.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin8RP.jpg"></a>
|
[pVistaHB]: http://stascorp.com/images/rdpwrap/pVistaHB.jpg
|
||||||
<a href="http://stascorp.com/images/rdpwrap/Win8.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin8.jpg"></a>
|
[pWin7ST]: http://stascorp.com/images/rdpwrap/pWin7ST.jpg
|
||||||
<a href="http://stascorp.com/images/rdpwrap/Win81P.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin81P.jpg"></a>
|
[pWin7HB]: http://stascorp.com/images/rdpwrap/pWin7HB.jpg
|
||||||
<a href="http://stascorp.com/images/rdpwrap/Win81.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin81.jpg"></a>
|
[pWin8DP]: http://stascorp.com/images/rdpwrap/pWin8DP.jpg
|
||||||
<a href="http://stascorp.com/images/rdpwrap/Win10TP.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin10TP.jpg"></a>
|
[pWin8CP]: http://stascorp.com/images/rdpwrap/pWin8CP.jpg
|
||||||
</div><br>
|
[pWin8RP]: http://stascorp.com/images/rdpwrap/pWin8RP.jpg
|
||||||
This solution was inspired by <a href="http://forums.mydigitallife.info/threads/39411-Windows-Product-Policy-Editor" target="_blank">Windows Product Policy Editor</a>, big thanks to <b>kost</b> :)<br>
|
[pWin8]: http://stascorp.com/images/rdpwrap/pWin8.jpg
|
||||||
- binarymaster<br>
|
[pWin81P]: http://stascorp.com/images/rdpwrap/pWin81P.jpg
|
||||||
<br>
|
[pWin81]: http://stascorp.com/images/rdpwrap/pWin81.jpg
|
||||||
Attention:<br>
|
[pWin10TP]: http://stascorp.com/images/rdpwrap/pWin10TP.jpg
|
||||||
It's recommended to have original termsrv.dll file with the RDP Wrapper installation. If you have modified it before with other patchers, it may become unstable and crash in any moment.<br>
|
[pWin10PTP]: http://stascorp.com/images/rdpwrap/pWin10PTP.jpg
|
||||||
<br>
|
[pWin10]: http://stascorp.com/images/rdpwrap/pWin10.jpg
|
||||||
Information:<br>
|
|
||||||
• Source code is available, so you can build it on your own<br>
|
[fVistaST]: http://stascorp.com/images/rdpwrap/VistaST.png
|
||||||
• RDP Wrapper does not patch termsrv.dll, it loads termsrv with different parameters<br>
|
[fVistaHB]: http://stascorp.com/images/rdpwrap/VistaHB.png
|
||||||
• RDPWInst and RDPChecker can be redistributed without development folder and batch files<br>
|
[fWin7ST]: http://stascorp.com/images/rdpwrap/Win7ST.png
|
||||||
• RDPWInst can be used for unattended installation / deployment<br>
|
[fWin7HB]: http://stascorp.com/images/rdpwrap/Win7HB.png
|
||||||
• Windows 2000, XP and Server 2003 will not be supported<br>
|
[fWin8DP]: http://stascorp.com/images/rdpwrap/Win8DP.png
|
||||||
<br>
|
[fWin8CP]: http://stascorp.com/images/rdpwrap/Win8CP.png
|
||||||
Porting to other platforms:<br>
|
[fWin8RP]: http://stascorp.com/images/rdpwrap/Win8RP.png
|
||||||
• <b>ARM</b> for Windows RT (see links below)<br>
|
[fWin8]: http://stascorp.com/images/rdpwrap/Win8.png
|
||||||
• <b>IA-64</b> for Itanium-based Windows Server? <i>Well, I have no idea</i> :)<br>
|
[fWin81P]: http://stascorp.com/images/rdpwrap/Win81P.png
|
||||||
<br>
|
[fWin81]: http://stascorp.com/images/rdpwrap/Win81.png
|
||||||
Building the binaries:<br>
|
[fWin10TP]: http://stascorp.com/images/rdpwrap/Win10TP.png
|
||||||
• <b>x86 Delphi version</b> can be built with <i>Embarcadero RAD Studio 2010</i><br>
|
[fWin10PTP]: http://stascorp.com/images/rdpwrap/Win10PTP.png
|
||||||
• <b>x86/x64 C++ version</b> can be built with <i>Microsoft Visual Studio 2013</i><br>
|
[fWin10]: http://stascorp.com/images/rdpwrap/Win10.png
|
||||||
<br>
|
|
||||||
<b>Links:</b><br>
|
| NT Version | Screenshots |
|
||||||
• Official GitHub repository:<br>
|
| ------------- | ----------- |
|
||||||
<a href="https://github.com/binarymaster/rdpwrap/" target="_blank">https://github.com/binarymaster/rdpwrap/</a><br>
|
| Windows Vista | [![Windows Vista Starter][pVistaST]][fVistaST] [![Windows Vista Home Basic][pVistaHB]][fVistaHB] |
|
||||||
• Active discussion in the comments here:<br>
|
| Windows 7 | [![Windows 7 Starter][pWin7ST]][fWin7ST] [![Windows 7 Home Basic][pWin7HB]][fWin7HB] |
|
||||||
<a href="http://andrewblock.net/2013/07/19/enable-remote-desktop-on-windows-8-core/" target="_blank" title="Enable remote desktop on Windows 8 core / basic">Enable remote desktop on Windows 8 core / basic - Andrew Block .net</a><br>
|
| Windows 8 | [![Windows 8 Developer Preview][pWin8DP]][fWin8DP] [![Windows 8 Consumer Preview][pWin8CP]][fWin8CP] [![Windows 8 Release Preview][pWin8RP]][fWin8RP] [![Windows 8][pWin8]][fWin8] |
|
||||||
• MDL Projects and Applications thread here:<br>
|
| Windows 8.1 | [![Windows 8.1 Preview][pWin81P]][fWin81P] [![Windows 8.1][pWin81]][fWin81] |
|
||||||
<a href="http://forums.mydigitallife.info/threads/55935-RDP-Wrapper-Library-(works-with-Windows-8-1-Basic)" target="_blank" title="Enable remote desktop on Windows 8 core / basic">RDP Wrapper Library (works with Windows 8.1 Basic)</a><br>
|
| Windows 10 | [![Windows 10 Technical Preview][pWin10TP]][fWin10TP] [![Windows 10 Pro Technical Preview][pWin10PTP]][fWin10PTP] [![Windows 10][pWin10]][fWin10] |
|
||||||
• Some ideas about porting to ARM for Windows RT (post #23):<br>
|
---
|
||||||
<a href="http://forum.xda-developers.com/showthread.php?t=2093525&page=3" target="_blank" title="Enable remote desktop on Windows 8 core / basic">[Q] Mod Windows RT to enable Remote Desktop</a><br>
|
[WinPPE]: http://forums.mydigitallife.info/threads/39411-Windows-Product-Policy-Editor
|
||||||
• Adding «Remote Desktop Users» group:<br>
|
|
||||||
<a href="http://superuser.com/questions/680572/" target="_blank">http://superuser.com/questions/680572/</a><br>
|
This solution was inspired by [Windows Product Policy Editor][WinPPE], big thanks to **kost** :)
|
||||||
<br>
|
|
||||||
Files description:<br>
|
— binarymaster
|
||||||
<br>
|
|
||||||
<table style="border-collapse: collapse; width: 100%; border: 1px solid black;" width="" align="">
|
### Attention:
|
||||||
<tbody>
|
It's recommended to have original termsrv.dll file with the RDP Wrapper installation. If you have modified it before with other patchers, it may become unstable and crash in any moment.
|
||||||
<tr><td style="border: 1px solid black;"><b>RDPWInst.exe</b></td><td style="border: 1px solid black;">RDP Wrapper Library installer/uninstaller</td></tr>
|
|
||||||
<tr><td style="border: 1px solid black;"><b>RDPCheck.exe</b></td><td style="border: 1px solid black;">Local RDP Checker (you can check the RDP is working)</td></tr>
|
### Information:
|
||||||
<tr><td style="border: 1px solid black;"><b>RDPConf.exe</b></td><td style="border: 1px solid black;">RDP Wrapper Configuration</td></tr>
|
- Source code is available, so you can build it on your own
|
||||||
<tr><td style="border: 1px solid black;"><b>install.bat</b></td><td style="border: 1px solid black;">Quick install batch file</td></tr>
|
- RDP Wrapper does not patch termsrv.dll, it loads termsrv with different parameters
|
||||||
<tr><td style="border: 1px solid black;"><b>uninstall.bat</b></td><td style="border: 1px solid black;">Quick uninstall batch file</td></tr>
|
- RDPWInst and RDPChecker can be redistributed without development folder and batch files
|
||||||
</tbody>
|
- RDPWInst can be used for unattended installation / deployment
|
||||||
</table><br>
|
- Windows 2000, XP and Server 2003 will not be supported
|
||||||
Change log:<br>
|
|
||||||
<br>
|
### Key features:
|
||||||
<b><u>2014.12.11</u></b><br>
|
- RDP host server on any Windows edition beginning from Vista
|
||||||
• Version 1.5<br>
|
- Console and remote sessions at the same time
|
||||||
• Added INI config support<br>
|
- Using the same user simultaneously for local and remote logon (see configuration app)
|
||||||
• Configuration is stored in INI file now<br>
|
- Up to [15 concurrent sessions](https://github.com/stascorp/rdpwrap/issues/192) (the actual limitation depends on your hardware and OS version)
|
||||||
• We can extend version support without building new binaries<br>
|
- Console and RDP session shadowing (using [Task Manager in Windows 7](http://cdn.freshdesk.com/data/helpdesk/attachments/production/1009641577/original/remote_control.png?1413476051) and lower, and [Remote Desktop Connection in Windows 8](http://woshub.com/rds-shadow-how-to-connect-to-a-user-session-in-windows-server-2012-r2/) and higher)
|
||||||
• Added support for Windows 8.1 with KB3000850<br>
|
- Full [multi-monitor support](https://github.com/stascorp/rdpwrap/issues/163) for RDP host
|
||||||
• Added support for Windows 10 Technical Preview Update 2<br>
|
- ...and if you find a new feature not listed here, [tell us](https://github.com/stascorp/rdpwrap/issues/new) ;)
|
||||||
• Installer updated<br>
|
|
||||||
• RDP Config updated<br>
|
### Porting to other platforms:
|
||||||
• Diagnostics feature added to RDP Config<br>
|
- **ARM** for Windows RT (see links below)
|
||||||
<br>
|
- **IA-64** for Itanium-based Windows Server? *Well, I have no idea* :)
|
||||||
<b><u>2014.11.14</u></b><br>
|
|
||||||
• Version 1.4<br>
|
### Building the binaries:
|
||||||
• Added support for Windows 10 Technical Preview Update 1<br>
|
- **x86 Delphi version** can be built with *Embarcadero RAD Studio 2010*
|
||||||
• Added support for Windows Vista SP2 with KB3003743<br>
|
- **x86/x64 C++ version** can be built with *Microsoft Visual Studio 2013*
|
||||||
• Added support for Windows 7 SP1 with KB3003743<br>
|
|
||||||
• Added new RDP Configuration Program<br>
|
[andrewblock]: http://web.archive.org/web/20150810054558/http://andrewblock.net/enable-remote-desktop-on-windows-8-core/
|
||||||
<br>
|
[mydigitallife]: http://forums.mydigitallife.info/threads/55935-RDP-Wrapper-Library-(works-with-Windows-8-1-Basic)
|
||||||
<b><u>2014.10.21</u></b><br>
|
[xda-dev]: http://forum.xda-developers.com/showthread.php?t=2093525&page=3
|
||||||
• Installer updated<br>
|
[yt-updating]: http://www.youtube.com/watch?v=W9BpbEt1yJw
|
||||||
• Added feature to install RDP Wrapper to System32 directory<br>
|
[yt-offsets]: http://www.youtube.com/watch?v=FiD86tmRBtk
|
||||||
• Fixed issue in the installer - NLA setting now remains unchanged<br>
|
|
||||||
• Local RDP Checker updated<br>
|
### Links:
|
||||||
• SecurityLayer and UserAuthentification values changed on check start<br>
|
- Official GitHub repository:
|
||||||
• RDP Checker restores values on exit<br>
|
<br>https://github.com/stascorp/rdpwrap/
|
||||||
<br>
|
- Official Telegram chat:
|
||||||
<b><u>2014.10.20</u></b><br>
|
<br>https://t.me/rdpwrap
|
||||||
• Version 1.3<br>
|
- Active discussion in the comments here:
|
||||||
• Added support for Windows 10 Technical Preview<br>
|
<br>[Enable remote desktop on Windows 8 core / basic - Andrew Block .net][andrewblock]
|
||||||
• Added support for Windows 7 with KB2984972<br>
|
- MDL Projects and Applications thread here:
|
||||||
• Added support for Windows 8 with KB2973501<br>
|
<br>[RDP Wrapper Library (works with Windows 8.1 Basic)][mydigitallife]
|
||||||
• Added extended support for Windows Vista (SP0, SP1 and SP2)<br>
|
- Some ideas about porting to ARM for Windows RT (post #23):
|
||||||
• Added extended support for Windows 7 (SP0 and SP1)<br>
|
<br>[\[Q\] Mod Windows RT to enable Remote Desktop][xda-dev]
|
||||||
• Some improvements in the source code<br>
|
- Adding «Remote Desktop Users» group:
|
||||||
• Installer updated to v2.2<br>
|
<br>http://superuser.com/questions/680572/
|
||||||
• Fixed installation bug in Vista x64 (wrong expand path)<br>
|
|
||||||
• Local RDP Checker updated<br>
|
#### Tutorial videos:
|
||||||
• Added description to error 0x708<br>
|
- [~~Updating RDP Wrapper INI file manually~~][yt-updating] (now use installer to update INI file)
|
||||||
<br>
|
- [How to find offsets for new termsrv.dll versions][yt-offsets]
|
||||||
<b><u>2014.07.26</u></b><br>
|
|
||||||
• Version 1.2<br>
|
### Files in release package:
|
||||||
• Added support for Windows 8 Developer Preview<br>
|
|
||||||
• Added support for Windows 8 Consumer Preview<br>
|
| File name | Description |
|
||||||
• Added support for Windows 8 Release Preview<br>
|
| --------- | ----------- |
|
||||||
• Added support for Windows 8.1 Preview<br>
|
| `RDPWInst.exe` | RDP Wrapper Library installer/uninstaller |
|
||||||
• Added support for Windows 8.1<br>
|
| `RDPCheck.exe` | Local RDP Checker (you can check the RDP is working) |
|
||||||
• More details you will see in the source code<br>
|
| `RDPConf.exe` | RDP Wrapper Configuration |
|
||||||
• Installer updated to v2.1<br>
|
| `install.bat` | Quick install batch file |
|
||||||
<br>
|
| `uninstall.bat` | Quick uninstall batch file |
|
||||||
<b><u>2013.12.09</u></b><br>
|
| `update.bat` | Quick update batch file |
|
||||||
• C++ port of RDP Wrapper was made by <b>Fusix</b><br>
|
|
||||||
• x64 architecture is supported now<br>
|
### Frequently Asked Questions
|
||||||
• Added new command line installer v2.0<br>
|
|
||||||
• Added local RDP checker<br>
|
> Where can I download the installer or binaries?
|
||||||
• Source code (C++ port, installer 2.0, local RDP checker) is also included<br>
|
|
||||||
<br>
|
In the [GitHub Releases](https://github.com/stascorp/rdpwrap/releases) section.
|
||||||
<b><u>2013.10.25</u></b><br>
|
|
||||||
• Version 1.1 source code is available<br>
|
> Is it legal to use this application?
|
||||||
<br>
|
|
||||||
<b><u>2013.10.22</u></b><br>
|
There is no definitive answer, see [this discussion](https://github.com/stascorp/rdpwrap/issues/26).
|
||||||
• Version 1.1<br>
|
|
||||||
• Stable release<br>
|
> The installer tries to access the Internet, is it normal behaviour?
|
||||||
• Improved wrapper (now it can wrap internal unexported termsrv.dll SL Policy function)<br>
|
|
||||||
• Added support for Windows 8 Single Language (tested on Acer Tablet PC with Intel Atom Z2760)<br>
|
Yes, it works in online mode by default. You may disable it by removing `-o` flag in the `install.bat` file.
|
||||||
<br>
|
|
||||||
<b><u>2013.10.19</u></b><br>
|
> What is online install mode?
|
||||||
• Version 1.0<br>
|
|
||||||
• First [beta] version<br>
|
Online install mode introduced in version 1.6.1. When you installing RDP Wrapper first time using this mode, it will download [latest INI file](https://github.com/stascorp/rdpwrap/blob/master/res/rdpwrap.ini) from GitHub. See [this discussion](https://github.com/stascorp/rdpwrap/issues/132).
|
||||||
• Basic SL Policy wrapper<br>
|
|
||||||
<br>
|
> What is INI file and why we need it?
|
||||||
<b>Supported Terminal Services versions:</b><br>
|
|
||||||
• <u>6.0.X.X</u> (Windows Vista / Server 2008)<br>
|
INI file was introduced in version 1.5. It stores system configuration for RDP Wrapper — general wrapping settings, binary patch codes, and per build specific data. When new `termsrv.dll` build comes out, developer adds support for it by updating INI file in repository.
|
||||||
• <u>6.0.6000.16386</u> (Windows Vista)<br>
|
|
||||||
• <u>6.0.6001.18000</u> (Windows Vista SP1)<br>
|
> Config Tool reports version 1.5, but I installed higher version. What's the matter?
|
||||||
• <u>6.0.6002.18005</u> (Windows Vista SP2)<br>
|
|
||||||
• <u>6.0.6002.19214</u> (Windows Vista SP2 with KB3003743 GDR)<br>
|
Beginning with version 1.5 the `rdpwrap.dll` is not updated anymore, since all settings are stored in INI file. Deal with it.
|
||||||
• <u>6.0.6002.23521</u> (Windows Vista SP2 with KB3003743 LDR)<br>
|
|
||||||
• <u>6.1.X.X</u> (Windows 7 / Server 2008 R2)<br>
|
> Config Tool shows `[not supported]` and RDP doesn't work. What can I do?
|
||||||
• <u>6.1.7600.16385</u> (Windows 7)<br>
|
|
||||||
• <u>6.1.7601.17514</u> (Windows 7 SP1)<br>
|
Make sure you're connected to the Internet and run `update.bat`.
|
||||||
• <u>6.1.7601.18540</u> (Windows 7 SP1 with KB2984972 GDR)<br>
|
|
||||||
• <u>6.1.7601.22750</u> (Windows 7 SP1 with KB2984972 LDR)<br>
|
> Update doesn't help, it still shows `[not supported]`.
|
||||||
• <u>6.1.7601.18637</u> (Windows 7 SP1 with KB3003743 GDR)<br>
|
|
||||||
• <u>6.1.7601.22843</u> (Windows 7 SP1 with KB3003743 LDR)<br>
|
Visit [issues](https://github.com/stascorp/rdpwrap/issues) section, and check whether your `termsrv.dll` build is listed here. If you can't find such issue, create a new — specify your build version for adding to support.
|
||||||
• <u>6.2.8102.0</u> (Windows 8 Developer Preview)<br>
|
|
||||||
• <u>6.2.8250.0</u> (Windows 8 Consumer Preview)<br>
|
> Why `RDPCheck` doesn't allow to change resolution and other settings?
|
||||||
• <u>6.2.8400.0</u> (Windows 8 Release Preview)<br>
|
|
||||||
• <u>6.2.9200.16384</u> (Windows 8 / Server 2012)<br>
|
`RDPCheck` is a very simple application and only for testing purposes. You need to use Microsoft Remote Desktop Client (`mstsc.exe`) if you want to customize the settings. You can use `127.0.0.1` or `127.0.0.2` address for loopback connection.
|
||||||
• <u>6.2.9200.17048</u> (Windows 8 with KB2973501 GDR)<br>
|
|
||||||
• <u>6.2.9200.21166</u> (Windows 8 with KB2973501 LDR)<br>
|
### Known issues:
|
||||||
• <u>6.3.9431.0</u> (Windows 8.1 Preview)<br>
|
- Beginning with Windows 8 **on tablet PCs** inactive sessions will be logged out by system - [more info](https://github.com/stascorp/rdpwrap/issues/37)
|
||||||
• <u>6.3.9600.16384</u> (Windows 8.1 / Server 2012 R2)<br>
|
- Beginning with Windows 10 you can accidentally lock yourself from PC - [more info](https://github.com/stascorp/rdpwrap/issues/50)
|
||||||
• <u>6.3.9600.17095</u> (Windows 8.1 with KB2959626)<br>
|
- Beginning with the Creators Update for Windows 10 Home, RDP Wrapper will no longer work, claiming that the listener is `[not listening]` because of `rfxvmt.dll` is missing - [more info](https://github.com/stascorp/rdpwrap/issues/194#issuecomment-323564111), [download links](https://github.com/stascorp/rdpwrap/issues/194#issuecomment-325627235)
|
||||||
• <u>6.3.9600.17415</u> (Windows 8.1 with KB3000850)<br>
|
- Terminal Service does not start after installing some updates or "Access Denied" issue - [#215](https://github.com/stascorp/rdpwrap/issues/215), [#101](https://github.com/stascorp/rdpwrap/issues/101)
|
||||||
• <u>6.4.9841.0</u> (Windows 10 Technical Preview)<br>
|
- RDP Wrapper does not work with RemoteFX enabled hosts - [#127](https://github.com/stascorp/rdpwrap/issues/127), [#208](https://github.com/stascorp/rdpwrap/issues/208), [#216](https://github.com/stascorp/rdpwrap/issues/216)
|
||||||
• <u>6.4.9860.0</u> (Windows 10 Technical Preview Update 1)<br>
|
- RDP works, but termsrv.dll crashes on logon attempt - Windows Vista Starter RTM x86 (termsrv.dll `6.0.6000.16386`)
|
||||||
• <u>6.4.9879.0</u> (Windows 10 Technical Preview Update 2)<br>
|
- If Terminal Services hangs at startup, try to add **`rdpwrap.dll`** to antivirus exclusions. Also try to isolate RDP Wrapper from other shared services by the command:
|
||||||
<br>
|
<br>`sc config TermService type= own`
|
||||||
<b>Confirmed working on:</b><br>
|
- RDP Wrapper can be removed by AVG Free Antivirus and [Norton Antivirus](https://github.com/stascorp/rdpwrap/issues/191) - first make sure you downloaded [official release](https://github.com/stascorp/rdpwrap/releases) from GitHub, then add it to exclusions.
|
||||||
• Windows Vista Starter (x86 - Service Pack 1 and higher)<br>
|
|
||||||
• Windows Vista Home Basic (x86 - Service Pack 1 and higher)<br>
|
---
|
||||||
• Windows Vista Home Premium (x86 - Service Pack 1 and higher)<br>
|
|
||||||
• Windows Vista Business (x86 - Service Pack 1 and higher)<br>
|
### Change log:
|
||||||
• Windows Vista Enterprise (x86 - Service Pack 1 and higher)<br>
|
|
||||||
• Windows Vista Ultimate (x86 - Service Pack 1 and higher)<br>
|
#### 2017.12.27
|
||||||
• Windows 7 Starter<br>
|
- Version 1.6.2
|
||||||
• Windows 7 Home Basic<br>
|
- Installer updated
|
||||||
• Windows 7 Home Premium<br>
|
- Include updated INI file for latest Windows builds
|
||||||
• Windows 7 Professional<br>
|
- Added check for supported Windows versions ([#155](https://github.com/stascorp/rdpwrap/issues/155))
|
||||||
• Windows 7 Enterprise<br>
|
- Added feature to take INI file from current directory ([#300](https://github.com/stascorp/rdpwrap/issues/300))
|
||||||
• Windows 7 Ultimate<br>
|
- Added feature to restore rfxvmt.dll (missing in Windows 10 Home [#194](https://github.com/stascorp/rdpwrap/issues/194))
|
||||||
• Windows 8 Developer Preview<br>
|
- RDP Config updated
|
||||||
• Windows 8 Consumer Preview<br>
|
- Added feature to allow custom start programs ([#13 (comment)](https://github.com/stascorp/rdpwrap/issues/13#issuecomment-77651843))
|
||||||
• Windows 8 Release Preview<br>
|
- MSI installation package added ([#14](https://github.com/stascorp/rdpwrap/issues/14))
|
||||||
• Windows 8<br>
|
|
||||||
• Windows 8 Single Language<br>
|
#### 2016.08.01
|
||||||
• Windows 8 Pro<br>
|
- Version 1.6.1
|
||||||
• Windows 8 Enterprise<br>
|
- Include updated INI file for latest Windows builds
|
||||||
• Windows 8.1 Preview<br>
|
- Installer updated
|
||||||
• Windows 8.1<br>
|
- Added online install mode
|
||||||
• Windows 8.1 Single Language<br>
|
- Added feature to keep settings on uninstall
|
||||||
• Windows 8.1 Pro<br>
|
- RDP Config updated
|
||||||
• Windows 8.1 Enterprise<br>
|
- Fixed update firewall rule on RDP port change
|
||||||
• Windows 10 Technical Preview<br>
|
- Added feature to hide users on logon
|
||||||
<br>
|
|
||||||
<b>Working partially:</b><br>
|
#### 2015.08.12
|
||||||
• Windows Vista Starter RTM x86 (termsrv.dll 6.0.6000.16386 : RDP works, but termsrv.dll crashes on logon attempt)<br>
|
- Version 1.6
|
||||||
<br>
|
- Added support for Windows 10
|
||||||
<u>Installation instructions:</u><br>
|
- INI file has smaller size now - all comments are moved to KB file
|
||||||
1. Download latest release binaries and unpack files<br>
|
- Installer updated
|
||||||
2. Run <b>Command Prompt (cmd)</b> as administrator<br>
|
- Added workaround for 1056 error (although it isn't an error)
|
||||||
3. Change directory to where you extracted the files<br>
|
- Added update support to installer
|
||||||
4. Type <b>install.bat</b> and press Enter<br>
|
- Newest RDPClip versions are included with installer
|
||||||
5. See command output for details<br>
|
- RDP Checker updated
|
||||||
<br>
|
- Changed connect IP to 127.0.0.2
|
||||||
<u>To uninstall:</u><br>
|
- Updated some text messages
|
||||||
1. Run <b>Command Prompt</b> as administrator<br>
|
- RDP Config updated
|
||||||
2. Change directory to where you extracted the files<br>
|
- Added all possible shadowing modes
|
||||||
3. Type <b>uninstall.bat</b> and press Enter<br>
|
- Also it will write settings to the group policy
|
||||||
4. See command output for details<br>
|
|
||||||
|
#### 2014.12.11
|
||||||
|
- Version 1.5
|
||||||
|
- Added INI config support
|
||||||
|
- Configuration is stored in INI file now
|
||||||
|
- We can extend version support without building new binaries
|
||||||
|
- Added support for Windows 8.1 with KB3000850
|
||||||
|
- Added support for Windows 10 Technical Preview Update 2
|
||||||
|
- Installer updated
|
||||||
|
- RDP Config updated
|
||||||
|
- Diagnostics feature added to RDP Config
|
||||||
|
|
||||||
|
#### 2014.11.14
|
||||||
|
- Version 1.4
|
||||||
|
- Added support for Windows 10 Technical Preview Update 1
|
||||||
|
- Added support for Windows Vista SP2 with KB3003743
|
||||||
|
- Added support for Windows 7 SP1 with KB3003743
|
||||||
|
- Added new RDP Configuration Program
|
||||||
|
|
||||||
|
#### 2014.10.21
|
||||||
|
- Installer updated
|
||||||
|
- Added feature to install RDP Wrapper to System32 directory
|
||||||
|
- Fixed issue in the installer - NLA setting now remains unchanged
|
||||||
|
- Local RDP Checker updated
|
||||||
|
- SecurityLayer and UserAuthentification values changed on check start
|
||||||
|
- RDP Checker restores values on exit
|
||||||
|
|
||||||
|
#### 2014.10.20
|
||||||
|
- Version 1.3
|
||||||
|
- Added support for Windows 10 Technical Preview
|
||||||
|
- Added support for Windows 7 with KB2984972
|
||||||
|
- Added support for Windows 8 with KB2973501
|
||||||
|
- Added extended support for Windows Vista (SP0, SP1 and SP2)
|
||||||
|
- Added extended support for Windows 7 (SP0 and SP1)
|
||||||
|
- Some improvements in the source code
|
||||||
|
- Installer updated to v2.2
|
||||||
|
- Fixed installation bug in Vista x64 (wrong expand path)
|
||||||
|
- Local RDP Checker updated
|
||||||
|
- Added description to error 0x708
|
||||||
|
|
||||||
|
#### 2014.07.26
|
||||||
|
- Version 1.2
|
||||||
|
- Added support for Windows 8 Developer Preview
|
||||||
|
- Added support for Windows 8 Consumer Preview
|
||||||
|
- Added support for Windows 8 Release Preview
|
||||||
|
- Added support for Windows 8.1 Preview
|
||||||
|
- Added support for Windows 8.1
|
||||||
|
- More details you will see in the source code
|
||||||
|
- Installer updated to v2.1
|
||||||
|
|
||||||
|
#### 2013.12.09
|
||||||
|
- C++ port of RDP Wrapper was made by Fusix
|
||||||
|
- x64 architecture is supported now
|
||||||
|
- Added new command line installer v2.0
|
||||||
|
- Added local RDP checker
|
||||||
|
- Source code (C++ port, installer 2.0, local RDP checker) is also included
|
||||||
|
|
||||||
|
#### 2013.10.25
|
||||||
|
- Version 1.1 source code is available
|
||||||
|
|
||||||
|
#### 2013.10.22
|
||||||
|
- Version 1.1
|
||||||
|
- Stable release
|
||||||
|
- Improved wrapper (now it can wrap internal unexported termsrv.dll SL Policy function)
|
||||||
|
- Added support for Windows 8 Single Language (tested on Acer Tablet PC with Intel Atom Z2760)
|
||||||
|
|
||||||
|
#### 2013.10.19
|
||||||
|
- Version 1.0
|
||||||
|
- First [beta] version
|
||||||
|
- Basic SL Policy wrapper
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### Supported Terminal Services versions:
|
||||||
|
- 6.0.X.X (Windows Vista / Server 2008)
|
||||||
|
- 6.0.6000.16386 (Windows Vista)
|
||||||
|
- 6.0.6001.18000 (Windows Vista SP1)
|
||||||
|
- 6.0.6002.18005 (Windows Vista SP2)
|
||||||
|
- 6.0.6002.19214 (Windows Vista SP2 with KB3003743 GDR)
|
||||||
|
- 6.0.6002.23521 (Windows Vista SP2 with KB3003743 LDR)
|
||||||
|
- 6.1.X.X (Windows 7 / Server 2008 R2)
|
||||||
|
- 6.1.7600.16385 (Windows 7)
|
||||||
|
- 6.1.7600.20890 (Windows 7 with KB2479710)
|
||||||
|
- 6.1.7600.21316 (Windows 7 with KB2750090)
|
||||||
|
- 6.1.7601.17514 (Windows 7 SP1)
|
||||||
|
- 6.1.7601.21650 (Windows 7 SP1 with KB2479710)
|
||||||
|
- 6.1.7601.21866 (Windows 7 SP1 with KB2647409)
|
||||||
|
- 6.1.7601.22104 (Windows 7 SP1 with KB2750090)
|
||||||
|
- 6.1.7601.18540 (Windows 7 SP1 with KB2984972 GDR)
|
||||||
|
- 6.1.7601.22750 (Windows 7 SP1 with KB2984972 LDR)
|
||||||
|
- 6.1.7601.18637 (Windows 7 SP1 with KB3003743 GDR)
|
||||||
|
- 6.1.7601.22843 (Windows 7 SP1 with KB3003743 LDR)
|
||||||
|
- 6.1.7601.23403 (Windows 7 SP1 with KB3125574)
|
||||||
|
- 6.1.7601.24234 (Windows 7 SP1 with KB4462923)
|
||||||
|
- 6.2.8102.0 (Windows 8 Developer Preview)
|
||||||
|
- 6.2.8250.0 (Windows 8 Consumer Preview)
|
||||||
|
- 6.2.8400.0 (Windows 8 Release Preview)
|
||||||
|
- 6.2.9200.16384 (Windows 8 / Server 2012)
|
||||||
|
- 6.2.9200.17048 (Windows 8 with KB2973501 GDR)
|
||||||
|
- 6.2.9200.21166 (Windows 8 with KB2973501 LDR)
|
||||||
|
- 6.3.9431.0 (Windows 8.1 Preview)
|
||||||
|
- 6.3.9600.16384 (Windows 8.1 / Server 2012 R2)
|
||||||
|
- 6.3.9600.17095 (Windows 8.1 with KB2959626)
|
||||||
|
- 6.3.9600.17415 (Windows 8.1 with KB3000850)
|
||||||
|
- 6.3.9600.18692 (Windows 8.1 with KB4022720)
|
||||||
|
- 6.3.9600.18708 (Windows 8.1 with KB4025335)
|
||||||
|
- 6.3.9600.18928 (Windows 8.1 with KB4088876)
|
||||||
|
- 6.3.9600.19093 (Windows 8.1 with KB4343891)
|
||||||
|
- 6.4.9841.0 (Windows 10 Technical Preview)
|
||||||
|
- 6.4.9860.0 (Windows 10 Technical Preview Update 1)
|
||||||
|
- 6.4.9879.0 (Windows 10 Technical Preview Update 2)
|
||||||
|
- 10.0.9926.0 (Windows 10 Pro Technical Preview)
|
||||||
|
- 10.0.10041.0 (Windows 10 Pro Technical Preview Update 1)
|
||||||
|
- 10.0.10240.16384 (Windows 10 RTM)
|
||||||
|
- 10.0.10586.0 (Windows 10 TH2 Release 151029-1700)
|
||||||
|
- 10.0.10586.589 (Windows 10 TH2 Release 160906-1759 with KB3185614)
|
||||||
|
- 10.0.11082.1000 (Windows 10 RS1 Release 151210-2021)
|
||||||
|
- 10.0.11102.1000 (Windows 10 RS1 Release 160113-1800)
|
||||||
|
- 10.0.14251.1000 (Windows 10 RS1 Release 160124-1059)
|
||||||
|
- 10.0.14271.1000 (Windows 10 RS1 Release 160218-2310)
|
||||||
|
- 10.0.14279.1000 (Windows 10 RS1 Release 160229-1700)
|
||||||
|
- 10.0.14295.1000 (Windows 10 RS1 Release 160318-1628)
|
||||||
|
- 10.0.14300.1000 (Windows Server 2016 Technical Preview 5)
|
||||||
|
- 10.0.14316.1000 (Windows 10 RS1 Release 160402-2227)
|
||||||
|
- 10.0.14328.1000 (Windows 10 RS1 Release 160418-1609)
|
||||||
|
- 10.0.14332.1001 (Windows 10 RS1 Release 160422-1940)
|
||||||
|
- 10.0.14342.1000 (Windows 10 RS1 Release 160506-1708)
|
||||||
|
- 10.0.14352.1002 (Windows 10 RS1 Release 160522-1930)
|
||||||
|
- 10.0.14366.0 (Windows 10 RS1 Release 160610-1700)
|
||||||
|
- 10.0.14367.0 (Windows 10 RS1 Release 160613-1700)
|
||||||
|
- 10.0.14372.0 (Windows 10 RS1 Release 160620-2342)
|
||||||
|
- 10.0.14379.0 (Windows 10 RS1 Release 160627-1607)
|
||||||
|
- 10.0.14383.0 (Windows 10 RS1 Release 160701-1839)
|
||||||
|
- 10.0.14385.0 (Windows 10 RS1 Release 160706-1700)
|
||||||
|
- 10.0.14388.0 (Windows 10 RS1 Release 160709-1635)
|
||||||
|
- 10.0.14393.0 (Windows 10 RS1 Release 160715-1616)
|
||||||
|
- 10.0.14393.1198 (Windows 10 RS1 Release Sec 170427-1353 with KB4019472)
|
||||||
|
- 10.0.14393.1737 (Windows 10 RS1 Release Inmarket 170914-1249 with KB4041691)
|
||||||
|
- 10.0.14393.2457 (Windows 10 RS1 Release Inmarket 180822-1743 with KB4343884)
|
||||||
|
- 10.0.14901.1000 (Windows 10 RS Pre-Release 160805-1700)
|
||||||
|
- 10.0.14905.1000 (Windows 10 RS Pre-Release 160811-1739)
|
||||||
|
- 10.0.14915.1000 (Windows 10 RS Pre-Release 160826-1902)
|
||||||
|
- 10.0.14926.1000 (Windows 10 RS Pre-Release 160910-1529)
|
||||||
|
- 10.0.14931.1000 (Windows 10 RS Pre-Release 160916-1700)
|
||||||
|
- 10.0.14936.1000 (Windows 10 RS Pre-Release 160923-1700)
|
||||||
|
- 10.0.14942.1000 (Windows 10 RS Pre-Release 161003-1929)
|
||||||
|
- 10.0.14946.1000 (Windows 10 RS Pre-Release 161007-1700)
|
||||||
|
- 10.0.14951.1000 (Windows 10 RS Pre-Release 161014-1700)
|
||||||
|
- 10.0.14955.1000 (Windows 10 RS Pre-Release 161020-1700)
|
||||||
|
- 10.0.14959.1000 (Windows 10 RS Pre-Release 161026-1700)
|
||||||
|
- 10.0.14965.1001 (Windows 10 RS Pre-Release 161104-1700)
|
||||||
|
- 10.0.14971.1000 (Windows 10 RS Pre-Release 161111-1700)
|
||||||
|
- 10.0.14986.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.14997.1001 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.15002.1001 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.15007.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.15014.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.15019.1000 (Windows 10 RS Pre-Release 170121-1513)
|
||||||
|
- 10.0.15025.1000 (Windows 10 RS Pre-Release 170127-1750)
|
||||||
|
- 10.0.15031.0 (Windows 10 RS2 Release 170204-1546)
|
||||||
|
- 10.0.15042.0 (Windows 10 RS2 Release 170219-2329)
|
||||||
|
- 10.0.15046.0 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.15048.0 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.15055.0 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.15058.0 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.15061.0 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.15063.0 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.15063.296 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.15063.994 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.15063.1155 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16179.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16184.1001 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16199.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16215.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16232.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16237.1001 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16241.1001 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16251.0 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16251.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16257.1 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16257.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16273.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16275.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16278.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16281.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16288.1 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16291.0 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16294.1 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16296.0 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16299.0 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16299.15 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16353.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.16362.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.17004.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.17017.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.17025.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.17035.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.17046.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.17063.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.17115.1 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.17128.1 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.17133.1 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.17134.1 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.17723.1000 (Windows 10 Build 160101.0800)
|
||||||
|
- 10.0.17763.1 (Windows 10 Build 160101.0800)
|
||||||
|
|
||||||
|
#### Confirmed working on:
|
||||||
|
- Windows Vista Starter (x86 - Service Pack 1 and higher)
|
||||||
|
- Windows Vista Home Basic
|
||||||
|
- Windows Vista Home Premium
|
||||||
|
- Windows Vista Business
|
||||||
|
- Windows Vista Enterprise
|
||||||
|
- Windows Vista Ultimate
|
||||||
|
- Windows Server 2008
|
||||||
|
- Windows 7 Starter
|
||||||
|
- Windows 7 Home Basic
|
||||||
|
- Windows 7 Home Premium
|
||||||
|
- Windows 7 Professional
|
||||||
|
- Windows 7 Enterprise
|
||||||
|
- Windows 7 Ultimate
|
||||||
|
- Windows Server 2008 R2
|
||||||
|
- Windows 8 Developer Preview
|
||||||
|
- Windows 8 Consumer Preview
|
||||||
|
- Windows 8 Release Preview
|
||||||
|
- Windows 8
|
||||||
|
- Windows 8 Single Language
|
||||||
|
- Windows 8 Pro
|
||||||
|
- Windows 8 Enterprise
|
||||||
|
- Windows Server 2012
|
||||||
|
- Windows 8.1 Preview
|
||||||
|
- Windows 8.1
|
||||||
|
- Windows 8.1 Connected (with Bing)
|
||||||
|
- Windows 8.1 Single Language
|
||||||
|
- Windows 8.1 Connected Single Language (with Bing)
|
||||||
|
- Windows 8.1 Pro
|
||||||
|
- Windows 8.1 Enterprise
|
||||||
|
- Windows Server 2012 R2
|
||||||
|
- Windows 10 Technical Preview
|
||||||
|
- Windows 10 Pro Technical Preview
|
||||||
|
- Windows 10 Home
|
||||||
|
- Windows 10 Home Single Language
|
||||||
|
- Windows 10 Pro
|
||||||
|
- Windows 10 Enterprise
|
||||||
|
- Windows Server 2016 Technical Preview
|
||||||
|
|
||||||
|
Installation instructions:
|
||||||
|
- Download latest release binaries and unpack files
|
||||||
|
- Right-click on **`install.bat`** and select Run as Administrator
|
||||||
|
- See command output for details
|
||||||
|
|
||||||
|
To update INI file:
|
||||||
|
- Right-click on **`update.bat`** and select Run as Administrator
|
||||||
|
- See command output for details
|
||||||
|
|
||||||
|
To uninstall:
|
||||||
|
- Go to the directory where you extracted the files
|
||||||
|
- Right-click on **`uninstall.bat`** and select Run as Administrator
|
||||||
|
- See command output for details
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
@echo off
|
||||||
|
if not exist "%~dp0RDPWInst.exe" goto :error
|
||||||
|
"%~dp0RDPWInst" -i -o
|
||||||
|
echo ______________________________________________________________
|
||||||
|
echo.
|
||||||
|
echo You can check RDP functionality with RDPCheck program.
|
||||||
|
echo Also you can configure advanced settings with RDPConf program.
|
||||||
|
echo.
|
||||||
|
goto :anykey
|
||||||
|
:error
|
||||||
|
echo [-] Installer executable not found.
|
||||||
|
echo Please extract all files from the downloaded package or check your anti-virus.
|
||||||
|
:anykey
|
||||||
|
pause
|
|
@ -0,0 +1,10 @@
|
||||||
|
@echo off
|
||||||
|
if not exist "%~dp0RDPWInst.exe" goto :error
|
||||||
|
"%~dp0RDPWInst" -u
|
||||||
|
echo.
|
||||||
|
goto :anykey
|
||||||
|
:error
|
||||||
|
echo [-] Installer executable not found.
|
||||||
|
echo Please extract all files from the downloaded package or check your anti-virus.
|
||||||
|
:anykey
|
||||||
|
pause
|
|
@ -0,0 +1,10 @@
|
||||||
|
@echo off
|
||||||
|
if not exist "%~dp0RDPWInst.exe" goto :error
|
||||||
|
"%~dp0RDPWInst" -w
|
||||||
|
echo.
|
||||||
|
goto :anykey
|
||||||
|
:error
|
||||||
|
echo [-] Installer executable not found.
|
||||||
|
echo Please extract all files from the downloaded package or check your anti-virus.
|
||||||
|
:anykey
|
||||||
|
pause
|
|
@ -0,0 +1,49 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||||
|
<?define ProductName="RDP Wrapper Library" ?>
|
||||||
|
<?define ProductVersion="1.6.2" ?>
|
||||||
|
<?define ProductCode="37ea5771-3352-4a52-9fac-9297331daebd"?>
|
||||||
|
<?define UpgradeCode="6623f60c-e84f-41e7-a55b-f421165deeb5"?>
|
||||||
|
<?define Manufacturer="Stas'M Corp. and contributors"?>
|
||||||
|
|
||||||
|
<Product Id="$(var.ProductCode)" Name="$(var.ProductName)" Language="1033" Version="$(var.ProductVersion)" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
|
||||||
|
<Package InstallerVersion="200" Compressed="yes"/>
|
||||||
|
<Property Id="MSIFASTINSTALL" Value="1" />
|
||||||
|
<Property Id="DISABLEROLLBACK" Value="1" />
|
||||||
|
<MajorUpgrade AllowDowngrades="yes"/>
|
||||||
|
|
||||||
|
<Media Id="1" Cabinet="media1.cab" EmbedCab="yes"/>
|
||||||
|
|
||||||
|
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||||
|
<Directory Id="CommonAppDataFolder">
|
||||||
|
<Directory Id="PACKAGECACHE" Name="Package Cache">
|
||||||
|
<Directory Id="INSTALLLOCATION" Name="{$(var.ProductCode)}">
|
||||||
|
<Component Id="RDPWrap" Guid="affd77d1-b35c-46f3-a97f-1686dc57b8b8">
|
||||||
|
<File Id='RDPWInst' DiskId='1' Source='RDPWInst.exe'/>
|
||||||
|
</Component>
|
||||||
|
</Directory>
|
||||||
|
</Directory>
|
||||||
|
</Directory>
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
<Feature Id="RDPWrapInstall" Title="RDPWrapSetup" Level="1">
|
||||||
|
<ComponentRef Id="RDPWrap" />
|
||||||
|
</Feature>
|
||||||
|
|
||||||
|
<CustomAction Id='InstallAction' FileKey='RDPWInst' ExeCommand='-i -o' Execute='immediate' Return='check'/>
|
||||||
|
<CustomAction Id='UninstallAction' FileKey='RDPWInst' ExeCommand='-u' Execute='immediate' Return='check'/>
|
||||||
|
<CustomAction Id='UpdateAction' FileKey='RDPWInst' ExeCommand='-w' Execute='immediate' Return='check'/>
|
||||||
|
<!-- <CustomAction Id='ChangeAction' Directory='ProgramFilesFolder' ExeCommand='RDP Wrapper\RDPConf' Execute='immediate' Return='check'/>
|
||||||
|
<CustomAction Id='RepairAction' Directory='ProgramFilesFolder' ExeCommand='RDP Wrapper\RDPCheck' Execute='immediate' Return='check'/> -->
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action='InstallAction' After='InstallFinalize'>NOT Installed AND NOT WIX_UPGRADE_DETECTED</Custom>
|
||||||
|
<Custom Action='UninstallAction' Before="RemoveFiles">REMOVE AND NOT UPGRADINGPRODUCTCODE</Custom>
|
||||||
|
<Custom Action='UpdateAction' Before="RemoveFiles">UPGRADINGPRODUCTCODE</Custom>
|
||||||
|
<!-- <Custom Action='ChangeAction' After='InstallFinalize'>Installed AND NOT REINSTALL AND NOT UPGRADINGPRODUCTCODE AND NOT REMOVE</Custom>
|
||||||
|
<Custom Action='RepairAction' After='InstallFinalize'>REINSTALL</Custom> -->
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
|
||||||
|
</Product>
|
||||||
|
</Wix>
|
|
@ -0,0 +1,3 @@
|
||||||
|
@echo off
|
||||||
|
"%ProgramFiles%\WiX Toolset v3.11\bin\candle" RDPWInst.wxs
|
||||||
|
"%ProgramFiles%\WiX Toolset v3.11\bin\light" RDPWInst.wixobj
|
|
@ -50,6 +50,7 @@ if not !errorlevel!==0 (
|
||||||
echo [*] Setting firewall configuration...
|
echo [*] Setting firewall configuration...
|
||||||
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
|
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
|
||||||
netsh advfirewall firewall add rule name="Remote Desktop" dir=in protocol=tcp localport=3389 profile=any action=allow
|
netsh advfirewall firewall add rule name="Remote Desktop" dir=in protocol=tcp localport=3389 profile=any action=allow
|
||||||
|
netsh advfirewall firewall add rule name="Remote Desktop" dir=in protocol=udp localport=3389 profile=any action=allow
|
||||||
echo [*] Looking for TermService PID...
|
echo [*] Looking for TermService PID...
|
||||||
tasklist /SVC /FI "SERVICES eq TermService" | find "PID" /V
|
tasklist /SVC /FI "SERVICES eq TermService" | find "PID" /V
|
||||||
echo.
|
echo.
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,172 @@
|
||||||
|
; RDP Wrapper Library configuration
|
||||||
|
; for Windows RT (ARMv7)
|
||||||
|
|
||||||
|
; This is experimental file
|
||||||
|
|
||||||
|
[Main]
|
||||||
|
Updated=2016-03-07
|
||||||
|
LogFile=\rdpwrap.txt
|
||||||
|
|
||||||
|
[SLPolicy]
|
||||||
|
TerminalServices-RemoteConnectionManager-AllowRemoteConnections=1
|
||||||
|
TerminalServices-RemoteConnectionManager-AllowMultipleSessions=1
|
||||||
|
TerminalServices-RemoteConnectionManager-AllowAppServerMode=1
|
||||||
|
TerminalServices-RemoteConnectionManager-AllowMultimon=1
|
||||||
|
TerminalServices-RemoteConnectionManager-MaxUserSessions=0
|
||||||
|
TerminalServices-RemoteConnectionManager-ce0ad219-4670-4988-98fb-89b14c2f072b-MaxSessions=0
|
||||||
|
TerminalServices-RemoteConnectionManager-45344fe7-00e6-4ac6-9f01-d01fd4ffadfb-MaxSessions=2
|
||||||
|
TerminalServices-RDP-7-Advanced-Compression-Allowed=1
|
||||||
|
TerminalServices-RemoteConnectionManager-45344fe7-00e6-4ac6-9f01-d01fd4ffadfb-LocalOnly=0
|
||||||
|
TerminalServices-RemoteConnectionManager-8dc86f1d-9969-4379-91c1-06fe1dc60575-MaxSessions=1000
|
||||||
|
TerminalServices-DeviceRedirection-Licenses-TSEasyPrintAllowed=1
|
||||||
|
TerminalServices-DeviceRedirection-Licenses-PnpRedirectionAllowed=1
|
||||||
|
TerminalServices-DeviceRedirection-Licenses-TSMFPluginAllowed=1
|
||||||
|
TerminalServices-RemoteConnectionManager-UiEffects-DWMRemotingAllowed=1
|
||||||
|
|
||||||
|
[PatchCodes]
|
||||||
|
Zero=00
|
||||||
|
bjmp5=05E0
|
||||||
|
CDefPolicy_Query_r3_r5=40F20013C5F8203305E0
|
||||||
|
CDefPolicy_Query_r3_r0=40F20013C0F8203305E0
|
||||||
|
|
||||||
|
[6.2.9200.16384]
|
||||||
|
; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled
|
||||||
|
; .text:10066DCC MOV.W R3, #0x11C
|
||||||
|
; .text:10066DD0 STR R3, [SP,#0x16C+var_13C]
|
||||||
|
; .text:10066DD2 LDR R3, =__imp_GetVersionExW
|
||||||
|
; .text:10066DD4 MOVS R4, #1 <- 0
|
||||||
|
; .text:10066DD6 ADD R0, SP, #0x16C+var_13C
|
||||||
|
; .text:10066DD8 LDR R3, [R3]
|
||||||
|
SingleUserPatch.arm=1
|
||||||
|
SingleUserOffset.arm=66DD4
|
||||||
|
SingleUserCode.arm=Zero
|
||||||
|
; Patch CDefPolicy::Query
|
||||||
|
; Original
|
||||||
|
; .text:10059164 LDR.W R2, [R5,#0x324] ; D5 F8 24 23 ; [R5,#0x324] -> R2
|
||||||
|
; .text:10059168 LDR.W R3, [R5,#0x320] ; D5 F8 20 33 ; [R5,#0x320] -> R3
|
||||||
|
; .text:1005916C CMP R2, R3 ; 9A 42 ; compare
|
||||||
|
; .text:1005916E BNE loc_1005917A ; 04 D1 ; jump if (R2 != R3)
|
||||||
|
; Changed
|
||||||
|
; .text:10059164 MOVW R3, #0x100 ; 40 F2 00 13 ; 0x100 -> R3
|
||||||
|
; .text:10059168 STR.W R3, [R5,#0x320] ; C5 F8 20 33 ; R3 -> [R5,#0x320]
|
||||||
|
; .text:1005916C B loc_1005917A ; 05 E0 ; jump
|
||||||
|
; .text:1005916E BNE loc_1005917A ; 04 D1 ; / never executed /
|
||||||
|
DefPolicyPatch.arm=1
|
||||||
|
DefPolicyOffset.arm=59164
|
||||||
|
DefPolicyCode.arm=CDefPolicy_Query_r3_r5
|
||||||
|
; Hook SLGetWindowsInformationDWORDWrapper
|
||||||
|
SLPolicyInternal.arm=1
|
||||||
|
SLPolicyOffset.arm=5F934
|
||||||
|
SLPolicyFunc.arm=New_Win8SL
|
||||||
|
|
||||||
|
[6.3.9600.16384]
|
||||||
|
; Patch CEnforcementCore::GetInstanceOfTSLicense
|
||||||
|
; .text:1008E6C2 BL _IsLicenseTypeLocalOnly_CSLQuery__SAJAAU_GUID__PAH_Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)
|
||||||
|
; .text:1008E6C6 CMP R0, #0
|
||||||
|
; .text:1008E6C8 BLT loc_1008E6DA
|
||||||
|
; .text:1008E6CA LDR R3, [SP,#0x20+var_14]
|
||||||
|
; .text:1008E6CC CBZ R3, loc_1008E6DA ; 2B B1 ; jump if (R3 == 0)
|
||||||
|
; Changed
|
||||||
|
; .text:1008E6CC B loc_1008E6DA ; 05 E0 ; jump
|
||||||
|
LocalOnlyPatch.arm=1
|
||||||
|
LocalOnlyOffset.arm=8E6CC
|
||||||
|
LocalOnlyCode.arm=bjmp5
|
||||||
|
; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled
|
||||||
|
; .text:10069E74 MOV.W R3, #0x11C
|
||||||
|
; .text:10069E78 STR R3, [SP,#0x164+var_13C]
|
||||||
|
; .text:10069E7A LDR R3, =__imp_GetVersionExW
|
||||||
|
; .text:10069E7C MOVS R4, #1 <- 0
|
||||||
|
; .text:10069E7E ADD R0, SP, #0x164+var_13C
|
||||||
|
; .text:10069E80 LDR R3, [R3]
|
||||||
|
SingleUserPatch.arm=1
|
||||||
|
SingleUserOffset.arm=69E7C
|
||||||
|
SingleUserCode.arm=Zero
|
||||||
|
; Patch CDefPolicy::Query
|
||||||
|
; Original
|
||||||
|
; .text:10064D54 LDR.W R2, [R0,#0x324] ; D0 F8 24 23 ; [R0,#0x324] -> R2
|
||||||
|
; .text:10064D58 LDR.W R3, [R0,#0x320] ; D0 F8 20 33 ; [R0,#0x320] -> R3
|
||||||
|
; .text:10064D5C CMP R2, R3 ; 9A 42 ; compare
|
||||||
|
; .text:10064D5E BNE loc_10064D6A ; 04 D1 ; jump if (R2 != R3)
|
||||||
|
; Changed
|
||||||
|
; .text:10064D54 MOVW R3, #0x100 ; 40 F2 00 13 ; 0x100 -> R3
|
||||||
|
; .text:10064D58 STR.W R3, [R0,#0x320] ; C0 F8 20 33 ; R3 -> [R0,#0x320]
|
||||||
|
; .text:10064D5C B loc_10064D6A ; 05 E0 ; jump
|
||||||
|
; .text:10064D5E BNE loc_10064D6A ; 04 D1 ; / never executed /
|
||||||
|
DefPolicyPatch.arm=1
|
||||||
|
DefPolicyOffset.arm=64D54
|
||||||
|
DefPolicyCode.arm=CDefPolicy_Query_r3_r0
|
||||||
|
; Hook CSLQuery::Initialize
|
||||||
|
SLInitHook.arm=1
|
||||||
|
SLInitOffset.arm=32188
|
||||||
|
SLInitFunc.arm=New_CSLQuery_Initialize
|
||||||
|
|
||||||
|
[6.3.9600.17095]
|
||||||
|
; Patch CEnforcementCore::GetInstanceOfTSLicense
|
||||||
|
; .text:1008E35A BL _IsLicenseTypeLocalOnly_CSLQuery__SAJAAU_GUID__PAH_Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)
|
||||||
|
; .text:1008E35E CMP R0, #0
|
||||||
|
; .text:1008E360 BLT loc_1008E372
|
||||||
|
; .text:1008E362 LDR R3, [SP,#0x20+var_14]
|
||||||
|
; .text:1008E364 CBZ R3, loc_1008E372 ; 2B B1 ; jump if (R3 == 0)
|
||||||
|
; Changed
|
||||||
|
; .text:1008E364 B loc_1008E372 ; 05 E0 ; jump
|
||||||
|
LocalOnlyPatch.arm=1
|
||||||
|
LocalOnlyOffset.arm=8E364
|
||||||
|
LocalOnlyCode.arm=bjmp5
|
||||||
|
; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled
|
||||||
|
; .text:10069C2C MOV.W R3, #0x11C
|
||||||
|
; .text:10069C30 STR R3, [SP,#0x164+var_13C]
|
||||||
|
; .text:10069C32 LDR R3, =GetVersionExW
|
||||||
|
; .text:10069C34 MOVS R4, #1 <- 0
|
||||||
|
; .text:10069C36 ADD R0, SP, #0x164+var_13C
|
||||||
|
; .text:10069C38 LDR R3, [R3]
|
||||||
|
SingleUserPatch.arm=1
|
||||||
|
SingleUserOffset.arm=69C34
|
||||||
|
SingleUserCode.arm=Zero
|
||||||
|
; Patch CDefPolicy::Query
|
||||||
|
; Original
|
||||||
|
; .text:100649E0 LDR.W R2, [R0,#0x324] ; D0 F8 24 23 ; [R0,#0x324] -> R2
|
||||||
|
; .text:100649E4 LDR.W R3, [R0,#0x320] ; D0 F8 20 33 ; [R0,#0x320] -> R3
|
||||||
|
; .text:100649E8 CMP R2, R3 ; 9A 42 ; compare
|
||||||
|
; .text:100649EA BNE loc_100649F6 ; 04 D1 ; jump if (R2 != R3)
|
||||||
|
; Changed
|
||||||
|
; .text:100649E0 MOVW R3, #0x100 ; 40 F2 00 13 ; 0x100 -> R3
|
||||||
|
; .text:100649E4 STR.W R3, [R0,#0x320] ; C0 F8 20 33 ; R3 -> [R0,#0x320]
|
||||||
|
; .text:100649E8 B loc_10064D6A ; 05 E0 ; jump
|
||||||
|
; .text:100649EA BNE loc_10064D6A ; 04 D1 ; / never executed /
|
||||||
|
DefPolicyPatch.arm=1
|
||||||
|
DefPolicyOffset.arm=649E0
|
||||||
|
DefPolicyCode.arm=CDefPolicy_Query_r3_r0
|
||||||
|
; Hook CSLQuery::Initialize
|
||||||
|
SLInitHook.arm=1
|
||||||
|
SLInitOffset.arm=32E3C
|
||||||
|
SLInitFunc.arm=New_CSLQuery_Initialize
|
||||||
|
|
||||||
|
[SLInit]
|
||||||
|
bServerSku=1
|
||||||
|
bRemoteConnAllowed=1
|
||||||
|
bFUSEnabled=1
|
||||||
|
bAppServerAllowed=1
|
||||||
|
bMultimonAllowed=1
|
||||||
|
lMaxUserSessions=0
|
||||||
|
ulMaxDebugSessions=0
|
||||||
|
bInitialized=1
|
||||||
|
|
||||||
|
[6.3.9600.16384-SLInit]
|
||||||
|
bFUSEnabled.arm =A57E0
|
||||||
|
lMaxUserSessions.arm =A57E4
|
||||||
|
bAppServerAllowed.arm =A57E8
|
||||||
|
bInitialized.arm =A57EC
|
||||||
|
bMultimonAllowed.arm =A57F0
|
||||||
|
bServerSku.arm =A57F4
|
||||||
|
ulMaxDebugSessions.arm=A57F8
|
||||||
|
bRemoteConnAllowed.arm=A57FC
|
||||||
|
|
||||||
|
[6.3.9600.17095-SLInit]
|
||||||
|
bFUSEnabled.arm =A67E0
|
||||||
|
lMaxUserSessions.arm =A67E4
|
||||||
|
bAppServerAllowed.arm =A67E8
|
||||||
|
bInitialized.arm =A67EC
|
||||||
|
bMultimonAllowed.arm =A67F0
|
||||||
|
bServerSku.arm =A67F4
|
||||||
|
ulMaxDebugSessions.arm=A67F8
|
||||||
|
bRemoteConnAllowed.arm=A67FC
|
File diff suppressed because it is too large
Load Diff
5180
res/rdpwrap.ini
5180
res/rdpwrap.ini
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
Copyright 2014 Stas'M Corp.
|
Copyright 2018 Stas'M Corp.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
@ -25,7 +25,10 @@ uses
|
||||||
Windows,
|
Windows,
|
||||||
Classes,
|
Classes,
|
||||||
WinSvc,
|
WinSvc,
|
||||||
Registry;
|
Registry,
|
||||||
|
WinInet,
|
||||||
|
AccCtrl,
|
||||||
|
AclAPI;
|
||||||
|
|
||||||
function EnumServicesStatusEx(
|
function EnumServicesStatusEx(
|
||||||
hSCManager: SC_HANDLE;
|
hSCManager: SC_HANDLE;
|
||||||
|
@ -40,6 +43,11 @@ function EnumServicesStatusEx(
|
||||||
pszGroupName: PWideChar): BOOL; stdcall;
|
pszGroupName: PWideChar): BOOL; stdcall;
|
||||||
external advapi32 name 'EnumServicesStatusExW';
|
external advapi32 name 'EnumServicesStatusExW';
|
||||||
|
|
||||||
|
function ConvertStringSidToSid(
|
||||||
|
StringSid: PWideChar;
|
||||||
|
var Sid: PSID): BOOL; stdcall;
|
||||||
|
external advapi32 name 'ConvertStringSidToSidW';
|
||||||
|
|
||||||
type
|
type
|
||||||
FILE_VERSION = record
|
FILE_VERSION = record
|
||||||
Version: record case Boolean of
|
Version: record case Boolean of
|
||||||
|
@ -75,6 +83,7 @@ const
|
||||||
TermService = 'TermService';
|
TermService = 'TermService';
|
||||||
var
|
var
|
||||||
Installed: Boolean;
|
Installed: Boolean;
|
||||||
|
Online: Boolean;
|
||||||
WrapPath: String;
|
WrapPath: String;
|
||||||
Arch: Byte;
|
Arch: Byte;
|
||||||
OldWow64RedirectionValue: LongBool;
|
OldWow64RedirectionValue: LongBool;
|
||||||
|
@ -159,7 +168,8 @@ begin
|
||||||
end;
|
end;
|
||||||
TermServiceHost := Reg.ReadString('ImagePath');
|
TermServiceHost := Reg.ReadString('ImagePath');
|
||||||
Reg.CloseKey;
|
Reg.CloseKey;
|
||||||
if Pos('svchost.exe', LowerCase(TermServiceHost)) = 0 then
|
if (Pos('svchost.exe', LowerCase(TermServiceHost)) = 0)
|
||||||
|
and (Pos('svchost -k', LowerCase(TermServiceHost)) = 0) then
|
||||||
begin
|
begin
|
||||||
Reg.Free;
|
Reg.Free;
|
||||||
Writeln('[-] TermService is hosted in a custom application (BeTwin, etc.) - unsupported.');
|
Writeln('[-] TermService is hosted in a custom application (BeTwin, etc.) - unsupported.');
|
||||||
|
@ -282,33 +292,46 @@ var
|
||||||
hSvc: THandle;
|
hSvc: THandle;
|
||||||
Code: DWORD;
|
Code: DWORD;
|
||||||
pch: PWideChar;
|
pch: PWideChar;
|
||||||
|
procedure ExitError(Func: String; ErrorCode: DWORD);
|
||||||
|
begin
|
||||||
|
if hSC > 0 then
|
||||||
|
CloseServiceHandle(hSC);
|
||||||
|
if hSvc > 0 then
|
||||||
|
CloseServiceHandle(hSvc);
|
||||||
|
Writeln('[-] ', Func, ' error (code ', ErrorCode, ').');
|
||||||
|
end;
|
||||||
begin
|
begin
|
||||||
|
hSC := 0;
|
||||||
|
hSvc := 0;
|
||||||
Writeln('[*] Starting ', SvcName, '...');
|
Writeln('[*] Starting ', SvcName, '...');
|
||||||
hSC := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT);
|
hSC := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT);
|
||||||
if hSC = 0 then
|
if hSC = 0 then
|
||||||
begin
|
begin
|
||||||
Code := GetLastError;
|
ExitError('OpenSCManager', GetLastError);
|
||||||
Writeln('[-] OpenSCManager error (code ', Code, ').');
|
|
||||||
Exit;
|
Exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
hSvc := OpenService(hSC, PWideChar(SvcName), SERVICE_START);
|
hSvc := OpenService(hSC, PWideChar(SvcName), SERVICE_START);
|
||||||
if hSvc = 0 then
|
if hSvc = 0 then
|
||||||
begin
|
begin
|
||||||
CloseServiceHandle(hSC);
|
ExitError('OpenService', GetLastError);
|
||||||
Code := GetLastError;
|
|
||||||
Writeln('[-] OpenService error (code ', Code, ').');
|
|
||||||
Exit;
|
Exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
pch := nil;
|
pch := nil;
|
||||||
if not StartService(hSvc, 0, pch) then begin
|
if not StartService(hSvc, 0, pch) then begin
|
||||||
CloseServiceHandle(hSvc);
|
|
||||||
CloseServiceHandle(hSC);
|
|
||||||
Code := GetLastError;
|
Code := GetLastError;
|
||||||
Writeln('[-] StartService error (code ', Code, ').');
|
if Code = 1056 then begin // Service already started
|
||||||
|
Sleep(2000); // or SCM hasn't registered killed process
|
||||||
|
if not StartService(hSvc, 0, pch) then begin
|
||||||
|
ExitError('StartService', Code);
|
||||||
Exit;
|
Exit;
|
||||||
end;
|
end;
|
||||||
|
end else begin
|
||||||
|
ExitError('StartService', Code);
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
CloseServiceHandle(hSvc);
|
CloseServiceHandle(hSvc);
|
||||||
CloseServiceHandle(hSC);
|
CloseServiceHandle(hSC);
|
||||||
end;
|
end;
|
||||||
|
@ -334,6 +357,8 @@ begin
|
||||||
Halt(Code);
|
Halt(Code);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
dwResumeHandle := 0;
|
||||||
|
|
||||||
SetLength(Svc, 1489);
|
SetLength(Svc, 1489);
|
||||||
FillChar(Svc[0], sizeof(Svc[0])*Length(Svc), 0);
|
FillChar(Svc[0], sizeof(Svc[0])*Length(Svc), 0);
|
||||||
if not EnumServicesStatusEx(hSC, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL,
|
if not EnumServicesStatusEx(hSC, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL,
|
||||||
|
@ -590,29 +615,153 @@ begin
|
||||||
Str.Free;
|
Str.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function GitINIFile(var Content: String): Boolean;
|
||||||
|
const
|
||||||
|
URL = 'https://raw.githubusercontent.com/stascorp/rdpwrap/master/res/rdpwrap.ini';
|
||||||
|
var
|
||||||
|
NetHandle: HINTERNET;
|
||||||
|
UrlHandle: HINTERNET;
|
||||||
|
Str: String;
|
||||||
|
Buf: Array[0..1023] of Byte;
|
||||||
|
BytesRead: DWORD;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
Content := '';
|
||||||
|
NetHandle := InternetOpen('RDP Wrapper Update', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
|
||||||
|
if not Assigned(NetHandle) then
|
||||||
|
Exit;
|
||||||
|
UrlHandle := InternetOpenUrl(NetHandle, PChar(URL), nil, 0, INTERNET_FLAG_RELOAD, 0);
|
||||||
|
if not Assigned(UrlHandle) then
|
||||||
|
begin
|
||||||
|
InternetCloseHandle(NetHandle);
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
repeat
|
||||||
|
InternetReadFile(UrlHandle, @Buf[0], SizeOf(Buf), BytesRead);
|
||||||
|
SetString(Str, PAnsiChar(@Buf[0]), BytesRead);
|
||||||
|
Content := Content + Str;
|
||||||
|
until BytesRead = 0;
|
||||||
|
InternetCloseHandle(UrlHandle);
|
||||||
|
InternetCloseHandle(NetHandle);
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure GrantSidFullAccess(Path, SID: String);
|
||||||
|
var
|
||||||
|
p_SID: PSID;
|
||||||
|
pDACL: PACL;
|
||||||
|
EA: EXPLICIT_ACCESS;
|
||||||
|
Code, Result: DWORD;
|
||||||
|
begin
|
||||||
|
p_SID := nil;
|
||||||
|
if not ConvertStringSidToSid(PChar(SID), p_SID) then
|
||||||
|
begin
|
||||||
|
Code := GetLastError;
|
||||||
|
Writeln('[-] ConvertStringSidToSid error (code ', Code, ').');
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
EA.grfAccessPermissions := GENERIC_ALL;
|
||||||
|
EA.grfAccessMode := GRANT_ACCESS;
|
||||||
|
EA.grfInheritance := SUB_CONTAINERS_AND_OBJECTS_INHERIT;
|
||||||
|
EA.Trustee.pMultipleTrustee := nil;
|
||||||
|
EA.Trustee.MultipleTrusteeOperation := NO_MULTIPLE_TRUSTEE;
|
||||||
|
EA.Trustee.TrusteeForm := TRUSTEE_IS_SID;
|
||||||
|
EA.Trustee.TrusteeType := TRUSTEE_IS_WELL_KNOWN_GROUP;
|
||||||
|
EA.Trustee.ptstrName := p_SID;
|
||||||
|
|
||||||
|
Result := SetEntriesInAcl(1, @EA, nil, pDACL);
|
||||||
|
if Result = ERROR_SUCCESS then
|
||||||
|
begin
|
||||||
|
if SetNamedSecurityInfo(pchar(Path), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, pDACL, nil) <> ERROR_SUCCESS then
|
||||||
|
begin
|
||||||
|
Code := GetLastError;
|
||||||
|
Writeln('[-] SetNamedSecurityInfo error (code ', Code, ').');
|
||||||
|
end;
|
||||||
|
LocalFree(Cardinal(pDACL));
|
||||||
|
end
|
||||||
|
else begin
|
||||||
|
Code := GetLastError;
|
||||||
|
Writeln('[-] SetEntriesInAcl error (code ', Code, ').');
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure ExtractFiles;
|
procedure ExtractFiles;
|
||||||
|
var
|
||||||
|
RDPClipRes, RfxvmtRes, S: String;
|
||||||
|
OnlineINI: TStringList;
|
||||||
begin
|
begin
|
||||||
if not DirectoryExists(ExtractFilePath(ExpandPath(WrapPath))) then
|
if not DirectoryExists(ExtractFilePath(ExpandPath(WrapPath))) then
|
||||||
if ForceDirectories(ExtractFilePath(ExpandPath(WrapPath))) then
|
if ForceDirectories(ExtractFilePath(ExpandPath(WrapPath))) then begin
|
||||||
Writeln('[+] Folder created: ', ExtractFilePath(ExpandPath(WrapPath)))
|
S := ExtractFilePath(ExpandPath(WrapPath));
|
||||||
|
Writeln('[+] Folder created: ', S);
|
||||||
|
GrantSidFullAccess(S, 'S-1-5-18'); // Local System account
|
||||||
|
GrantSidFullAccess(S, 'S-1-5-6'); // Service group
|
||||||
|
end
|
||||||
else begin
|
else begin
|
||||||
Writeln('[-] ForceDirectories error.');
|
Writeln('[-] ForceDirectories error.');
|
||||||
Writeln('[*] Path: ', ExtractFilePath(ExpandPath(WrapPath)));
|
Writeln('[*] Path: ', ExtractFilePath(ExpandPath(WrapPath)));
|
||||||
Halt(0);
|
Halt(0);
|
||||||
end;
|
end;
|
||||||
|
if Online then
|
||||||
|
begin
|
||||||
|
Writeln('[*] Downloading latest INI file...');
|
||||||
|
OnlineINI := TStringList.Create;
|
||||||
|
if GitINIFile(S) then begin
|
||||||
|
OnlineINI.Text := S;
|
||||||
|
S := ExtractFilePath(ExpandPath(WrapPath)) + 'rdpwrap.ini';
|
||||||
|
OnlineINI.SaveToFile(S);
|
||||||
|
Writeln('[+] Latest INI file -> ', S);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
Writeln('[-] Failed to get online INI file, using built-in.');
|
||||||
|
Online := False;
|
||||||
|
end;
|
||||||
|
OnlineINI.Free;
|
||||||
|
end;
|
||||||
|
if not Online then
|
||||||
|
begin
|
||||||
|
S := ExtractFilePath(ParamStr(0)) + 'rdpwrap.ini';
|
||||||
|
if FileExists(S) then
|
||||||
|
begin
|
||||||
|
OnlineINI := TStringList.Create;
|
||||||
|
OnlineINI.LoadFromFile(S);
|
||||||
|
S := ExtractFilePath(ExpandPath(WrapPath)) + 'rdpwrap.ini';
|
||||||
|
OnlineINI.SaveToFile(S);
|
||||||
|
Writeln('[+] Current INI file -> ', S);
|
||||||
|
OnlineINI.Free;
|
||||||
|
end else
|
||||||
ExtractRes('config', ExtractFilePath(ExpandPath(WrapPath)) + 'rdpwrap.ini');
|
ExtractRes('config', ExtractFilePath(ExpandPath(WrapPath)) + 'rdpwrap.ini');
|
||||||
|
end;
|
||||||
|
|
||||||
|
RDPClipRes := '';
|
||||||
|
RfxvmtRes := '';
|
||||||
case Arch of
|
case Arch of
|
||||||
32: begin
|
32: begin
|
||||||
ExtractRes('rdpw32', ExpandPath(WrapPath));
|
ExtractRes('rdpw32', ExpandPath(WrapPath));
|
||||||
if not FileExists(ExpandPath('%SystemRoot%\System32\rdpclip.exe')) then
|
if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 0) then
|
||||||
ExtractRes('rdpclip32', ExpandPath('%SystemRoot%\System32\rdpclip.exe'));
|
RDPClipRes := 'rdpclip6032';
|
||||||
|
if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 1) then
|
||||||
|
RDPClipRes := 'rdpclip6132';
|
||||||
|
if (FV.Version.w.Major = 10) and (FV.Version.w.Minor = 0) then
|
||||||
|
RfxvmtRes := 'rfxvmt32';
|
||||||
end;
|
end;
|
||||||
64: begin
|
64: begin
|
||||||
ExtractRes('rdpw64', ExpandPath(WrapPath));
|
ExtractRes('rdpw64', ExpandPath(WrapPath));
|
||||||
|
if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 0) then
|
||||||
|
RDPClipRes := 'rdpclip6064';
|
||||||
|
if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 1) then
|
||||||
|
RDPClipRes := 'rdpclip6164';
|
||||||
|
if (FV.Version.w.Major = 10) and (FV.Version.w.Minor = 0) then
|
||||||
|
RfxvmtRes := 'rfxvmt64';
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if RDPClipRes <> '' then
|
||||||
if not FileExists(ExpandPath('%SystemRoot%\System32\rdpclip.exe')) then
|
if not FileExists(ExpandPath('%SystemRoot%\System32\rdpclip.exe')) then
|
||||||
ExtractRes('rdpclip64', ExpandPath('%SystemRoot%\System32\rdpclip.exe'));
|
ExtractRes(RDPClipRes, ExpandPath('%SystemRoot%\System32\rdpclip.exe'));
|
||||||
end;
|
if RfxvmtRes <> '' then
|
||||||
end;
|
if not FileExists(ExpandPath('%SystemRoot%\System32\rfxvmt.dll')) then
|
||||||
|
ExtractRes(RfxvmtRes, ExpandPath('%SystemRoot%\System32\rfxvmt.dll'));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure DeleteFiles;
|
procedure DeleteFiles;
|
||||||
|
@ -698,6 +847,12 @@ procedure CheckTermsrvVersion;
|
||||||
var
|
var
|
||||||
SuppLvl: Byte;
|
SuppLvl: Byte;
|
||||||
VerTxt: String;
|
VerTxt: String;
|
||||||
|
|
||||||
|
procedure UpdateMsg;
|
||||||
|
begin
|
||||||
|
Writeln('Try running "update.bat" or "RDPWInst -w" to download latest INI file.');
|
||||||
|
Writeln('If it doesn''t help, send your termsrv.dll to project developer for support.');
|
||||||
|
end;
|
||||||
begin
|
begin
|
||||||
GetFileVersion(ExpandPath(TermServicePath), FV);
|
GetFileVersion(ExpandPath(TermServicePath), FV);
|
||||||
VerTxt := Format('%d.%d.%d.%d',
|
VerTxt := Format('%d.%d.%d.%d',
|
||||||
|
@ -739,12 +894,12 @@ begin
|
||||||
case SuppLvl of
|
case SuppLvl of
|
||||||
0: begin
|
0: begin
|
||||||
Writeln('[-] This version of Terminal Services is not supported.');
|
Writeln('[-] This version of Terminal Services is not supported.');
|
||||||
Writeln('Send your termsrv.dll to project developer for support.');
|
UpdateMsg;
|
||||||
end;
|
end;
|
||||||
1: begin
|
1: begin
|
||||||
Writeln('[!] This version of Terminal Services is supported partially.');
|
Writeln('[!] This version of Terminal Services is supported partially.');
|
||||||
Writeln('It means you may have some limitations such as only 2 concurrent sessions.');
|
Writeln('It means you may have some limitations such as only 2 concurrent sessions.');
|
||||||
Writeln('Send your termsrv.dll to project developer for adding full support.');
|
UpdateMsg;
|
||||||
end;
|
end;
|
||||||
2: begin
|
2: begin
|
||||||
Writeln('[+] This version of Terminal Services is fully supported.');
|
Writeln('[+] This version of Terminal Services is fully supported.');
|
||||||
|
@ -873,34 +1028,131 @@ end;
|
||||||
procedure TSConfigFirewall(Enable: Boolean);
|
procedure TSConfigFirewall(Enable: Boolean);
|
||||||
begin
|
begin
|
||||||
if Enable then
|
if Enable then
|
||||||
ExecWait('netsh advfirewall firewall add rule name="Remote Desktop" dir=in protocol=tcp localport=3389 profile=any action=allow')
|
begin
|
||||||
else
|
ExecWait('netsh advfirewall firewall add rule name="Remote Desktop" dir=in protocol=tcp localport=3389 profile=any action=allow');
|
||||||
|
ExecWait('netsh advfirewall firewall add rule name="Remote Desktop" dir=in protocol=udp localport=3389 profile=any action=allow');
|
||||||
|
end else
|
||||||
ExecWait('netsh advfirewall firewall delete rule name="Remote Desktop"');
|
ExecWait('netsh advfirewall firewall delete rule name="Remote Desktop"');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function CheckINIDate(Filename, Content: String; var Date: Integer): Boolean;
|
||||||
|
var
|
||||||
|
Str: TStringList;
|
||||||
|
I: Integer;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
Str := TStringList.Create;
|
||||||
|
if Filename <> '' then begin
|
||||||
|
try
|
||||||
|
Str.LoadFromFile(Filename);
|
||||||
|
except
|
||||||
|
Writeln('[-] Failed to read INI file.');
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
end else
|
||||||
|
Str.Text := Content;
|
||||||
|
for I := 0 to Str.Count - 1 do
|
||||||
|
if Pos('Updated=', Str[I]) = 1 then
|
||||||
|
Break;
|
||||||
|
if I >= Str.Count then begin
|
||||||
|
Writeln('[-] Failed to check INI date.');
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
Content := StringReplace(Str[I], 'Updated=', '', []);
|
||||||
|
Content := StringReplace(Content, '-', '', [rfReplaceAll]);
|
||||||
|
Str.Free;
|
||||||
|
try
|
||||||
|
Date := StrToInt(Content);
|
||||||
|
except
|
||||||
|
Writeln('[-] Wrong INI date format.');
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure CheckUpdate;
|
||||||
|
var
|
||||||
|
INIPath, S: String;
|
||||||
|
Str: TStringList;
|
||||||
|
I, OldDate, NewDate: Integer;
|
||||||
|
begin
|
||||||
|
INIPath := ExtractFilePath(ExpandPath(TermServicePath)) + 'rdpwrap.ini';
|
||||||
|
if not CheckINIDate(INIPath, '', OldDate) then
|
||||||
|
Halt(ERROR_ACCESS_DENIED);
|
||||||
|
Writeln('[*] Current update date: ',
|
||||||
|
Format('%d.%.2d.%.2d', [OldDate div 10000, OldDate div 100 mod 100, OldDate mod 100]));
|
||||||
|
|
||||||
|
if not GitINIFile(S) then begin
|
||||||
|
Writeln('[-] Failed to download latest INI from GitHub.');
|
||||||
|
Halt(ERROR_ACCESS_DENIED);
|
||||||
|
end;
|
||||||
|
if not CheckINIDate('', S, NewDate) then
|
||||||
|
Halt(ERROR_ACCESS_DENIED);
|
||||||
|
Writeln('[*] Latest update date: ',
|
||||||
|
Format('%d.%.2d.%.2d', [NewDate div 10000, NewDate div 100 mod 100, NewDate mod 100]));
|
||||||
|
|
||||||
|
if NewDate = OldDate then
|
||||||
|
Writeln('[*] Everything is up to date.')
|
||||||
|
else
|
||||||
|
if NewDate > OldDate then begin
|
||||||
|
Writeln('[+] New update is available, updating...');
|
||||||
|
|
||||||
|
CheckTermsrvProcess;
|
||||||
|
|
||||||
|
Writeln('[*] Terminating service...');
|
||||||
|
AddPrivilege('SeDebugPrivilege');
|
||||||
|
KillProcess(TermServicePID);
|
||||||
|
Sleep(1000);
|
||||||
|
|
||||||
|
if Length(ShareSvc) > 0 then
|
||||||
|
for I := 0 to Length(ShareSvc) - 1 do
|
||||||
|
SvcStart(ShareSvc[I]);
|
||||||
|
Sleep(500);
|
||||||
|
|
||||||
|
Str := TStringList.Create;
|
||||||
|
Str.Text := S;
|
||||||
|
try
|
||||||
|
Str.SaveToFile(INIPath);
|
||||||
|
except
|
||||||
|
Writeln('[-] Failed to write INI file.');
|
||||||
|
Halt(ERROR_ACCESS_DENIED);
|
||||||
|
end;
|
||||||
|
Str.Free;
|
||||||
|
|
||||||
|
SvcStart(TermService);
|
||||||
|
|
||||||
|
Writeln('[+] Update completed.');
|
||||||
|
end else
|
||||||
|
Writeln('[*] Your INI file is newer than public file. Are you a developer? :)');
|
||||||
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
I: Integer;
|
I: Integer;
|
||||||
begin
|
begin
|
||||||
Writeln('RDP Wrapper Library v1.5');
|
Writeln('RDP Wrapper Library v1.6.2');
|
||||||
Writeln('Installer v2.2');
|
Writeln('Installer v2.6');
|
||||||
Writeln('Copyright (C) Stas''M Corp. 2014');
|
Writeln('Copyright (C) Stas''M Corp. 2018');
|
||||||
Writeln('');
|
Writeln('');
|
||||||
|
|
||||||
if (ParamCount < 1)
|
if (ParamCount < 1)
|
||||||
or (
|
or (
|
||||||
(ParamStr(1) <> '-l')
|
(ParamStr(1) <> '-l')
|
||||||
and (ParamStr(1) <> '-i')
|
and (ParamStr(1) <> '-i')
|
||||||
|
and (ParamStr(1) <> '-w')
|
||||||
and (ParamStr(1) <> '-u')
|
and (ParamStr(1) <> '-u')
|
||||||
and (ParamStr(1) <> '-r')
|
and (ParamStr(1) <> '-r')
|
||||||
) then
|
) then
|
||||||
begin
|
begin
|
||||||
Writeln('USAGE:');
|
Writeln('USAGE:');
|
||||||
Writeln('RDPWInst.exe [-l|-i[-s]|-u|-r]');
|
Writeln('RDPWInst.exe [-l|-i[-s][-o]|-w|-u[-k]|-r]');
|
||||||
Writeln('');
|
Writeln('');
|
||||||
Writeln('-l display the license agreement');
|
Writeln('-l display the license agreement');
|
||||||
Writeln('-i install wrapper to Program Files folder (default)');
|
Writeln('-i install wrapper to Program Files folder (default)');
|
||||||
Writeln('-i -s install wrapper to System32 folder');
|
Writeln('-i -s install wrapper to System32 folder');
|
||||||
|
Writeln('-i -o online install mode (loads latest INI file)');
|
||||||
|
Writeln('-w get latest update for INI file');
|
||||||
Writeln('-u uninstall wrapper');
|
Writeln('-u uninstall wrapper');
|
||||||
|
Writeln('-u -k uninstall wrapper and keep settings');
|
||||||
Writeln('-r force restart Terminal Services');
|
Writeln('-r force restart Terminal Services');
|
||||||
Exit;
|
Exit;
|
||||||
end;
|
end;
|
||||||
|
@ -911,6 +1163,13 @@ begin
|
||||||
Exit;
|
Exit;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
if not CheckWin32Version(6,0) then
|
||||||
|
begin
|
||||||
|
Writeln('[-] Unsupported Windows version:');
|
||||||
|
Writeln(' only >= 6.0 (Vista, Server 2008 and newer) are supported.');
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
|
||||||
if not SupportedArchitecture then
|
if not SupportedArchitecture then
|
||||||
begin
|
begin
|
||||||
Writeln('[-] Unsupported processor architecture.');
|
Writeln('[-] Unsupported processor architecture.');
|
||||||
|
@ -946,6 +1205,7 @@ begin
|
||||||
CheckTermsrvProcess;
|
CheckTermsrvProcess;
|
||||||
|
|
||||||
Writeln('[*] Extracting files...');
|
Writeln('[*] Extracting files...');
|
||||||
|
Online := (ParamStr(2) = '-o') or (ParamStr(3) = '-o');
|
||||||
ExtractFiles;
|
ExtractFiles;
|
||||||
|
|
||||||
Writeln('[*] Configuring service library...');
|
Writeln('[*] Configuring service library...');
|
||||||
|
@ -1008,16 +1268,31 @@ begin
|
||||||
SvcStart(TermService);
|
SvcStart(TermService);
|
||||||
Sleep(500);
|
Sleep(500);
|
||||||
|
|
||||||
|
if ParamStr(2) <> '-k' then
|
||||||
|
begin
|
||||||
Writeln('[*] Configuring registry...');
|
Writeln('[*] Configuring registry...');
|
||||||
TSConfigRegistry(False);
|
TSConfigRegistry(False);
|
||||||
Writeln('[*] Configuring firewall...');
|
Writeln('[*] Configuring firewall...');
|
||||||
TSConfigFirewall(False);
|
TSConfigFirewall(False);
|
||||||
|
end;
|
||||||
|
|
||||||
if Arch = 64 then
|
if Arch = 64 then
|
||||||
RevertWowRedirection;
|
RevertWowRedirection;
|
||||||
|
|
||||||
Writeln('[+] Successfully uninstalled.');
|
Writeln('[+] Successfully uninstalled.');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
if ParamStr(1) = '-w' then
|
||||||
|
begin
|
||||||
|
if not Installed then
|
||||||
|
begin
|
||||||
|
Writeln('[*] RDP Wrapper Library is not installed.');
|
||||||
|
Halt(ERROR_INVALID_FUNCTION);
|
||||||
|
end;
|
||||||
|
Writeln('[*] Checking for updates...');
|
||||||
|
CheckUpdate;
|
||||||
|
end;
|
||||||
|
|
||||||
if ParamStr(1) = '-r' then
|
if ParamStr(1) = '-r' then
|
||||||
begin
|
begin
|
||||||
Writeln('[*] Restarting...');
|
Writeln('[*] Restarting...');
|
||||||
|
|
|
@ -20,8 +20,9 @@
|
||||||
<Base>true</Base>
|
<Base>true</Base>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Base)'!=''">
|
<PropertyGroup Condition="'$(Base)'!=''">
|
||||||
|
<DCC_ExeOutput>..\bin\</DCC_ExeOutput>
|
||||||
<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>
|
<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>
|
||||||
<DCC_DependencyCheckOutputName>RDPWInst.exe</DCC_DependencyCheckOutputName>
|
<DCC_DependencyCheckOutputName>..\bin\RDPWInst.exe</DCC_DependencyCheckOutputName>
|
||||||
<DCC_ImageBase>00400000</DCC_ImageBase>
|
<DCC_ImageBase>00400000</DCC_ImageBase>
|
||||||
<DCC_Platform>x86</DCC_Platform>
|
<DCC_Platform>x86</DCC_Platform>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
@ -41,14 +42,14 @@
|
||||||
<BuildConfiguration Include="Base">
|
<BuildConfiguration Include="Base">
|
||||||
<Key>Base</Key>
|
<Key>Base</Key>
|
||||||
</BuildConfiguration>
|
</BuildConfiguration>
|
||||||
<BuildConfiguration Include="Debug">
|
|
||||||
<Key>Cfg_2</Key>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
</BuildConfiguration>
|
|
||||||
<BuildConfiguration Include="Release">
|
<BuildConfiguration Include="Release">
|
||||||
<Key>Cfg_1</Key>
|
<Key>Cfg_1</Key>
|
||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
</BuildConfiguration>
|
</BuildConfiguration>
|
||||||
|
<BuildConfiguration Include="Debug">
|
||||||
|
<Key>Cfg_2</Key>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
</BuildConfiguration>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
||||||
<ProjectExtensions>
|
<ProjectExtensions>
|
||||||
|
@ -60,7 +61,7 @@
|
||||||
<Parameters Name="UseLauncher">False</Parameters>
|
<Parameters Name="UseLauncher">False</Parameters>
|
||||||
<Parameters Name="LoadAllSymbols">True</Parameters>
|
<Parameters Name="LoadAllSymbols">True</Parameters>
|
||||||
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
|
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
|
||||||
<Parameters Name="RunParams">-i</Parameters>
|
<Parameters Name="RunParams">-w</Parameters>
|
||||||
</Parameters>
|
</Parameters>
|
||||||
<VersionInfo>
|
<VersionInfo>
|
||||||
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>
|
||||||
|
|
Binary file not shown.
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
Copyright 2014 Stas'M Corp.
|
Copyright 2015 Stas'M Corp.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
@ -44,13 +44,12 @@ implementation
|
||||||
procedure TFrm.FormCreate(Sender: TObject);
|
procedure TFrm.FormCreate(Sender: TObject);
|
||||||
var
|
var
|
||||||
Reg: TRegistry;
|
Reg: TRegistry;
|
||||||
Port: Integer;
|
|
||||||
begin
|
begin
|
||||||
RDP.DisconnectedText := 'Disconnected.';
|
RDP.DisconnectedText := 'Disconnected.';
|
||||||
RDP.ConnectingText := 'Connecting...';
|
RDP.ConnectingText := 'Connecting...';
|
||||||
RDP.ConnectedStatusText := 'Connected.';
|
RDP.ConnectedStatusText := 'Connected.';
|
||||||
RDP.UserName := '';
|
RDP.UserName := '';
|
||||||
RDP.Server := '127.0.0.1';
|
RDP.Server := '127.0.0.2';
|
||||||
Reg := TRegistry.Create;
|
Reg := TRegistry.Create;
|
||||||
Reg.RootKey := HKEY_LOCAL_MACHINE;
|
Reg.RootKey := HKEY_LOCAL_MACHINE;
|
||||||
|
|
||||||
|
@ -132,8 +131,8 @@ begin
|
||||||
$1707: ErrStr := 'Delegation of credentials to the target server is not allowed unless mutual authentication has been achieved.';
|
$1707: ErrStr := 'Delegation of credentials to the target server is not allowed unless mutual authentication has been achieved.';
|
||||||
$2207: ErrStr := 'The smart card is blocked.';
|
$2207: ErrStr := 'The smart card is blocked.';
|
||||||
$1C07: ErrStr := 'An incorrect PIN was presented to the smart card.';
|
$1C07: ErrStr := 'An incorrect PIN was presented to the smart card.';
|
||||||
$B09: ErrStr := 'Network Level Authentication is required.';
|
$B09: ErrStr := 'Network Level Authentication is required, run RDPCheck as administrator.';
|
||||||
$708: ErrStr := 'The RDP seems to work, but your client doesn''t support loopback connections. Try to connect to your PC from another device in the network.';
|
$708: ErrStr := 'RDP is working, but the client doesn''t allow loopback connections. Try to connect to your PC from another device in the network.';
|
||||||
else ErrStr := 'Unknown code 0x'+IntToHex(discReason, 1);
|
else ErrStr := 'Unknown code 0x'+IntToHex(discReason, 1);
|
||||||
end;
|
end;
|
||||||
if (discReason > 2) then
|
if (discReason > 2) then
|
||||||
|
|
|
@ -20,8 +20,9 @@
|
||||||
<Base>true</Base>
|
<Base>true</Base>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Base)'!=''">
|
<PropertyGroup Condition="'$(Base)'!=''">
|
||||||
|
<DCC_ExeOutput>..\bin\</DCC_ExeOutput>
|
||||||
<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>
|
<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>
|
||||||
<DCC_DependencyCheckOutputName>RDPCheck.exe</DCC_DependencyCheckOutputName>
|
<DCC_DependencyCheckOutputName>..\bin\RDPCheck.exe</DCC_DependencyCheckOutputName>
|
||||||
<DCC_ImageBase>00400000</DCC_ImageBase>
|
<DCC_ImageBase>00400000</DCC_ImageBase>
|
||||||
<DCC_Platform>x86</DCC_Platform>
|
<DCC_Platform>x86</DCC_Platform>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
@ -44,14 +45,14 @@
|
||||||
<BuildConfiguration Include="Base">
|
<BuildConfiguration Include="Base">
|
||||||
<Key>Base</Key>
|
<Key>Base</Key>
|
||||||
</BuildConfiguration>
|
</BuildConfiguration>
|
||||||
<BuildConfiguration Include="Debug">
|
|
||||||
<Key>Cfg_2</Key>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
</BuildConfiguration>
|
|
||||||
<BuildConfiguration Include="Release">
|
<BuildConfiguration Include="Release">
|
||||||
<Key>Cfg_1</Key>
|
<Key>Cfg_1</Key>
|
||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
</BuildConfiguration>
|
</BuildConfiguration>
|
||||||
|
<BuildConfiguration Include="Debug">
|
||||||
|
<Key>Cfg_2</Key>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
</BuildConfiguration>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
||||||
<ProjectExtensions>
|
<ProjectExtensions>
|
||||||
|
@ -68,7 +69,7 @@
|
||||||
<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
|
<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
|
||||||
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
|
||||||
<VersionInfo Name="MajorVer">2</VersionInfo>
|
<VersionInfo Name="MajorVer">2</VersionInfo>
|
||||||
<VersionInfo Name="MinorVer">1</VersionInfo>
|
<VersionInfo Name="MinorVer">2</VersionInfo>
|
||||||
<VersionInfo Name="Release">0</VersionInfo>
|
<VersionInfo Name="Release">0</VersionInfo>
|
||||||
<VersionInfo Name="Build">0</VersionInfo>
|
<VersionInfo Name="Build">0</VersionInfo>
|
||||||
<VersionInfo Name="Debug">False</VersionInfo>
|
<VersionInfo Name="Debug">False</VersionInfo>
|
||||||
|
@ -82,13 +83,13 @@
|
||||||
<VersionInfoKeys>
|
<VersionInfoKeys>
|
||||||
<VersionInfoKeys Name="CompanyName">Stas'M Corp.</VersionInfoKeys>
|
<VersionInfoKeys Name="CompanyName">Stas'M Corp.</VersionInfoKeys>
|
||||||
<VersionInfoKeys Name="FileDescription">Local RDP Checker</VersionInfoKeys>
|
<VersionInfoKeys Name="FileDescription">Local RDP Checker</VersionInfoKeys>
|
||||||
<VersionInfoKeys Name="FileVersion">2.1.0.0</VersionInfoKeys>
|
<VersionInfoKeys Name="FileVersion">2.2.0.0</VersionInfoKeys>
|
||||||
<VersionInfoKeys Name="InternalName">RDPCheck</VersionInfoKeys>
|
<VersionInfoKeys Name="InternalName">RDPCheck</VersionInfoKeys>
|
||||||
<VersionInfoKeys Name="LegalCopyright">Copyright © Stas'M Corp. 2014</VersionInfoKeys>
|
<VersionInfoKeys Name="LegalCopyright">Copyright © Stas'M Corp. 2015</VersionInfoKeys>
|
||||||
<VersionInfoKeys Name="LegalTrademarks">Stas'M Corp.</VersionInfoKeys>
|
<VersionInfoKeys Name="LegalTrademarks">Stas'M Corp.</VersionInfoKeys>
|
||||||
<VersionInfoKeys Name="OriginalFilename">RDPCheck.exe</VersionInfoKeys>
|
<VersionInfoKeys Name="OriginalFilename">RDPCheck.exe</VersionInfoKeys>
|
||||||
<VersionInfoKeys Name="ProductName">RDP Host Support</VersionInfoKeys>
|
<VersionInfoKeys Name="ProductName">RDP Host Support</VersionInfoKeys>
|
||||||
<VersionInfoKeys Name="ProductVersion">1.3.0.0</VersionInfoKeys>
|
<VersionInfoKeys Name="ProductVersion">1.6.0.0</VersionInfoKeys>
|
||||||
<VersionInfoKeys Name="Comments">http://stascorp.com</VersionInfoKeys>
|
<VersionInfoKeys Name="Comments">http://stascorp.com</VersionInfoKeys>
|
||||||
</VersionInfoKeys>
|
</VersionInfoKeys>
|
||||||
<Excluded_Packages>
|
<Excluded_Packages>
|
||||||
|
|
Binary file not shown.
|
@ -3,8 +3,8 @@ object MainForm: TMainForm
|
||||||
Top = 0
|
Top = 0
|
||||||
BorderStyle = bsDialog
|
BorderStyle = bsDialog
|
||||||
Caption = 'RDP Wrapper Configuration'
|
Caption = 'RDP Wrapper Configuration'
|
||||||
ClientHeight = 326
|
ClientHeight = 314
|
||||||
ClientWidth = 351
|
ClientWidth = 404
|
||||||
Color = clBtnFace
|
Color = clBtnFace
|
||||||
Font.Charset = DEFAULT_CHARSET
|
Font.Charset = DEFAULT_CHARSET
|
||||||
Font.Color = clWindowText
|
Font.Color = clWindowText
|
||||||
|
@ -18,114 +18,80 @@ object MainForm: TMainForm
|
||||||
OnDestroy = FormDestroy
|
OnDestroy = FormDestroy
|
||||||
PixelsPerInch = 96
|
PixelsPerInch = 96
|
||||||
TextHeight = 13
|
TextHeight = 13
|
||||||
object lRDPPort: TLabel
|
|
||||||
Left = 225
|
|
||||||
Top = 103
|
|
||||||
Width = 47
|
|
||||||
Height = 13
|
|
||||||
Caption = 'RDP Port:'
|
|
||||||
end
|
|
||||||
object bOK: TButton
|
object bOK: TButton
|
||||||
Left = 10
|
Left = 40
|
||||||
Top = 293
|
Top = 281
|
||||||
Width = 75
|
Width = 75
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'OK'
|
Caption = 'OK'
|
||||||
ModalResult = 1
|
ModalResult = 1
|
||||||
TabOrder = 0
|
TabOrder = 4
|
||||||
OnClick = bOKClick
|
OnClick = bOKClick
|
||||||
end
|
end
|
||||||
object bCancel: TButton
|
object bCancel: TButton
|
||||||
Left = 91
|
Left = 121
|
||||||
Top = 293
|
Top = 281
|
||||||
Width = 75
|
Width = 75
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'Cancel'
|
Caption = 'Cancel'
|
||||||
ModalResult = 2
|
ModalResult = 2
|
||||||
TabOrder = 1
|
TabOrder = 5
|
||||||
OnClick = bCancelClick
|
OnClick = bCancelClick
|
||||||
end
|
end
|
||||||
object bApply: TButton
|
object bApply: TButton
|
||||||
Left = 172
|
Left = 202
|
||||||
Top = 293
|
Top = 281
|
||||||
Width = 75
|
Width = 75
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'Apply'
|
Caption = 'Apply'
|
||||||
Enabled = False
|
Enabled = False
|
||||||
TabOrder = 2
|
TabOrder = 6
|
||||||
OnClick = bApplyClick
|
OnClick = bApplyClick
|
||||||
end
|
end
|
||||||
object cbSingleSessionPerUser: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 112
|
|
||||||
Width = 130
|
|
||||||
Height = 17
|
|
||||||
Caption = 'Single Session Per User'
|
|
||||||
TabOrder = 3
|
|
||||||
OnClick = cbAllowTSConnectionsClick
|
|
||||||
end
|
|
||||||
object rgNLA: TRadioGroup
|
object rgNLA: TRadioGroup
|
||||||
Left = 8
|
Left = 202
|
||||||
Top = 135
|
|
||||||
Width = 335
|
|
||||||
Height = 73
|
|
||||||
Caption = 'Security Mode'
|
|
||||||
Items.Strings = (
|
|
||||||
'Disable Security (not recommended)'
|
|
||||||
'Default Authentication (compatibility with older clients)'
|
|
||||||
'Network Level Authentication (best)')
|
|
||||||
TabOrder = 4
|
|
||||||
OnClick = cbAllowTSConnectionsClick
|
|
||||||
end
|
|
||||||
object cbAllowTSConnections: TCheckBox
|
|
||||||
Left = 8
|
|
||||||
Top = 89
|
Top = 89
|
||||||
Width = 174
|
Width = 194
|
||||||
Height = 17
|
Height = 73
|
||||||
Caption = 'Enable Remote Desktop Protocol'
|
Caption = 'Authentication Mode'
|
||||||
TabOrder = 5
|
Items.Strings = (
|
||||||
|
'GUI Authentication Only'
|
||||||
|
'Default RDP Authentication'
|
||||||
|
'Network Level Authentication')
|
||||||
|
TabOrder = 2
|
||||||
OnClick = cbAllowTSConnectionsClick
|
OnClick = cbAllowTSConnectionsClick
|
||||||
end
|
end
|
||||||
object rgShadow: TRadioGroup
|
object rgShadow: TRadioGroup
|
||||||
Left = 8
|
Left = 202
|
||||||
Top = 214
|
Top = 168
|
||||||
Width = 335
|
Width = 194
|
||||||
Height = 73
|
Height = 105
|
||||||
Caption = 'Session Shadowing Mode'
|
Caption = 'Session Shadowing Mode'
|
||||||
Items.Strings = (
|
Items.Strings = (
|
||||||
'Disable Shadowing'
|
'Disable Shadowing'
|
||||||
'Shadowing will request user'#39's permission'
|
'Full access with user'#39's permission'
|
||||||
'Shadow sessions immediately')
|
'Full access without permission'
|
||||||
TabOrder = 6
|
'View only with user'#39's permission'
|
||||||
|
'View only without permission')
|
||||||
|
TabOrder = 3
|
||||||
OnClick = cbAllowTSConnectionsClick
|
OnClick = cbAllowTSConnectionsClick
|
||||||
end
|
end
|
||||||
object seRDPPort: TSpinEdit
|
|
||||||
Left = 278
|
|
||||||
Top = 100
|
|
||||||
Width = 62
|
|
||||||
Height = 22
|
|
||||||
MaxValue = 65535
|
|
||||||
MinValue = 0
|
|
||||||
TabOrder = 7
|
|
||||||
Value = 0
|
|
||||||
OnChange = seRDPPortChange
|
|
||||||
end
|
|
||||||
object bLicense: TButton
|
object bLicense: TButton
|
||||||
Left = 253
|
Left = 283
|
||||||
Top = 293
|
Top = 281
|
||||||
Width = 87
|
Width = 87
|
||||||
Height = 25
|
Height = 25
|
||||||
Caption = 'View license...'
|
Caption = 'View license...'
|
||||||
TabOrder = 8
|
TabOrder = 7
|
||||||
OnClick = bLicenseClick
|
OnClick = bLicenseClick
|
||||||
end
|
end
|
||||||
object gbDiag: TGroupBox
|
object gbDiag: TGroupBox
|
||||||
Left = 8
|
Left = 8
|
||||||
Top = 6
|
Top = 6
|
||||||
Width = 335
|
Width = 388
|
||||||
Height = 77
|
Height = 77
|
||||||
Caption = 'Diagnostics'
|
Caption = 'Diagnostics'
|
||||||
TabOrder = 9
|
TabOrder = 0
|
||||||
object lListener: TLabel
|
object lListener: TLabel
|
||||||
Left = 11
|
Left = 11
|
||||||
Top = 55
|
Top = 55
|
||||||
|
@ -155,7 +121,7 @@ object MainForm: TMainForm
|
||||||
Caption = 'Unknown'
|
Caption = 'Unknown'
|
||||||
end
|
end
|
||||||
object lsTSVer: TLabel
|
object lsTSVer: TLabel
|
||||||
Left = 206
|
Left = 226
|
||||||
Top = 36
|
Top = 36
|
||||||
Width = 44
|
Width = 44
|
||||||
Height = 13
|
Height = 13
|
||||||
|
@ -169,14 +135,14 @@ object MainForm: TMainForm
|
||||||
Caption = 'Unknown'
|
Caption = 'Unknown'
|
||||||
end
|
end
|
||||||
object lsWrapVer: TLabel
|
object lsWrapVer: TLabel
|
||||||
Left = 206
|
Left = 226
|
||||||
Top = 17
|
Top = 17
|
||||||
Width = 44
|
Width = 44
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = 'Unknown'
|
Caption = 'Unknown'
|
||||||
end
|
end
|
||||||
object lTSVer: TLabel
|
object lTSVer: TLabel
|
||||||
Left = 182
|
Left = 202
|
||||||
Top = 36
|
Top = 36
|
||||||
Width = 20
|
Width = 20
|
||||||
Height = 13
|
Height = 13
|
||||||
|
@ -190,24 +156,86 @@ object MainForm: TMainForm
|
||||||
Caption = 'Wrapper state:'
|
Caption = 'Wrapper state:'
|
||||||
end
|
end
|
||||||
object lWrapVer: TLabel
|
object lWrapVer: TLabel
|
||||||
Left = 182
|
Left = 202
|
||||||
Top = 17
|
Top = 17
|
||||||
Width = 20
|
Width = 20
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = 'ver.'
|
Caption = 'ver.'
|
||||||
end
|
end
|
||||||
object lsSuppVer: TLabel
|
object lsSuppVer: TLabel
|
||||||
Left = 182
|
Left = 202
|
||||||
Top = 55
|
Top = 55
|
||||||
Width = 70
|
Width = 70
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = '[support level]'
|
Caption = '[support level]'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
object gbGeneral: TGroupBox
|
||||||
|
Left = 8
|
||||||
|
Top = 89
|
||||||
|
Width = 188
|
||||||
|
Height = 184
|
||||||
|
Caption = 'General Settings'
|
||||||
|
TabOrder = 1
|
||||||
|
object lRDPPort: TLabel
|
||||||
|
Left = 8
|
||||||
|
Top = 44
|
||||||
|
Width = 47
|
||||||
|
Height = 13
|
||||||
|
Caption = 'RDP port:'
|
||||||
|
end
|
||||||
|
object cbAllowTSConnections: TCheckBox
|
||||||
|
Left = 8
|
||||||
|
Top = 18
|
||||||
|
Width = 132
|
||||||
|
Height = 17
|
||||||
|
Caption = 'Enable Remote Desktop'
|
||||||
|
TabOrder = 0
|
||||||
|
OnClick = cbAllowTSConnectionsClick
|
||||||
|
end
|
||||||
|
object cbSingleSessionPerUser: TCheckBox
|
||||||
|
Left = 8
|
||||||
|
Top = 69
|
||||||
|
Width = 129
|
||||||
|
Height = 17
|
||||||
|
Caption = 'Single session per user'
|
||||||
|
TabOrder = 2
|
||||||
|
OnClick = cbAllowTSConnectionsClick
|
||||||
|
end
|
||||||
|
object cbHideUsers: TCheckBox
|
||||||
|
Left = 8
|
||||||
|
Top = 92
|
||||||
|
Width = 149
|
||||||
|
Height = 17
|
||||||
|
Caption = 'Hide users on logon screen'
|
||||||
|
TabOrder = 3
|
||||||
|
OnClick = cbAllowTSConnectionsClick
|
||||||
|
end
|
||||||
|
object seRDPPort: TSpinEdit
|
||||||
|
Left = 61
|
||||||
|
Top = 41
|
||||||
|
Width = 62
|
||||||
|
Height = 22
|
||||||
|
MaxValue = 65535
|
||||||
|
MinValue = 0
|
||||||
|
TabOrder = 1
|
||||||
|
Value = 0
|
||||||
|
OnChange = seRDPPortChange
|
||||||
|
end
|
||||||
|
object cbCustomPrg: TCheckBox
|
||||||
|
Left = 8
|
||||||
|
Top = 115
|
||||||
|
Width = 169
|
||||||
|
Height = 17
|
||||||
|
Caption = 'Allow to start custom programs'
|
||||||
|
TabOrder = 4
|
||||||
|
OnClick = cbAllowTSConnectionsClick
|
||||||
|
end
|
||||||
|
end
|
||||||
object Timer: TTimer
|
object Timer: TTimer
|
||||||
Interval = 250
|
Interval = 250
|
||||||
OnTimer = TimerTimer
|
OnTimer = TimerTimer
|
||||||
Left = 280
|
Left = 352
|
||||||
Top = 19
|
Top = 27
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
Copyright 2014 Stas'M Corp.
|
Copyright 2017 Stas'M Corp.
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
@ -47,6 +47,9 @@ type
|
||||||
bLicense: TButton;
|
bLicense: TButton;
|
||||||
gbDiag: TGroupBox;
|
gbDiag: TGroupBox;
|
||||||
lsSuppVer: TLabel;
|
lsSuppVer: TLabel;
|
||||||
|
cbHideUsers: TCheckBox;
|
||||||
|
gbGeneral: TGroupBox;
|
||||||
|
cbCustomPrg: TCheckBox;
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
procedure cbAllowTSConnectionsClick(Sender: TObject);
|
procedure cbAllowTSConnectionsClick(Sender: TObject);
|
||||||
procedure seRDPPortChange(Sender: TObject);
|
procedure seRDPPortChange(Sender: TObject);
|
||||||
|
@ -61,6 +64,7 @@ type
|
||||||
{ Private declarations }
|
{ Private declarations }
|
||||||
public
|
public
|
||||||
{ Public declarations }
|
{ Public declarations }
|
||||||
|
function ExecWait(Cmdline: String): Boolean;
|
||||||
procedure ReadSettings;
|
procedure ReadSettings;
|
||||||
procedure WriteSettings;
|
procedure WriteSettings;
|
||||||
end;
|
end;
|
||||||
|
@ -89,6 +93,7 @@ var
|
||||||
Ready: Boolean = False;
|
Ready: Boolean = False;
|
||||||
Arch: Byte;
|
Arch: Byte;
|
||||||
OldWow64RedirectionValue: LongBool;
|
OldWow64RedirectionValue: LongBool;
|
||||||
|
OldPort: Word;
|
||||||
INI: String;
|
INI: String;
|
||||||
|
|
||||||
function WinStationEnumerateW(hServer: THandle;
|
function WinStationEnumerateW(hServer: THandle;
|
||||||
|
@ -329,6 +334,29 @@ begin
|
||||||
Str.Free;
|
Str.Free;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TMainForm.ExecWait(Cmdline: String): Boolean;
|
||||||
|
var
|
||||||
|
si: STARTUPINFO;
|
||||||
|
pi: PROCESS_INFORMATION;
|
||||||
|
begin
|
||||||
|
Result := False;
|
||||||
|
ZeroMemory(@si, sizeof(si));
|
||||||
|
si.cb := sizeof(si);
|
||||||
|
si.dwFlags := STARTF_USESHOWWINDOW;
|
||||||
|
si.wShowWindow := SW_HIDE;
|
||||||
|
UniqueString(Cmdline);
|
||||||
|
if not CreateProcess(nil, PWideChar(Cmdline), nil, nil, True, 0, nil, nil, si, pi) then begin
|
||||||
|
MessageBox(Handle,
|
||||||
|
PWideChar('CreateProcess error (code: ' + IntToStr(GetLastError) + ').'),
|
||||||
|
'Error', MB_ICONERROR or MB_OK);
|
||||||
|
Exit;
|
||||||
|
end;
|
||||||
|
CloseHandle(pi.hThread);
|
||||||
|
WaitForSingleObject(pi.hProcess, INFINITE);
|
||||||
|
CloseHandle(pi.hProcess);
|
||||||
|
Result := True;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TMainForm.ReadSettings;
|
procedure TMainForm.ReadSettings;
|
||||||
var
|
var
|
||||||
Reg: TRegistry;
|
Reg: TRegistry;
|
||||||
|
@ -346,6 +374,11 @@ begin
|
||||||
cbSingleSessionPerUser.Checked := Reg.ReadBool('fSingleSessionPerUser');
|
cbSingleSessionPerUser.Checked := Reg.ReadBool('fSingleSessionPerUser');
|
||||||
except
|
except
|
||||||
|
|
||||||
|
end;
|
||||||
|
try
|
||||||
|
cbCustomPrg.Checked := Reg.ReadBool('HonorLegacySettings');
|
||||||
|
except
|
||||||
|
|
||||||
end;
|
end;
|
||||||
Reg.CloseKey;
|
Reg.CloseKey;
|
||||||
|
|
||||||
|
@ -356,6 +389,7 @@ begin
|
||||||
except
|
except
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
OldPort := seRDPPort.Value;
|
||||||
SecurityLayer := 0;
|
SecurityLayer := 0;
|
||||||
UserAuthentication := 0;
|
UserAuthentication := 0;
|
||||||
try
|
try
|
||||||
|
@ -374,6 +408,13 @@ begin
|
||||||
rgShadow.ItemIndex := Reg.ReadInteger('Shadow');
|
rgShadow.ItemIndex := Reg.ReadInteger('Shadow');
|
||||||
except
|
except
|
||||||
|
|
||||||
|
end;
|
||||||
|
Reg.CloseKey;
|
||||||
|
Reg.OpenKeyReadOnly('\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System');
|
||||||
|
try
|
||||||
|
cbHideUsers.Checked := Reg.ReadBool('dontdisplaylastusername');
|
||||||
|
except
|
||||||
|
|
||||||
end;
|
end;
|
||||||
Reg.CloseKey;
|
Reg.CloseKey;
|
||||||
Reg.Free;
|
Reg.Free;
|
||||||
|
@ -396,6 +437,11 @@ begin
|
||||||
Reg.WriteBool('fSingleSessionPerUser', cbSingleSessionPerUser.Checked);
|
Reg.WriteBool('fSingleSessionPerUser', cbSingleSessionPerUser.Checked);
|
||||||
except
|
except
|
||||||
|
|
||||||
|
end;
|
||||||
|
try
|
||||||
|
Reg.WriteBool('HonorLegacySettings', cbCustomPrg.Checked);
|
||||||
|
except
|
||||||
|
|
||||||
end;
|
end;
|
||||||
Reg.CloseKey;
|
Reg.CloseKey;
|
||||||
|
|
||||||
|
@ -404,6 +450,11 @@ begin
|
||||||
Reg.WriteInteger('PortNumber', seRDPPort.Value);
|
Reg.WriteInteger('PortNumber', seRDPPort.Value);
|
||||||
except
|
except
|
||||||
|
|
||||||
|
end;
|
||||||
|
if OldPort <> seRDPPort.Value then
|
||||||
|
begin
|
||||||
|
OldPort := seRDPPort.Value;
|
||||||
|
ExecWait('netsh advfirewall firewall set rule name="Remote Desktop" new localport=' + IntToStr(OldPort));
|
||||||
end;
|
end;
|
||||||
case rgNLA.ItemIndex of
|
case rgNLA.ItemIndex of
|
||||||
0: begin
|
0: begin
|
||||||
|
@ -437,6 +488,22 @@ begin
|
||||||
except
|
except
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
Reg.CloseKey;
|
||||||
|
Reg.OpenKey('\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services', True);
|
||||||
|
if rgShadow.ItemIndex >= 0 then begin
|
||||||
|
try
|
||||||
|
Reg.WriteInteger('Shadow', rgShadow.ItemIndex);
|
||||||
|
except
|
||||||
|
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Reg.CloseKey;
|
||||||
|
Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System', True);
|
||||||
|
try
|
||||||
|
Reg.WriteBool('dontdisplaylastusername', cbHideUsers.Checked);
|
||||||
|
except
|
||||||
|
|
||||||
end;
|
end;
|
||||||
Reg.CloseKey;
|
Reg.CloseKey;
|
||||||
Reg.Free;
|
Reg.Free;
|
||||||
|
|
|
@ -20,8 +20,9 @@
|
||||||
<Base>true</Base>
|
<Base>true</Base>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Base)'!=''">
|
<PropertyGroup Condition="'$(Base)'!=''">
|
||||||
|
<DCC_ExeOutput>..\bin\</DCC_ExeOutput>
|
||||||
<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>
|
<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>
|
||||||
<DCC_DependencyCheckOutputName>RDPConf.exe</DCC_DependencyCheckOutputName>
|
<DCC_DependencyCheckOutputName>..\bin\RDPConf.exe</DCC_DependencyCheckOutputName>
|
||||||
<DCC_ImageBase>00400000</DCC_ImageBase>
|
<DCC_ImageBase>00400000</DCC_ImageBase>
|
||||||
<DCC_Platform>x86</DCC_Platform>
|
<DCC_Platform>x86</DCC_Platform>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
@ -47,14 +48,14 @@
|
||||||
<BuildConfiguration Include="Base">
|
<BuildConfiguration Include="Base">
|
||||||
<Key>Base</Key>
|
<Key>Base</Key>
|
||||||
</BuildConfiguration>
|
</BuildConfiguration>
|
||||||
<BuildConfiguration Include="Debug">
|
|
||||||
<Key>Cfg_2</Key>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
</BuildConfiguration>
|
|
||||||
<BuildConfiguration Include="Release">
|
<BuildConfiguration Include="Release">
|
||||||
<Key>Cfg_1</Key>
|
<Key>Cfg_1</Key>
|
||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
</BuildConfiguration>
|
</BuildConfiguration>
|
||||||
|
<BuildConfiguration Include="Debug">
|
||||||
|
<Key>Cfg_2</Key>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
</BuildConfiguration>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
||||||
<ProjectExtensions>
|
<ProjectExtensions>
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -73,7 +73,7 @@ const
|
||||||
var
|
var
|
||||||
INI: INIFile;
|
INI: INIFile;
|
||||||
LogFile: String = '\rdpwrap.txt';
|
LogFile: String = '\rdpwrap.txt';
|
||||||
bw: DWORD;
|
bw: {$if CompilerVersion>=16} NativeUInt {$else} DWORD {$endif};
|
||||||
IsHooked: Boolean = False;
|
IsHooked: Boolean = False;
|
||||||
|
|
||||||
// Unhooked import
|
// Unhooked import
|
||||||
|
|
|
@ -42,14 +42,14 @@
|
||||||
<BuildConfiguration Include="Base">
|
<BuildConfiguration Include="Base">
|
||||||
<Key>Base</Key>
|
<Key>Base</Key>
|
||||||
</BuildConfiguration>
|
</BuildConfiguration>
|
||||||
<BuildConfiguration Include="Debug">
|
|
||||||
<Key>Cfg_2</Key>
|
|
||||||
<CfgParent>Base</CfgParent>
|
|
||||||
</BuildConfiguration>
|
|
||||||
<BuildConfiguration Include="Release">
|
<BuildConfiguration Include="Release">
|
||||||
<Key>Cfg_1</Key>
|
<Key>Cfg_1</Key>
|
||||||
<CfgParent>Base</CfgParent>
|
<CfgParent>Base</CfgParent>
|
||||||
</BuildConfiguration>
|
</BuildConfiguration>
|
||||||
|
<BuildConfiguration Include="Debug">
|
||||||
|
<Key>Cfg_2</Key>
|
||||||
|
<CfgParent>Base</CfgParent>
|
||||||
|
</BuildConfiguration>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
|
||||||
<ProjectExtensions>
|
<ProjectExtensions>
|
||||||
|
|
|
@ -127,7 +127,12 @@ DWORD INI_FILE::GetFileStringFromNum(DWORD StringNumber, char *RetString, DWORD
|
||||||
|
|
||||||
for (DWORD i = FileStringsMap[StringNumber]; i < FileSize; i++)
|
for (DWORD i = FileStringsMap[StringNumber]; i < FileSize; i++)
|
||||||
{
|
{
|
||||||
if ((FileRaw[i] == '\r' && FileRaw[i + 1] == '\n') || i == (FileSize - 1))
|
if (i == (FileSize - 1))
|
||||||
|
{
|
||||||
|
EndStringPos = FileSize;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (FileRaw[i] == '\r' && FileRaw[i + 1] == '\n')
|
||||||
{
|
{
|
||||||
EndStringPos = i;
|
EndStringPos = i;
|
||||||
break;
|
break;
|
||||||
|
|
428
technical.txt
428
technical.txt
|
@ -3,7 +3,12 @@ RDP Wrapper Library project by Stas'M
|
||||||
Terminal Services supported versions
|
Terminal Services supported versions
|
||||||
6.0.X.X (Windows Vista, any) [policy hook only]
|
6.0.X.X (Windows Vista, any) [policy hook only]
|
||||||
6.0.6000.16386 (Windows Vista) [policy hook + extended patch]
|
6.0.6000.16386 (Windows Vista) [policy hook + extended patch]
|
||||||
|
6.0.6000.20723 (Windows Vista with KB944917) [todo]
|
||||||
6.0.6001.18000 (Windows Vista SP1) [policy hook + extended patch]
|
6.0.6001.18000 (Windows Vista SP1) [policy hook + extended patch]
|
||||||
|
6.0.6001.22286 (Windows Vista SP1 with KB958612) [todo]
|
||||||
|
6.0.6001.22357 (Windows Vista SP1 with KB958612 v2) [todo]
|
||||||
|
6.0.6001.22323 (Windows Vista SP1 with KB960742) [todo]
|
||||||
|
6.0.6001.22392 (Windows Vista SP1 with KB968680) [todo]
|
||||||
6.0.6001.22565 (Windows Vista SP1 with KB977541) [todo]
|
6.0.6001.22565 (Windows Vista SP1 with KB977541) [todo]
|
||||||
6.0.6001.22635 (Windows Vista SP1 with KB970911) [todo]
|
6.0.6001.22635 (Windows Vista SP1 with KB970911) [todo]
|
||||||
6.0.6001.22801 (Windows Vista SP1 with KB2381675) [todo]
|
6.0.6001.22801 (Windows Vista SP1 with KB2381675) [todo]
|
||||||
|
@ -12,20 +17,33 @@ Terminal Services supported versions
|
||||||
6.0.6002.22340 (Windows Vista SP2 with KB970911) [todo]
|
6.0.6002.22340 (Windows Vista SP2 with KB970911) [todo]
|
||||||
6.0.6002.22515 (Windows Vista SP2 with KB2381675) [todo]
|
6.0.6002.22515 (Windows Vista SP2 with KB2381675) [todo]
|
||||||
6.0.6002.22641 (Windows Vista SP2 with KB2523307) [todo]
|
6.0.6002.22641 (Windows Vista SP2 with KB2523307) [todo]
|
||||||
|
6.0.6002.22790 (Windows Vista SP2 with KB2672601) [todo]
|
||||||
6.0.6002.19214 (Windows Vista SP2 with KB3003743 GDR) [policy hook + extended patch]
|
6.0.6002.19214 (Windows Vista SP2 with KB3003743 GDR) [policy hook + extended patch]
|
||||||
6.0.6002.23521 (Windows Vista SP2 with KB3003743 LDR) [policy hook + extended patch]
|
6.0.6002.23521 (Windows Vista SP2 with KB3003743 LDR) [policy hook + extended patch]
|
||||||
6.1.X.X (Windows 7, any) [policy hook only]
|
6.1.X.X (Windows 7, any) [policy hook only]
|
||||||
|
6.1.7100.0 (Windows 7 Release Candidate) [todo]
|
||||||
6.1.7600.16385 (Windows 7) [policy hook + extended patch]
|
6.1.7600.16385 (Windows 7) [policy hook + extended patch]
|
||||||
6.1.7600.20890 (Windows 7 with KB2479710) [todo]
|
6.1.7600.20661 (Windows 7 with KB951422) [todo]
|
||||||
6.1.7600.21316 (Windows 7 with KB2750090) [todo]
|
6.1.7600.21085 (Windows 7 with KB951422 v2) [todo]
|
||||||
|
6.1.7600.20621 (Windows 7 with KB979470) [todo]
|
||||||
|
6.1.7600.20890 (Windows 7 with KB2479710) [policy hook + extended patch]
|
||||||
|
6.1.7600.21316 (Windows 7 with KB2750090) [policy hook + extended patch]
|
||||||
|
6.1.7600.21420 (Windows 7 with KB2800789) [todo]
|
||||||
6.1.7601.17514 (Windows 7 SP1) [policy hook + extended patch]
|
6.1.7601.17514 (Windows 7 SP1) [policy hook + extended patch]
|
||||||
6.1.7601.21650 (Windows 7 SP1 with KB2479710) [todo]
|
6.1.7601.21855 (Windows 7 SP1 with KB951422 v2) [todo]
|
||||||
6.1.7601.21866 (Windows 7 SP1 with KB2647409) [todo]
|
6.1.7601.21650 (Windows 7 SP1 with KB2479710) [policy hook + extended patch]
|
||||||
6.1.7601.22104 (Windows 7 SP1 with KB2750090) [todo]
|
6.1.7601.21866 (Windows 7 SP1 with KB2647409) [policy hook + extended patch]
|
||||||
|
6.1.7601.22104 (Windows 7 SP1 with KB2750090) [policy hook + extended patch]
|
||||||
|
6.1.7601.22213 (Windows 7 SP1 with KB2800789) [todo]
|
||||||
|
6.1.7601.22476 (Windows 7 SP1 with KB2870165) [todo]
|
||||||
|
6.1.7601.22435 (Windows 7 SP1 with KB2878424) [todo]
|
||||||
|
6.1.7601.22477 (Windows 7 SP1 with KB2896256) [todo]
|
||||||
6.1.7601.18540 (Windows 7 SP1 with KB2984972 GDR) [policy hook + extended patch]
|
6.1.7601.18540 (Windows 7 SP1 with KB2984972 GDR) [policy hook + extended patch]
|
||||||
6.1.7601.22750 (Windows 7 SP1 with KB2984972 LDR) [policy hook + extended patch]
|
6.1.7601.22750 (Windows 7 SP1 with KB2984972 LDR) [policy hook + extended patch]
|
||||||
6.1.7601.18637 (Windows 7 SP1 with KB3003743 GDR) [policy hook + extended patch]
|
6.1.7601.18637 (Windows 7 SP1 with KB3003743 GDR) [policy hook + extended patch]
|
||||||
6.1.7601.22843 (Windows 7 SP1 with KB3003743 LDR) [policy hook + extended patch]
|
6.1.7601.22843 (Windows 7 SP1 with KB3003743 LDR) [policy hook + extended patch]
|
||||||
|
6.1.7601.23403 (Windows 7 SP1 with KB3125574) [policy hook + extended patch]
|
||||||
|
6.1.7601.24234 (Windows 7 SP1 with KB4462923) [policy hook + extended patch]
|
||||||
6.2.8102.0 (Windows 8 Developer Preview) [policy hook + extended patch]
|
6.2.8102.0 (Windows 8 Developer Preview) [policy hook + extended patch]
|
||||||
6.2.8250.0 (Windows 8 Consumer Preview) [policy hook + extended patch]
|
6.2.8250.0 (Windows 8 Consumer Preview) [policy hook + extended patch]
|
||||||
6.2.8400.0 (Windows 8 Release Preview) [policy hook + extended patch]
|
6.2.8400.0 (Windows 8 Release Preview) [policy hook + extended patch]
|
||||||
|
@ -36,15 +54,405 @@ Terminal Services supported versions
|
||||||
6.3.9600.16384 (Windows 8.1) [init hook + extended patch]
|
6.3.9600.16384 (Windows 8.1) [init hook + extended patch]
|
||||||
6.3.9600.17095 (Windows 8.1 with KB2959626) [init hook + extended patch]
|
6.3.9600.17095 (Windows 8.1 with KB2959626) [init hook + extended patch]
|
||||||
6.3.9600.17415 (Windows 8.1 with KB3000850) [init hook + extended patch]
|
6.3.9600.17415 (Windows 8.1 with KB3000850) [init hook + extended patch]
|
||||||
|
6.3.9600.18692 (Windows 8.1 with KB4022720) [init hook + extended patch]
|
||||||
|
6.3.9600.18708 (Windows 8.1 with KB4025335) [init hook + extended patch]
|
||||||
|
6.3.9600.18928 (Windows 8.1 with KB4088876) [init hook + extended patch]
|
||||||
|
6.3.9600.19093 (Windows 8.1 with KB4343891) [init hook + extended patch]
|
||||||
6.4.9841.0 (Windows 10 Technical Preview) [init hook + extended patch]
|
6.4.9841.0 (Windows 10 Technical Preview) [init hook + extended patch]
|
||||||
6.4.9860.0 (Windows 10 Technical Preview Update 1) [init hook + extended patch]
|
6.4.9860.0 (Windows 10 Technical Preview UP1) [init hook + extended patch]
|
||||||
6.4.9879.0 (Windows 10 Technical Preview Update 2) [init hook + extended patch]
|
6.4.9879.0 (Windows 10 Technical Preview UP2) [init hook + extended patch]
|
||||||
|
10.0.9926.0 (Windows 10 Pro Technical Preview) [init hook + extended patch]
|
||||||
Known failures
|
10.0.10041.0 (Windows 10 Pro Technical Preview UP1) [init hook + extended patch]
|
||||||
6.0.6000.16386 (Windows Vista RTM x86, crashes on logon attempt)
|
10.0.10049.0 (Windows 10 Pro Technical Preview UP2) [todo]
|
||||||
|
10.0.10061.0 (Windows 10 Pro Technical Preview UP3) [todo]
|
||||||
|
10.0.10240.16384 (Windows 10 RTM) [init hook + extended patch]
|
||||||
|
10.0.10525.0 (Windows 10 th2_release.150812-1658) [todo]
|
||||||
|
10.0.10532.0 (Windows 10 th2_release.150822-1406) [todo]
|
||||||
|
10.0.10547.0 (Windows 10 th2_release.150913-1511) [todo]
|
||||||
|
10.0.10586.0 (Windows 10 th2_release.151029-1700) [init hook + extended patch]
|
||||||
|
10.0.10586.589 (Windows 10 th2_release.160906-1759) [init hook + extended patch]
|
||||||
|
10.0.11082.1000 (Windows 10 rs1_release.151210-2021) [init hook + extended patch]
|
||||||
|
10.0.11102.1000 (Windows 10 rs1_release.160113-1800) [init hook + extended patch]
|
||||||
|
10.0.14251.1000 (Windows 10 rs1_release.160124-1059) [init hook + extended patch]
|
||||||
|
10.0.14271.1000 (Windows 10 rs1_release.160218-2310) [init hook + extended patch]
|
||||||
|
10.0.14279.1000 (Windows 10 rs1_release.160229-1700) [init hook + extended patch]
|
||||||
|
10.0.14295.1000 (Windows 10 rs1_release.160318-1628) [init hook + extended patch]
|
||||||
|
10.0.14300.1000 (Windows Server 2016 Technical Preview 5) [init hook + extended patch]
|
||||||
|
10.0.14316.1000 (Windows 10 rs1_release.160402-2227) [init hook + extended patch]
|
||||||
|
10.0.14328.1000 (Windows 10 rs1_release.160418-1609) [init hook + extended patch]
|
||||||
|
10.0.14332.1001 (Windows 10 rs1_release.160422-1940) [init hook + extended patch]
|
||||||
|
10.0.14342.1000 (Windows 10 rs1_release.160506-1708) [init hook + extended patch]
|
||||||
|
10.0.14352.1002 (Windows 10 rs1_release.160522-1930) [init hook + extended patch]
|
||||||
|
10.0.14366.0 (Windows 10 rs1_release.160610-1700) [init hook + extended patch]
|
||||||
|
10.0.14367.0 (Windows 10 rs1_release.160613-1700) [init hook + extended patch]
|
||||||
|
10.0.14372.0 (Windows 10 rs1_release.160620-2342) [init hook + extended patch]
|
||||||
|
10.0.14379.0 (Windows 10 rs1_release.160627-1607) [init hook + extended patch]
|
||||||
|
10.0.14383.0 (Windows 10 rs1_release.160701-1839) [init hook + extended patch]
|
||||||
|
10.0.14385.0 (Windows 10 rs1_release.160706-1700) [init hook + extended patch]
|
||||||
|
10.0.14388.0 (Windows 10 rs1_release.160709-1635) [init hook + extended patch]
|
||||||
|
10.0.14393.0 (Windows 10 rs1_release.160715-1616) [init hook + extended patch]
|
||||||
|
10.0.14393.1198 (Windows 10 rs1_release_sec.170427-1353) [init hook + extended patch]
|
||||||
|
10.0.14393.1737 (Windows 10 rs1_release_inmarket.170914-1249) [init hook + extended patch]
|
||||||
|
10.0.14393.2457 (Windows 10 rs1_release_inmarket.180822-1743) [init hook + extended patch]
|
||||||
|
10.0.14901.1000 (Windows 10 rs_prerelease.160805-1700) [init hook + extended patch]
|
||||||
|
10.0.14905.1000 (Windows 10 rs_prerelease.160811-1739) [init hook + extended patch]
|
||||||
|
10.0.14915.1000 (Windows 10 rs_prerelease.160826-1902) [init hook + extended patch]
|
||||||
|
10.0.14926.1000 (Windows 10 rs_prerelease.160910-1529) [init hook + extended patch]
|
||||||
|
10.0.14931.1000 (Windows 10 rs_prerelease.160916-1700) [init hook + extended patch]
|
||||||
|
10.0.14936.1000 (Windows 10 rs_prerelease.160923-1700) [init hook + extended patch]
|
||||||
|
10.0.14942.1000 (Windows 10 rs_prerelease.161003-1929) [init hook + extended patch]
|
||||||
|
10.0.14946.1000 (Windows 10 rs_prerelease.161007-1700) [init hook + extended patch]
|
||||||
|
10.0.14951.1000 (Windows 10 rs_prerelease.161014-1700) [init hook + extended patch]
|
||||||
|
10.0.14955.1000 (Windows 10 rs_prerelease.161020-1700) [init hook + extended patch]
|
||||||
|
10.0.14959.1000 (Windows 10 rs_prerelease.161026-1700) [init hook + extended patch]
|
||||||
|
10.0.14965.1001 (Windows 10 rs_prerelease.161104-1700) [init hook + extended patch]
|
||||||
|
10.0.14971.1000 (Windows 10 rs_prerelease.161111-1700) [init hook + extended patch]
|
||||||
|
10.0.14986.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.14997.1001 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.15002.1001 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.15007.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.15014.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.15019.1000 (Windows 10 rs_prerelease.170121-1513) [init hook + extended patch]
|
||||||
|
10.0.15025.1000 (Windows 10 rs_prerelease.170127-1750) [init hook + extended patch]
|
||||||
|
10.0.15031.0 (Windows 10 rs2_release.170204-1546) [init hook + extended patch]
|
||||||
|
10.0.15042.0 (Windows 10 rs2_release.170219-2329) [init hook + extended patch]
|
||||||
|
10.0.15046.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.15048.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.15055.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.15058.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.15061.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.15063.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.15063.296 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.15063.994 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.15063.1155 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16179.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16184.1001 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16199.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16215.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16232.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16237.1001 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16241.1001 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16251.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16251.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16257.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16257.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16273.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16275.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16278.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16281.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16288.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16291.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16294.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16296.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16299.0 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16299.15 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16353.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.16362.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.17004.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.17017.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.17025.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.17035.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.17040.1000 (Windows 10 WinBuild.160101.0800) [todo]
|
||||||
|
10.0.17046.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.17063.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.17074.1002 (Windows 10 WinBuild.160101.0800) [todo]
|
||||||
|
10.0.17083.1000 (Windows 10 WinBuild.160101.0800) [todo]
|
||||||
|
10.0.17115.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.17128.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.17133.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.17134.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.17723.1000 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
10.0.17763.1 (Windows 10 WinBuild.160101.0800) [init hook + extended patch]
|
||||||
|
|
||||||
Source code changelog (rdpwrap library):
|
Source code changelog (rdpwrap library):
|
||||||
|
|
||||||
|
2018.10.10 :
|
||||||
|
- added support for termsrv.dll 6.1.7601.24234 x86
|
||||||
|
|
||||||
|
2018.10.04 :
|
||||||
|
- added support for termsrv.dll 10.0.14393.2457 x86
|
||||||
|
|
||||||
|
2018.10.03 :
|
||||||
|
- added support for termsrv.dll 6.1.7601.24234 x64
|
||||||
|
- added support for termsrv.dll 10.0.15063.994 x64
|
||||||
|
- added support for termsrv.dll 10.0.17723.1000 x64
|
||||||
|
- added support for termsrv.dll 10.0.17763.1
|
||||||
|
|
||||||
|
2018.09.10 :
|
||||||
|
- added support for termsrv.dll 6.1.7600.20890
|
||||||
|
- added support for termsrv.dll 6.1.7600.21316
|
||||||
|
- added support for termsrv.dll 6.1.7601.21650
|
||||||
|
- added support for termsrv.dll 6.1.7601.21866
|
||||||
|
- added support for termsrv.dll 6.1.7601.22104
|
||||||
|
- added support for termsrv.dll 6.3.9600.19093
|
||||||
|
- added support for termsrv.dll 10.0.14393.2457 x64
|
||||||
|
- added support for termsrv.dll 10.0.15063.1155 x64
|
||||||
|
|
||||||
|
2018.05.16 :
|
||||||
|
- added support for termsrv.dll 10.0.17115.1
|
||||||
|
- added support for termsrv.dll 10.0.17128.1
|
||||||
|
- added support for termsrv.dll 10.0.17133.1
|
||||||
|
- added support for termsrv.dll 10.0.17134.1
|
||||||
|
|
||||||
|
2018.03.26 :
|
||||||
|
- added support for termsrv.dll 6.3.9600.18928 by 1nd1g0
|
||||||
|
|
||||||
|
2017.12.27 :
|
||||||
|
- added support for termsrv.dll 10.0.17017.1000
|
||||||
|
- added support for termsrv.dll 10.0.17025.1000
|
||||||
|
- added support for termsrv.dll 10.0.17035.1000
|
||||||
|
- added support for termsrv.dll 10.0.17046.1000
|
||||||
|
- added support for termsrv.dll 10.0.17063.1000
|
||||||
|
|
||||||
|
2017.10.13 :
|
||||||
|
- added support for termsrv.dll 10.0.14393.1737
|
||||||
|
- added support for termsrv.dll 10.0.16299.0
|
||||||
|
- added support for termsrv.dll 10.0.16299.15
|
||||||
|
- added support for termsrv.dll 10.0.17004.1000
|
||||||
|
|
||||||
|
2017.09.24 :
|
||||||
|
- added support for termsrv.dll 10.0.16291.0
|
||||||
|
- added support for termsrv.dll 10.0.16294.1
|
||||||
|
- added support for termsrv.dll 10.0.16296.0
|
||||||
|
- added support for termsrv.dll 10.0.16362.1000
|
||||||
|
|
||||||
|
2017.09.15 :
|
||||||
|
- added support for termsrv.dll 10.0.16288.1
|
||||||
|
|
||||||
|
2017.09.06 :
|
||||||
|
- added support for termsrv.dll 10.0.16273.1000
|
||||||
|
- added support for termsrv.dll 10.0.16275.1000
|
||||||
|
- added support for termsrv.dll 10.0.16278.1000
|
||||||
|
- added support for termsrv.dll 10.0.16281.1000
|
||||||
|
- added support for termsrv.dll 10.0.16353.1000
|
||||||
|
|
||||||
|
2017.08.04 :
|
||||||
|
- added support for termsrv.dll 10.0.16257.1
|
||||||
|
- added support for termsrv.dll 10.0.16257.1000
|
||||||
|
|
||||||
|
2017.07.30 :
|
||||||
|
- added support for termsrv.dll 6.3.9600.18708
|
||||||
|
- added support for termsrv.dll 10.0.16232.1000
|
||||||
|
- added support for termsrv.dll 10.0.16237.1001
|
||||||
|
- added support for termsrv.dll 10.0.16241.1001
|
||||||
|
- added support for termsrv.dll 10.0.16251.0
|
||||||
|
- added support for termsrv.dll 10.0.16251.1000
|
||||||
|
|
||||||
|
2017.06.29 :
|
||||||
|
- added support for termsrv.dll 6.3.9600.18692
|
||||||
|
|
||||||
|
2017.06.10 :
|
||||||
|
- added support for termsrv.dll 10.0.15063.296
|
||||||
|
- added support for termsrv.dll 10.0.16215.1000
|
||||||
|
|
||||||
|
2017.05.29 :
|
||||||
|
- added support for termsrv.dll 10.0.16199.1000
|
||||||
|
|
||||||
|
2017.05.17 :
|
||||||
|
- added support for termsrv.dll 10.0.14997.1001 x64
|
||||||
|
|
||||||
|
2017.05.12 :
|
||||||
|
- added support for termsrv.dll 10.0.14393.1198 x86
|
||||||
|
|
||||||
|
2017.05.03 :
|
||||||
|
- added support for termsrv.dll 10.0.16179.1000
|
||||||
|
- added support for termsrv.dll 10.0.16184.1001
|
||||||
|
|
||||||
|
2017.03.22 :
|
||||||
|
- added support for termsrv.dll 10.0.15063.0
|
||||||
|
|
||||||
|
2017.03.21 :
|
||||||
|
- added support for termsrv.dll 10.0.15061.0
|
||||||
|
|
||||||
|
2017.03.16 :
|
||||||
|
- added support for termsrv.dll 10.0.15058.0
|
||||||
|
|
||||||
|
2017.03.14 :
|
||||||
|
- added support for termsrv.dll 10.0.15055.0
|
||||||
|
|
||||||
|
2017.03.05 :
|
||||||
|
- added support for termsrv.dll 10.0.15048.0
|
||||||
|
|
||||||
|
2017.03.02 :
|
||||||
|
- added support for termsrv.dll 10.0.15046.0
|
||||||
|
|
||||||
|
2017.03.01 :
|
||||||
|
- added support for termsrv.dll 10.0.15031.0
|
||||||
|
- added support for termsrv.dll 10.0.15042.0
|
||||||
|
|
||||||
|
2017.02.03 :
|
||||||
|
- added support for termsrv.dll 10.0.15025.1000 x64
|
||||||
|
|
||||||
|
2017.01.28 :
|
||||||
|
- added support for termsrv.dll 10.0.15019.1000
|
||||||
|
|
||||||
|
2017.01.21 :
|
||||||
|
- added support for termsrv.dll 10.0.15014.1000
|
||||||
|
|
||||||
|
2017.01.15 :
|
||||||
|
- added support for termsrv.dll 10.0.15007.1000
|
||||||
|
|
||||||
|
2017.01.12 :
|
||||||
|
- added support for termsrv.dll 10.0.15002.1001
|
||||||
|
|
||||||
|
2016.12.23 :
|
||||||
|
- added support for termsrv.dll 10.0.14986.1000
|
||||||
|
|
||||||
|
2016.11.19 :
|
||||||
|
- added support for termsrv.dll 10.0.14959.1000
|
||||||
|
- added support for termsrv.dll 10.0.14965.1001
|
||||||
|
- added support for termsrv.dll 10.0.14971.1000
|
||||||
|
|
||||||
|
2016.10.28 :
|
||||||
|
- added support for termsrv.dll 10.0.14955.1000
|
||||||
|
|
||||||
|
2016.10.21 :
|
||||||
|
- added support for termsrv.dll 10.0.14951.1000
|
||||||
|
|
||||||
|
2016.10.19 :
|
||||||
|
- added support for termsrv.dll 10.0.14946.1000
|
||||||
|
|
||||||
|
2016.10.08 :
|
||||||
|
- added support for termsrv.dll 10.0.14942.1000
|
||||||
|
|
||||||
|
2016.09.30 :
|
||||||
|
- added support for termsrv.dll 10.0.14936.1000
|
||||||
|
|
||||||
|
2016.09.27 :
|
||||||
|
- added support for termsrv.dll 10.0.14931.1000
|
||||||
|
|
||||||
|
2016.09.15 :
|
||||||
|
- added support for termsrv.dll 10.0.14926.1000
|
||||||
|
|
||||||
|
2016.09.14 :
|
||||||
|
- added support for termsrv.dll 10.0.10586.589
|
||||||
|
|
||||||
|
2016.09.03 :
|
||||||
|
- added support for termsrv.dll 10.0.14915.1000
|
||||||
|
|
||||||
|
2016.08.28 :
|
||||||
|
- added support for termsrv.dll 6.1.7601.23403
|
||||||
|
- added support for termsrv.dll 10.0.14901.1000
|
||||||
|
- added support for termsrv.dll 10.0.14905.1000
|
||||||
|
|
||||||
|
2016.08.12 :
|
||||||
|
- added support for termsrv.dll 10.0.14385.0
|
||||||
|
|
||||||
|
2016.08.01 :
|
||||||
|
- preparing the release
|
||||||
|
|
||||||
|
2016.07.23 :
|
||||||
|
- added online install mode to installer
|
||||||
|
- added feature to keep settings on uninstall
|
||||||
|
- fixed update firewall rule on port change in config tool
|
||||||
|
- added feature to hide users on logon
|
||||||
|
|
||||||
|
2016.07.22 :
|
||||||
|
- added support for termsrv.dll 10.0.14393.0
|
||||||
|
|
||||||
|
2016.07.15 :
|
||||||
|
- added support for termsrv.dll 10.0.14383.0
|
||||||
|
- added support for termsrv.dll 10.0.14388.0
|
||||||
|
|
||||||
|
2016.07.06 :
|
||||||
|
- added support for termsrv.dll 10.0.14379.0
|
||||||
|
|
||||||
|
2016.06.27 :
|
||||||
|
- added support for termsrv.dll 10.0.14372.0 x86
|
||||||
|
|
||||||
|
2016.06.26 :
|
||||||
|
- added support for termsrv.dll 10.0.14372.0 x64 by kbmorris
|
||||||
|
|
||||||
|
2016.06.17 :
|
||||||
|
- fixed issue with termsrv.dll 10.0.14352.1002
|
||||||
|
- added support for termsrv.dll 10.0.14366.0
|
||||||
|
- added support for termsrv.dll 10.0.14367.0
|
||||||
|
|
||||||
|
2016.05.30 :
|
||||||
|
- added support for termsrv.dll 10.0.14352.1002
|
||||||
|
|
||||||
|
2016.05.14 :
|
||||||
|
- added support for termsrv.dll 10.0.14342.1000
|
||||||
|
|
||||||
|
2016.05.08 :
|
||||||
|
- added support for termsrv.dll 10.0.14300.1000 x64
|
||||||
|
- added support for termsrv.dll 10.0.14328.1000
|
||||||
|
|
||||||
|
2016.04.29 :
|
||||||
|
- added support for termsrv.dll 10.0.14332.1001 by maxpiva
|
||||||
|
|
||||||
|
2016.04.14 :
|
||||||
|
- added support for termsrv.dll 10.0.14316.1000
|
||||||
|
|
||||||
|
2016.04.06 :
|
||||||
|
- added support for termsrv.dll 10.0.14295.1000
|
||||||
|
|
||||||
|
2016.03.07 :
|
||||||
|
- added experimental codes for ARMv7 architecture (see rdpwrap-arm-kb.ini)
|
||||||
|
- Windows RT / termsrv.dll 6.2.9200.16384
|
||||||
|
- Windows RT 8.1 / termsrv.dll 6.3.9600.16384
|
||||||
|
- Windows RT 8.1 / termsrv.dll 6.3.9600.17095
|
||||||
|
|
||||||
|
2016.03.06 :
|
||||||
|
- added support for termsrv.dll 10.0.14279.1000
|
||||||
|
|
||||||
|
2016.02.29 :
|
||||||
|
- added support for termsrv.dll 10.0.14271.1000
|
||||||
|
|
||||||
|
2016.01.28 :
|
||||||
|
- added support for termsrv.dll 10.0.14251.1000
|
||||||
|
|
||||||
|
2016.01.26 :
|
||||||
|
- added support for termsrv.dll 10.0.11102.1000
|
||||||
|
|
||||||
|
2016.01.15 :
|
||||||
|
- updated messages in the installer
|
||||||
|
- added support for termsrv.dll 10.0.11082.1000
|
||||||
|
|
||||||
|
2015.11.14 :
|
||||||
|
- added support for termsrv.dll 10.0.10586.0
|
||||||
|
|
||||||
|
2015.08.11 :
|
||||||
|
- embed new rdpclip versions in the installer (for NT 6.0 and 6.1)
|
||||||
|
- preparing the release
|
||||||
|
|
||||||
|
2015.08.07 :
|
||||||
|
- added INI update feature to installer
|
||||||
|
|
||||||
|
2015.07.30 :
|
||||||
|
- fixed issue with Windows 10 Home x86 (wrong LocalOnly offset was specified in INI file)
|
||||||
|
|
||||||
|
2015.07.17 :
|
||||||
|
- added support for termsrv.dll 10.0.10240.16384
|
||||||
|
- added HOW TO hints to KB (so other reverse engineers can do this hard work more easier)
|
||||||
|
|
||||||
|
2015.07.16 :
|
||||||
|
- moved all comments from INI file to Knowledge Base text file
|
||||||
|
- now INI file have smaller size
|
||||||
|
- updated RDP checker: changed IP Address to 127.0.0.2 (sometimes client doesn't want to connect .1), updated text message
|
||||||
|
- updated RDP config: list all possible shadowing modes, also write group policy
|
||||||
|
- updated installer: added workaround for 1056 error
|
||||||
|
- updated copyright years in source code
|
||||||
|
- obtained files from build 10.0.10240.16384
|
||||||
|
- researching Windows 10 RTM
|
||||||
|
|
||||||
|
2015.03.23 :
|
||||||
|
- researching Windows 10 Pro Technical Preview UP1
|
||||||
|
- added support for termsrv.dll 10.0.10041.0
|
||||||
|
|
||||||
|
2015.03.20 :
|
||||||
|
- new build 10.0.10041.0 was released, obtaining files...
|
||||||
|
|
||||||
|
2015.01.26 :
|
||||||
|
- researching Windows 10 Pro Technical Preview (10.0.9926.0 x86)
|
||||||
|
- added support for termsrv.dll 10.0.9926.0 (x86)
|
||||||
|
|
||||||
|
2015.01.22 :
|
||||||
|
- v-yadli contributed offsets for version 10.0.9926.0 (x64)
|
||||||
|
|
||||||
|
2014.12.13 :
|
||||||
|
- added more policy values to INI file
|
||||||
|
|
||||||
2014.12.10 :
|
2014.12.10 :
|
||||||
- C++ version seems to work well now!
|
- C++ version seems to work well now!
|
||||||
- added support for termsrv.dll 6.4.9879.0
|
- added support for termsrv.dll 6.4.9879.0
|
||||||
|
|
Loading…
Reference in New Issue