Compare commits

...

163 Commits
v1.5 ... master

Author SHA1 Message Date
Kevin Smyth a5c64a4331 IniFile: don't lose last character if the file doesn't end with \r\n 2018-12-20 18:50:35 +03:00
Stas'M 326551985f
INI: Add support for new builds (fix #586)
- 6.1.7601.24234 x86
2018-10-10 15:57:37 +03:00
Stas'M 2eef50f254
INI: Add support for new builds (#542)
10.0.14393.2457 x86
2018-10-05 01:45:44 +03:00
Stas'M dc3b07f1fe
README: Add Telegram chat link 2018-10-04 15:31:04 +03:00
Stas'M 0c76513a27
INI: Add support for new builds
- 6.1.7601.24234 (fix #572)
- 10.0.15063.994 (fix #455)
- 10.0.17723.1000 (fix #537)
- 10.0.17763.1 (fix #578)
2018-10-03 23:59:34 +03:00
NULL b3e1c77321 INI: Add support for new builds (#568)
- 6.1.7600.20890 (fix #563)
- 6.1.7600.21316 (fix #564)
- 6.1.7601.21650 (fix #565)
- 6.1.7601.21866 (fix #566)
- 6.1.7601.22104 (fix #567)
- 6.3.9600.19093 (fix #549)
- 10.0.14393.2457 (fix #542)
- 10.0.15063.1155 (fix #506)
2018-10-03 21:47:48 +03:00
Stas'M 65b19543f4 INI: Add support for new builds
10.0.17115.1 (fix #424)
2018-05-16 19:26:57 +03:00
Stas'M 9b2a50bfb8 INI: Fix bug in DefPolicy patch (fix #486) 2018-05-16 18:55:16 +03:00
Stas'M 2df3a74958 Installer: Grant access to system and services (fix #391) 2018-05-16 17:14:17 +03:00
Stas'M 560c5a7b45 INI: Add support for new builds
10.0.17128.1
10.0.17133.1 (fix #442)
10.0.17134.1 (fix #456)
2018-05-16 12:40:21 +03:00
1nd1g0 7dc8817de9 INI: Add support for new builds
6.3.9600.18928 (fix #418)
2018-05-16 09:59:55 +03:00
Jim Yang 56915ccf5b Allow UDP 3389 at firewall configuration 2018-04-15 13:54:26 +03:00
Stanislav Motylkov a3cd8ca630
README: Update changelog for v1.6.2 2017-12-28 00:04:36 +03:00
Stas'M ba75e65dac MSI: Move WiX script to res directory and update it 2017-12-27 23:30:30 +03:00
Stas'M 5ad550638e Config: Update version and copyright year 2017-12-27 21:31:48 +03:00
Stas'M 63bf27f0a9 Config: Add HonorLegacySettings option 2017-12-27 21:28:44 +03:00
Stas'M 1459036d05 Installer: Update version 2017-12-27 20:20:28 +03:00
Stas'M 1223417ca1 Installer: Extract rfxvmt.dll if missing (#194) 2017-12-27 20:17:28 +03:00
Stas'M 180f41197a Installer: Allow to install INI from current directory (fix #300) 2017-12-27 17:12:28 +03:00
Stas'M 51b3421a65 INI: Add support for new builds
10.0.17017.1000 (fix #323)
10.0.17025.1000 (fix #339)
10.0.17035.1000 (fix #348)
10.0.17046.1000 (fix #357)
10.0.17063.1000 (fix #375)
2017-12-27 16:34:10 +03:00
Stas'M ebdd795d17 INI: Add support for new builds
- 10.0.14393.1737 x86/x64 (fix #322)
- 10.0.16299.0 x86/x64
- 10.0.16299.15 x86/x64 (fix #316)
- 10.0.17004.1000 x86/x64
2017-10-13 18:25:29 +03:00
Stas'M 96fdc27be5 README: Addendum for previous commit 2017-10-07 15:25:08 +03:00
Stas'M 60eb9a6bc4 README: Add link to the workaround for the Creators Update
Merge pull request #321 from markyi370/patch-1
2017-10-07 15:19:56 +03:00
Mark Yisri 476e277ad3 Update README.md with workaround
Add link to discussion about workaround for the Creators Update.
2017-10-07 08:16:14 -04:00
binarymaster 8ace817d8d INI: Add support for new builds
- 10.0.16291.0 x86/x64 (fix #312)
- 10.0.16294.1 x86/x64 (fix #313)
- 10.0.16296.0 x86/x64
- 10.0.16362.1000 x86/x64 (fix #311)
2017-09-24 22:08:01 +03:00
binarymaster 073c1282db INI: Add support for new builds (fix #309)
10.0.16288.1 x86/x64
2017-09-15 17:43:15 +03:00
binarymaster b50f2dec59 INI: Add support for new builds (fix #307)
10.0.16273.1000 x86/x64
10.0.16275.1000 x86/x64
10.0.16278.1000 x86/x64
10.0.16281.1000 x86/x64
10.0.16353.1000 x86/x64
2017-09-06 21:21:10 +03:00
binarymaster 1c5b9c9e71 INI: Add support for new builds
10.0.16257.1000 x86/x64
2017-08-04 23:01:57 +03:00
binarymaster 37d1872aa7 INI: Add support for new builds (fix #292)
10.0.16257.1 x86/x64
2017-08-04 22:46:48 +03:00
binarymaster 13fca00206 INI: Add support for new builds
10.0.16241.1001 x86/x64
2017-07-30 22:55:55 +03:00
binarymaster 72f3d6ea07 INI: Add support for new builds (fix #275)
10.0.16232.1000 x86/x64
2017-07-30 22:55:55 +03:00
binarymaster 8a3a20c6cb INI: Add support for new builds (fix #279)
10.0.16237.1001 x86/x64
2017-07-30 22:55:55 +03:00
binarymaster 733ed36f70 INI: Add support for new builds
10.0.16251.1000 x86/x64
2017-07-30 22:55:55 +03:00
binarymaster 3e7c0ebfd2 INI: Add support for new builds (fix #286)
10.0.16251.0 x86/x64
2017-07-30 22:55:54 +03:00
binarymaster 2ba5baa34f INI: Add support for new builds (fix #285)
6.3.9600.18708 x86/x64
2017-07-30 22:55:54 +03:00
Stas'M dc9ff8910b Merge pull request #263 from galeksandrp/install
Add WiX Toolset script for MSI installation package
2017-07-10 09:53:42 +03:00
binarymaster f26edcb6f8 INI: Add support for new builds (fix #269)
6.3.9600.18692 x86/x64
2017-06-29 23:44:44 +03:00
Alexander Georgievskiy 7ef04f27c2 Create RDPWInst.wxs 2017-06-13 23:46:19 +03:00
binarymaster 7b809a887d INI: Add support for new builds (fix #261)
10.0.16215.1000 x86/x64
2017-06-10 18:16:01 +03:00
binarymaster f71684aa26 INI: Add support for new builds (fix #258)
10.0.15063.296 x86/x64
2017-06-10 15:42:35 +03:00
Alexander Georgievskiy f0e21b8802 Add MSI installer fixes #14 2017-06-01 12:14:28 +03:00
binarymaster 49c9cbf379 INI: Add support for new builds (fix #254)
10.0.16199.1000 x86/x64
2017-05-29 13:30:07 +03:00
binarymaster 85f2b39568 INI: Add support for new builds (relates to #194)
10.0.14997.1001 (x64 only)
2017-05-17 15:01:07 +03:00
binarymaster 890006de99 INI: Add support for new builds (fix #245)
10.0.14393.1198 (x86 only)
2017-05-12 21:10:38 +03:00
binarymaster 8b2e24cecf INI: Add support for new builds
- 10.0.16179.1000 (x86/x64)
- 10.0.16184.1001 (x86/x64)
2017-05-03 23:27:12 +03:00
binarymaster 49770e6bb8 INI: Add support for new builds (fix #224)
10.0.15063.0 x86/x64
2017-03-22 20:38:58 +03:00
binarymaster baddaab28e INI: Add support for new builds (fix #222)
10.0.15061.0 x86/x64
2017-03-21 21:08:12 +03:00
Stas'M ea1c0dd97d README: Add known issue (fix #215) 2017-03-20 11:48:40 +03:00
Stas'M 2ea06e79e7 README: Move known issues higher 2017-03-20 11:25:19 +03:00
Stas'M 4f85c52a45 README: Add RemoteFX known issue 2017-03-20 11:22:56 +03:00
Stas'M 51dd6cd440 README: Fix badge image link 2017-03-20 11:08:23 +03:00
binarymaster df2b23e2c0 INI: Add support for new builds (fix #219)
10.0.15058.0 x86/x64
2017-03-16 20:18:44 +03:00
binarymaster 7d31342dcf INI: Add support for new builds (fix #218)
10.0.15055.0 x86/x64
2017-03-14 23:41:47 +03:00
binarymaster fe3a61fa24 INI: Add support for new builds (fix #212)
10.0.15048.0 x86/x64
2017-03-05 00:39:53 +03:00
binarymaster ee1fa16bf5 INI: Add support for new builds (fix #211)
10.0.15046.0 x86/x64
2017-03-02 20:36:12 +03:00
binarymaster acaf2b2f72 INI: Add support for new builds (fix #207)
10.0.15031.0 x86/x64
10.0.15042.0 x86/x64
2017-03-01 21:21:49 +03:00
binarymaster 1e93d3ca20 INI: Add support for new builds (fix #204)
10.0.15025.1000 (x64 only)
2017-02-03 01:53:42 +03:00
binarymaster 0f0fbeb71f INI: Add support for new builds (fix #203)
10.0.15019.1000 x86/x64
2017-01-28 21:17:03 +03:00
Stas'M 9b666a3961 README: Web archive link for Andrew Block 2017-01-25 15:15:39 +03:00
binarymaster 9699e08d1a INI: Add support for new builds (fix #199)
10.0.15014.1000 x86/x64
2017-01-21 19:32:23 +03:00
binarymaster 5814e3fcf1 INI: Add support for new builds (fix #195)
10.0.15007.1000 x86/x64
2017-01-15 18:33:49 +03:00
binarymaster 091a0b8e92 Update README (fix #192) 2017-01-12 22:00:53 +03:00
binarymaster 7412f7a732 Update README (fix #163) 2017-01-12 21:57:44 +03:00
binarymaster e1f1d7c123 Update README (fix #191) 2017-01-12 21:30:57 +03:00
binarymaster fe535fd34b INI: Add support for new builds (fix #193)
10.0.15002.1001 x86/x64
2017-01-12 21:30:57 +03:00
Stas'M e9ad5e709f Update README.md - Add badges 2017-01-10 16:49:33 +03:00
binarymaster e69261a495 INI: Add support for new builds (fix #189)
10.0.14986.1000 x86/x64
2016-12-23 21:26:18 +03:00
binarymaster 3cb1ed5944 INI: Add support for new builds (fix #181)
10.0.14959.1000 x86/x64
10.0.14965.1001 x86/x64
10.0.14971.1000 x86/x64
2016-11-19 23:33:26 +03:00
binarymaster 47830889eb INI: Add support for new builds (fix #177)
10.0.14955.1000 x86/x64
2016-10-28 20:51:09 +03:00
binarymaster 0175a08fd1 INI: Add support for new builds (fix #175)
10.0.14951.1000 x86/x64
2016-10-21 22:12:56 +03:00
binarymaster fe43b60f5c INI: Add support for new builds (fix #173)
10.0.14946.1000 x86/x64
2016-10-19 20:52:05 +03:00
binarymaster 59a3a5b305 INI: Add support for new builds (fix #172)
10.0.14942.1000 x86/x64
2016-10-08 23:47:40 +03:00
binarymaster ae54efba8e INI: Add support for new builds (fix #168)
10.0.14936.1000 x86/x64
2016-09-30 01:32:31 +03:00
binarymaster 1bbeee751b INI: Add support for new builds (fix #167)
10.0.14931.1000 x86/x64
2016-09-27 18:07:45 +03:00
binarymaster 73c2583a46 INI: Add support for new builds (fix #160)
10.0.14926.1000 x86/x64
2016-09-15 23:58:24 +03:00
binarymaster 743b53ca16 INI: Add support for new builds (fix #157)
10.0.10586.589 x86/x64
2016-09-14 23:09:20 +03:00
Stas'M 4de59e9ff8 Merge pull request #155 from cher-nov/master
Installer: Add check for supported Windows version
2016-09-10 13:23:49 +03:00
cher-nov 121f893c0c Installer: Add check for supported Windows version 2016-09-10 19:47:50 +10:00
binarymaster 59b1924af9 INI: Add support for new builds (fix #150)
10.0.14915.1000 x86/x64
2016-09-03 14:36:22 +03:00
binarymaster d556f4373f INI: Add support for new builds (fix #140)
10.0.14901.1000 x86/x64
10.0.14905.1000 x86/x64
2016-08-28 16:58:49 +03:00
binarymaster a60c7f4351 INI: Add support for new builds (fix #141)
6.1.7601.23403 x86/x64
2016-08-28 16:32:09 +03:00
binarymaster af6a3c7194 README: FAQ about RDPCheck (fix #139) 2016-08-14 03:04:17 +03:00
binarymaster 13c0932252 INI: Add support for new builds (fix #137)
10.0.14385.0 x86/x64
2016-08-12 11:57:41 +03:00
binarymaster ef2561fe79 Update README (fix #132) 2016-08-02 14:20:16 +03:00
binarymaster e45fde37c2 Pre-release updates 2016-08-01 16:32:00 +03:00
Stas'M 1254ac3b3b README: Quick fixes 2016-07-24 01:21:30 +03:00
Stas'M 0e9385490b README: Replace HTML with Markdown 2016-07-24 01:11:25 +03:00
binarymaster 3edd0e5300 RDPConf: Add feature to hide users on logon 2016-07-23 22:08:44 +03:00
binarymaster 2d482b29be RDPConf: Update firewall rule on port change (fix #86) 2016-07-23 19:56:58 +03:00
binarymaster 11be8c6833 Installer: Allow to keep settings on uninstall (fix #106) 2016-07-23 19:33:35 +03:00
binarymaster 64e0987053 Installer: Add online install mode 2016-07-23 19:27:33 +03:00
binarymaster 558925a865 INI: Add support for new builds (fix #130)
10.0.14393.0 x86/x64
2016-07-22 21:15:53 +03:00
binarymaster 1395ea22bb INI: Add support for new builds (fix #128)
10.0.14383.0 x86/x64
10.0.14388.0 x86/x64
2016-07-15 21:55:02 +03:00
binarymaster 92bc50b6db INI: Add support for new builds (fix #126)
10.0.14379.0 x86/x64
2016-07-06 21:26:53 +03:00
binarymaster f6b125331e INI: Add support for new builds
10.0.14372.0 x86/x64
2016-06-27 09:44:49 +03:00
Stas'M 87e6e00b1b Merge pull request #125 from kbmorris/patch-1
Add support for new x64 architecture builds
2016-06-26 23:49:35 +03:00
kbmorris 533c3978a6 Add support for new x64 architecture builds
Add support for 10.0.14372.0 x64 architecture.
2016-06-26 14:36:12 -04:00
binarymaster cabb00fc78 INI: Add support for new builds (fix #123)
10.0.14366.0 x86/x64
10.0.14367.0 x86/x64
2016-06-17 22:11:05 +03:00
binarymaster 078e5cd1cb Correct offsets for 14352 (fix #121) 2016-06-17 22:09:18 +03:00
binarymaster d19a8cf733 INI: Add support for new builds (fix #119)
10.0.14352.1002 x86/x64
2016-05-30 17:40:06 +03:00
binarymaster bb6d905b8d INI: Add support for new builds
10.0.14342.1000 x86/x64
2016-05-14 20:41:16 +03:00
binarymaster 53897b40c7 INI: Add support for new builds
10.0.14300.1000 x64
10.0.14328.1000 x86/x64
2016-05-08 18:39:11 +03:00
Stas'M d3de408f7e Merge pull request #113 from maxpiva/master
INI: Add support for 10.0.14332.1001
2016-04-29 14:07:52 +03:00
Maximo Piva 69f46c6caf INI: Add support for 10.0.14332.1001 2016-04-29 01:34:19 -03:00
Stas'M 89a03ccba9 Merge pull request #111 from Chocobo1/inst_update
Update immediately after install
2016-04-23 22:17:56 +03:00
Chocobo1 d02238218c Update immediately after install 2016-04-23 23:07:44 +08:00
binarymaster 37bcdd6414 INI: Add support for 10.0.14316.1000 2016-04-14 19:28:00 +03:00
binarymaster 6c58b69306 INI: Add support for 10.0.14295.1000 2016-04-06 14:12:47 +03:00
binarymaster a7d7972ca4 INI: Experimental codes for ARMv7 2016-03-07 21:15:52 +03:00
binarymaster fc58cf13c8 INI: Add support for 10.0.14279.1000 2016-03-06 14:19:32 +03:00
binarymaster 50e7459421 Repository: Update links 2016-03-06 05:58:29 +03:00
binarymaster 2c007fbb1d INI: Add support for 10.0.14271.1000 2016-02-29 14:37:49 +03:00
binarymaster ff3df89647 INI: Add support for 10.0.14251.1000 2016-01-28 20:52:46 +03:00
binarymaster 103a687689 INI: Add support for 10.0.11102.1000 2016-01-26 18:38:13 +03:00
Stas'M def243e15f Merge pull request #84 from fig2k4/master
Support for Delphi XE2 and above
2016-01-16 00:51:21 +03:00
fig2k4 9c6a8f4914 Support for Delphi XE2 and above 2016-01-15 21:17:20 +00:00
binarymaster fdfbf0e1aa Support: Add termsrv 10.0.11082.1000 2016-01-15 22:59:48 +03:00
binarymaster 669c2bd20f Repository: Add .gitattributes 2016-01-15 22:57:51 +03:00
binarymaster c881f80f60 Installer: Update messages 2016-01-15 19:22:39 +03:00
Stas'M 2fe23a1b4f Merge pull request #82 from fig2k4/master
dwResumeHandle initialized before calling EnumServicesStatusEx()
2016-01-15 19:06:32 +03:00
fig2k4 b0c471660b dwResumeHandle initialized before calling EnumServicesStatusEx() 2016-01-15 16:00:36 +00:00
binarymaster b4a0fe1a7a Update README 2015-11-14 17:25:15 +03:00
binarymaster 741527eccd Support for build 10.0.10586.0 2015-11-14 16:44:08 +03:00
binarymaster 3d1f7c9e66 Tech update 2015-11-14 15:59:55 +03:00
binarymaster 733e617a1f Forgot about version 2015-08-12 22:01:19 +03:00
binarymaster 0c89dc564f More info 2015-08-12 20:13:24 +03:00
binarymaster 00e4c3bf19 Update links 2015-08-12 20:06:31 +03:00
binarymaster eadebe921b Update instructions 2015-08-12 19:48:13 +03:00
binarymaster 5553d07206 v1.6 release notes 2015-08-12 19:39:06 +03:00
binarymaster 216255b3b4 Pre-release updates 2015-08-11 05:32:35 +03:00
binarymaster e11b3c7354 Implement simple update routine 2015-08-07 04:33:37 +03:00
Stas'M f534a1c8fc Merge pull request #44 from WisdomWolf/master
Fix for INI File (CR-LF and last line)
2015-08-01 15:36:16 +03:00
WisdomWolf d4d5111711 maybe underscore? 2015-07-31 23:42:14 -04:00
WisdomWolf 4bf2866b49 added period to last line to preserve CR-LF when viewed on GitHub 2015-07-31 23:40:53 -04:00
WisdomWolf 7c52a27ba5 Merge branch 'master' of github.com:WisdomWolf/rdpwrap 2015-07-31 23:39:41 -04:00
WisdomWolf e6686b3b35 corrected CR-LF at end of ini file 2015-07-31 23:39:10 -04:00
WisdomWolf 1f8e2b9e65 corrected CR-LF at end of ini file 2015-07-31 23:37:41 -04:00
binarymaster 946bd7f8a6 Update technical 2015-07-30 01:15:55 +03:00
binarymaster b9149eef02 Fix wrong LocalOnly x86 offset 2015-07-30 01:09:12 +03:00
binarymaster 80387dcc31 Fix installer: check ImagePath without extension 2015-07-17 21:59:20 +03:00
binarymaster 8ac3396165 Small readme fix 2015-07-17 19:06:57 +03:00
binarymaster 8be10a125b Update readme 2015-07-17 18:50:40 +03:00
binarymaster 7baa979752 Update readme 2015-07-17 03:45:22 +03:00
binarymaster 425fc02fec New batch scripts 2015-07-17 02:39:09 +03:00
binarymaster 659ba3dbcf RDPCheck: update text 2015-07-17 02:35:05 +03:00
binarymaster efe2872a26 Update INI modification date 2015-07-17 02:29:20 +03:00
binarymaster ca71d4ace4 Small fix 2015-07-17 02:21:51 +03:00
binarymaster a42b740946 More tech details 2015-07-17 02:19:07 +03:00
binarymaster fca45f61e7 Update tech log 2015-07-17 02:06:27 +03:00
binarymaster 5062ff6c75 Update INI
- Added support for build 10.0.10240.16384
- Added HOW TO hints to KB
2015-07-17 01:28:23 +03:00
binarymaster 9a7c501ca9 Fix readme 2015-07-16 23:32:16 +03:00
binarymaster adabe322c3 Update apps 2015-07-16 23:17:41 +03:00
binarymaster eca971de03 Fix previous commit 2015-07-16 22:15:14 +03:00
binarymaster 6f23a18a24 Update INI
Move comments to KB file
Actual INI now have smaller size
2015-07-16 22:07:21 +03:00
binarymaster 09bfc748f4 Update readme 2015-07-16 21:48:52 +03:00
binarymaster 97d0b92054 Update tech log 2015-07-16 21:43:08 +03:00
binarymaster 867c271cb3 Readme: Update issues section 2015-06-23 20:03:14 +03:00
binarymaster fd56533897 Add support for 10.0.10041.0 2015-03-23 18:13:24 +03:00
binarymaster 782dc346a9 New build has been discovered, obtaining files 2015-03-23 15:28:50 +03:00
binarymaster ca36e9f49f Support for 10.0.9926.0 (x86) 2015-01-27 14:25:29 +03:00
binarymaster 513a7a1ebf 10.0.9926.0 x64 contributed by v-yadli 2015-01-24 20:36:45 +03:00
binarymaster 657ee646d5 Config: update policy values 2014-12-13 14:39:58 +03:00
binarymaster 5a37f663bc Updates discovered 2014-12-11 22:44:05 +03:00
29 changed files with 12379 additions and 1188 deletions

6
.gitattributes vendored Normal file
View File

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

19
.gitignore vendored
View File

@ -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
View File

@ -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>&nbsp;
<a href="http://stascorp.com/images/rdpwrap/VistaHB.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pVistaHB.jpg"></a>&nbsp; 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>&nbsp;
<a href="http://stascorp.com/images/rdpwrap/Win7HB.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin7HB.jpg"></a>&nbsp; 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>&nbsp;
<a href="http://stascorp.com/images/rdpwrap/Win8CP.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin8CP.jpg"></a>&nbsp; [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>&nbsp; [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>&nbsp; [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>&nbsp; [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>&nbsp; [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>&nbsp; [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

14
bin/install.bat Normal file
View File

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

10
bin/uninstall.bat Normal file
View File

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

10
bin/update.bat Normal file
View File

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

49
res/RDPWInst.wxs Normal file
View File

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

3
res/build_wxs.bat Normal file
View File

@ -0,0 +1,3 @@
@echo off
"%ProgramFiles%\WiX Toolset v3.11\bin\candle" RDPWInst.wxs
"%ProgramFiles%\WiX Toolset v3.11\bin\light" RDPWInst.wixobj

View File

@ -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.

172
res/rdpwrap-arm-kb.ini Normal file
View File

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

6289
res/rdpwrap-ini-kb.txt Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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...');

View File

@ -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.

View File

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

View File

@ -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&apos;M Corp.</VersionInfoKeys> <VersionInfoKeys Name="CompanyName">Stas&apos;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&apos;M Corp. 2014</VersionInfoKeys> <VersionInfoKeys Name="LegalCopyright">Copyright © Stas&apos;M Corp. 2015</VersionInfoKeys>
<VersionInfoKeys Name="LegalTrademarks">Stas&apos;M Corp.</VersionInfoKeys> <VersionInfoKeys Name="LegalTrademarks">Stas&apos;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.

View File

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

View File

@ -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;

View File

@ -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.

View File

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

View File

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

View File

@ -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;

View File

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