[
  {
    "path": ".gitattributes",
    "content": "# Auto detect text files and perform LF normalization\n* text=auto\n\n# Plain text (Windows)\n*.txt    diff=astextplain eol=crlf\n*.ini    diff=astextplain eol=crlf\n"
  },
  {
    "path": ".gitignore",
    "content": "# Delphi local files (user-specific info)\n*.local\n*.identcache\n\n# Delphi history and backups\n__history/\n*.~*\n\n# Compiled binaries\n*.dcu\n*.exe\n*.dll\n*.msi\n\n# MSI local stuff\n*.wixobj\n*.wixpdb\n"
  },
  {
    "path": "LICENSE",
    "content": "                                 Apache License\n                        Version 2.0, January 2004\n                     http://www.apache.org/licenses/\n\nTERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n   \"License\" shall mean the terms and conditions for use, reproduction,\n   and distribution as defined by Sections 1 through 9 of this document.\n\n   \"Licensor\" shall mean the copyright owner or entity authorized by\n   the copyright owner that is granting the License.\n\n   \"Legal Entity\" shall mean the union of the acting entity and all\n   other entities that control, are controlled by, or are under common\n   control with that entity. For the purposes of this definition,\n   \"control\" means (i) the power, direct or indirect, to cause the\n   direction or management of such entity, whether by contract or\n   otherwise, or (ii) ownership of fifty percent (50%) or more of the\n   outstanding shares, or (iii) beneficial ownership of such entity.\n\n   \"You\" (or \"Your\") shall mean an individual or Legal Entity\n   exercising permissions granted by this License.\n\n   \"Source\" form shall mean the preferred form for making modifications,\n   including but not limited to software source code, documentation\n   source, and configuration files.\n\n   \"Object\" form shall mean any form resulting from mechanical\n   transformation or translation of a Source form, including but\n   not limited to compiled object code, generated documentation,\n   and conversions to other media types.\n\n   \"Work\" shall mean the work of authorship, whether in Source or\n   Object form, made available under the License, as indicated by a\n   copyright notice that is included in or attached to the work\n   (an example is provided in the Appendix below).\n\n   \"Derivative Works\" shall mean any work, whether in Source or Object\n   form, that is based on (or derived from) the Work and for which the\n   editorial revisions, annotations, elaborations, or other modifications\n   represent, as a whole, an original work of authorship. For the purposes\n   of this License, Derivative Works shall not include works that remain\n   separable from, or merely link (or bind by name) to the interfaces of,\n   the Work and Derivative Works thereof.\n\n   \"Contribution\" shall mean any work of authorship, including\n   the original version of the Work and any modifications or additions\n   to that Work or Derivative Works thereof, that is intentionally\n   submitted to Licensor for inclusion in the Work by the copyright owner\n   or by an individual or Legal Entity authorized to submit on behalf of\n   the copyright owner. For the purposes of this definition, \"submitted\"\n   means any form of electronic, verbal, or written communication sent\n   to the Licensor or its representatives, including but not limited to\n   communication on electronic mailing lists, source code control systems,\n   and issue tracking systems that are managed by, or on behalf of, the\n   Licensor for the purpose of discussing and improving the Work, but\n   excluding communication that is conspicuously marked or otherwise\n   designated in writing by the copyright owner as \"Not a Contribution.\"\n\n   \"Contributor\" shall mean Licensor and any individual or Legal Entity\n   on behalf of whom a Contribution has been received by Licensor and\n   subsequently incorporated within the Work.\n\n2. Grant of Copyright License. Subject to the terms and conditions of\n   this License, each Contributor hereby grants to You a perpetual,\n   worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n   copyright license to reproduce, prepare Derivative Works of,\n   publicly display, publicly perform, sublicense, and distribute the\n   Work and such Derivative Works in Source or Object form.\n\n3. Grant of Patent License. Subject to the terms and conditions of\n   this License, each Contributor hereby grants to You a perpetual,\n   worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n   (except as stated in this section) patent license to make, have made,\n   use, offer to sell, sell, import, and otherwise transfer the Work,\n   where such license applies only to those patent claims licensable\n   by such Contributor that are necessarily infringed by their\n   Contribution(s) alone or by combination of their Contribution(s)\n   with the Work to which such Contribution(s) was submitted. If You\n   institute patent litigation against any entity (including a\n   cross-claim or counterclaim in a lawsuit) alleging that the Work\n   or a Contribution incorporated within the Work constitutes direct\n   or contributory patent infringement, then any patent licenses\n   granted to You under this License for that Work shall terminate\n   as of the date such litigation is filed.\n\n4. Redistribution. You may reproduce and distribute copies of the\n   Work or Derivative Works thereof in any medium, with or without\n   modifications, and in Source or Object form, provided that You\n   meet the following conditions:\n\n   (a) You must give any other recipients of the Work or\n       Derivative Works a copy of this License; and\n\n   (b) You must cause any modified files to carry prominent notices\n       stating that You changed the files; and\n\n   (c) You must retain, in the Source form of any Derivative Works\n       that You distribute, all copyright, patent, trademark, and\n       attribution notices from the Source form of the Work,\n       excluding those notices that do not pertain to any part of\n       the Derivative Works; and\n\n   (d) If the Work includes a \"NOTICE\" text file as part of its\n       distribution, then any Derivative Works that You distribute must\n       include a readable copy of the attribution notices contained\n       within such NOTICE file, excluding those notices that do not\n       pertain to any part of the Derivative Works, in at least one\n       of the following places: within a NOTICE text file distributed\n       as part of the Derivative Works; within the Source form or\n       documentation, if provided along with the Derivative Works; or,\n       within a display generated by the Derivative Works, if and\n       wherever such third-party notices normally appear. The contents\n       of the NOTICE file are for informational purposes only and\n       do not modify the License. You may add Your own attribution\n       notices within Derivative Works that You distribute, alongside\n       or as an addendum to the NOTICE text from the Work, provided\n       that such additional attribution notices cannot be construed\n       as modifying the License.\n\n   You may add Your own copyright statement to Your modifications and\n   may provide additional or different license terms and conditions\n   for use, reproduction, or distribution of Your modifications, or\n   for any such Derivative Works as a whole, provided Your use,\n   reproduction, and distribution of the Work otherwise complies with\n   the conditions stated in this License.\n\n5. Submission of Contributions. Unless You explicitly state otherwise,\n   any Contribution intentionally submitted for inclusion in the Work\n   by You to the Licensor shall be under the terms and conditions of\n   this License, without any additional terms or conditions.\n   Notwithstanding the above, nothing herein shall supersede or modify\n   the terms of any separate license agreement you may have executed\n   with Licensor regarding such Contributions.\n\n6. Trademarks. This License does not grant permission to use the trade\n   names, trademarks, service marks, or product names of the Licensor,\n   except as required for reasonable and customary use in describing the\n   origin of the Work and reproducing the content of the NOTICE file.\n\n7. Disclaimer of Warranty. Unless required by applicable law or\n   agreed to in writing, Licensor provides the Work (and each\n   Contributor provides its Contributions) on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n   implied, including, without limitation, any warranties or conditions\n   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n   PARTICULAR PURPOSE. You are solely responsible for determining the\n   appropriateness of using or redistributing the Work and assume any\n   risks associated with Your exercise of permissions under this License.\n\n8. Limitation of Liability. In no event and under no legal theory,\n   whether in tort (including negligence), contract, or otherwise,\n   unless required by applicable law (such as deliberate and grossly\n   negligent acts) or agreed to in writing, shall any Contributor be\n   liable to You for damages, including any direct, indirect, special,\n   incidental, or consequential damages of any character arising as a\n   result of this License or out of the use or inability to use the\n   Work (including but not limited to damages for loss of goodwill,\n   work stoppage, computer failure or malfunction, or any and all\n   other commercial damages or losses), even if such Contributor\n   has been advised of the possibility of such damages.\n\n9. Accepting Warranty or Additional Liability. While redistributing\n   the Work or Derivative Works thereof, You may choose to offer,\n   and charge a fee for, acceptance of support, warranty, indemnity,\n   or other liability obligations and/or rights consistent with this\n   License. However, in accepting such obligations, You may act only\n   on Your own behalf and on Your sole responsibility, not on behalf\n   of any other Contributor, and only if You agree to indemnify,\n   defend, and hold each Contributor harmless for any liability\n   incurred by, or claims asserted against, such Contributor by reason\n   of your accepting any such warranty or additional liability.\n\nEND OF TERMS AND CONDITIONS\n\nAPPENDIX: How to apply the Apache License to your work.\n\n   To apply the Apache License to your work, attach the following\n   boilerplate notice, with the fields enclosed by brackets \"[]\"\n   replaced with your own identifying information. (Don't include\n   the brackets!)  The text should be enclosed in the appropriate\n   comment syntax for the file format. We also recommend that a\n   file or class name and description of purpose be included on the\n   same \"printed page\" as the copyright notice for easier\n   identification within third-party archives.\n\nCopyright [yyyy] [name of copyright owner]\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\n"
  },
  {
    "path": "README.md",
    "content": "# RDP Wrapper Library by Stas'M\n\n[![Telegram](https://img.shields.io/badge/chat-Telegram-blue.svg)](https://t.me/rdpwrap)\n![Environment](https://img.shields.io/badge/Windows-Vista,%207,%208,%2010-brightgreen.svg)\n[![Release](https://img.shields.io/github/release/stascorp/rdpwrap.svg)](https://github.com/stascorp/rdpwrap/releases)\n![License](https://img.shields.io/github/license/stascorp/rdpwrap.svg)\n![Downloads](https://img.shields.io/github/downloads/stascorp/rdpwrap/latest/total.svg)\n![TotalDownloads](https://img.shields.io/github/downloads/stascorp/rdpwrap/total.svg)\n\nThe goal of this project is to enable Remote Desktop Host support and concurrent RDP sessions on reduced functionality systems for home usage.\n\nRDP 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.\n\n[pVistaST]:  http://stascorp.com/images/rdpwrap/pVistaST.jpg\n[pVistaHB]:  http://stascorp.com/images/rdpwrap/pVistaHB.jpg\n[pWin7ST]:   http://stascorp.com/images/rdpwrap/pWin7ST.jpg\n[pWin7HB]:   http://stascorp.com/images/rdpwrap/pWin7HB.jpg\n[pWin8DP]:   http://stascorp.com/images/rdpwrap/pWin8DP.jpg\n[pWin8CP]:   http://stascorp.com/images/rdpwrap/pWin8CP.jpg\n[pWin8RP]:   http://stascorp.com/images/rdpwrap/pWin8RP.jpg\n[pWin8]:     http://stascorp.com/images/rdpwrap/pWin8.jpg\n[pWin81P]:   http://stascorp.com/images/rdpwrap/pWin81P.jpg\n[pWin81]:    http://stascorp.com/images/rdpwrap/pWin81.jpg\n[pWin10TP]:  http://stascorp.com/images/rdpwrap/pWin10TP.jpg\n[pWin10PTP]: http://stascorp.com/images/rdpwrap/pWin10PTP.jpg\n[pWin10]:    http://stascorp.com/images/rdpwrap/pWin10.jpg\n\n[fVistaST]:  http://stascorp.com/images/rdpwrap/VistaST.png\n[fVistaHB]:  http://stascorp.com/images/rdpwrap/VistaHB.png\n[fWin7ST]:   http://stascorp.com/images/rdpwrap/Win7ST.png\n[fWin7HB]:   http://stascorp.com/images/rdpwrap/Win7HB.png\n[fWin8DP]:   http://stascorp.com/images/rdpwrap/Win8DP.png\n[fWin8CP]:   http://stascorp.com/images/rdpwrap/Win8CP.png\n[fWin8RP]:   http://stascorp.com/images/rdpwrap/Win8RP.png\n[fWin8]:     http://stascorp.com/images/rdpwrap/Win8.png\n[fWin81P]:   http://stascorp.com/images/rdpwrap/Win81P.png\n[fWin81]:    http://stascorp.com/images/rdpwrap/Win81.png\n[fWin10TP]:  http://stascorp.com/images/rdpwrap/Win10TP.png\n[fWin10PTP]: http://stascorp.com/images/rdpwrap/Win10PTP.png\n[fWin10]:    http://stascorp.com/images/rdpwrap/Win10.png\n\n| NT Version    | Screenshots |\n| ------------- | ----------- |\n| Windows Vista | [![Windows Vista Starter][pVistaST]][fVistaST] [![Windows Vista Home Basic][pVistaHB]][fVistaHB] |\n| Windows 7     | [![Windows 7 Starter][pWin7ST]][fWin7ST] [![Windows 7 Home Basic][pWin7HB]][fWin7HB] |\n| Windows 8     | [![Windows 8 Developer Preview][pWin8DP]][fWin8DP] [![Windows 8 Consumer Preview][pWin8CP]][fWin8CP] [![Windows 8 Release Preview][pWin8RP]][fWin8RP] [![Windows 8][pWin8]][fWin8] |\n| Windows 8.1   | [![Windows 8.1 Preview][pWin81P]][fWin81P] [![Windows 8.1][pWin81]][fWin81] |\n| Windows 10    | [![Windows 10 Technical Preview][pWin10TP]][fWin10TP] [![Windows 10 Pro Technical Preview][pWin10PTP]][fWin10PTP] [![Windows 10][pWin10]][fWin10] |\n---\n[WinPPE]: http://forums.mydigitallife.info/threads/39411-Windows-Product-Policy-Editor\n\nThis solution was inspired by [Windows Product Policy Editor][WinPPE], big thanks to **kost** :)\n\n— binarymaster\n\n### Attention:\nIt'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.\n\n### Information:\n- Source code is available, so you can build it on your own\n- RDP Wrapper does not patch termsrv.dll, it loads termsrv with different parameters\n- RDPWInst and RDPChecker can be redistributed without development folder and batch files\n- RDPWInst can be used for unattended installation / deployment\n- Windows 2000, XP and Server 2003 will not be supported\n\n### Key features:\n- RDP host server on any Windows edition beginning from Vista\n- Console and remote sessions at the same time\n- Using the same user simultaneously for local and remote logon (see configuration app)\n- Up to [15 concurrent sessions](https://github.com/stascorp/rdpwrap/issues/192) (the actual limitation depends on your hardware and OS version)\n- 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)\n- Full [multi-monitor support](https://github.com/stascorp/rdpwrap/issues/163) for RDP host\n- ...and if you find a new feature not listed here, [tell us](https://github.com/stascorp/rdpwrap/issues/new) ;)\n\n### Porting to other platforms:\n- **ARM** for Windows RT (see links below)\n- **IA-64** for Itanium-based Windows Server? *Well, I have no idea* :)\n\n### Building the binaries:\n- **x86 Delphi version** can be built with *Embarcadero RAD Studio 2010*\n- **x86/x64 C++ version** can be built with *Microsoft Visual Studio 2013*\n\n[andrewblock]:   http://web.archive.org/web/20150810054558/http://andrewblock.net/enable-remote-desktop-on-windows-8-core/\n[mydigitallife]: http://forums.mydigitallife.info/threads/55935-RDP-Wrapper-Library-(works-with-Windows-8-1-Basic)\n[xda-dev]:       http://forum.xda-developers.com/showthread.php?t=2093525&page=3\n[yt-updating]:   http://www.youtube.com/watch?v=W9BpbEt1yJw\n[yt-offsets]:    http://www.youtube.com/watch?v=FiD86tmRBtk\n\n### Links:\n- Official GitHub repository:\n<br>https://github.com/stascorp/rdpwrap/\n- Official Telegram chat:\n<br>https://t.me/rdpwrap\n- Active discussion in the comments here:\n<br>[Enable remote desktop on Windows 8 core / basic - Andrew Block .net][andrewblock]\n- MDL Projects and Applications thread here:\n<br>[RDP Wrapper Library (works with Windows 8.1 Basic)][mydigitallife]\n- Some ideas about porting to ARM for Windows RT (post #23):\n<br>[\\[Q\\] Mod Windows RT to enable Remote Desktop][xda-dev]\n- Adding «Remote Desktop Users» group:\n<br>http://superuser.com/questions/680572/\n\n#### Tutorial videos:\n- [~~Updating RDP Wrapper INI file manually~~][yt-updating] (now use installer to update INI file)\n- [How to find offsets for new termsrv.dll versions][yt-offsets]\n\n### Files in release package:\n\n| File name | Description |\n| --------- | ----------- |\n| `RDPWInst.exe`  | RDP Wrapper Library installer/uninstaller |\n| `RDPCheck.exe`  | Local RDP Checker (you can check the RDP is working) |\n| `RDPConf.exe`   | RDP Wrapper Configuration |\n| `install.bat`   | Quick install batch file |\n| `uninstall.bat` | Quick uninstall batch file |\n| `update.bat`    | Quick update batch file |\n\n### Frequently Asked Questions\n\n> Where can I download the installer or binaries?\n\nIn the [GitHub Releases](https://github.com/stascorp/rdpwrap/releases) section.\n\n> Is it legal to use this application?\n\nThere is no definitive answer, see [this discussion](https://github.com/stascorp/rdpwrap/issues/26).\n\n> The installer tries to access the Internet, is it normal behaviour?\n\nYes, it works in online mode by default. You may disable it by removing `-o` flag in the `install.bat` file.\n\n> What is online install mode?\n\nOnline 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).\n\n> What is INI file and why we need it?\n\nINI 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.\n\n> Config Tool reports version 1.5, but I installed higher version. What's the matter?\n\nBeginning with version 1.5 the `rdpwrap.dll` is not updated anymore, since all settings are stored in INI file. Deal with it.\n\n> Config Tool shows `[not supported]` and RDP doesn't work. What can I do?\n\nMake sure you're connected to the Internet and run `update.bat`.\n\n> Update doesn't help, it still shows `[not supported]`.\n\nVisit [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.\n\n> Why `RDPCheck` doesn't allow to change resolution and other settings?\n\n`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.\n\n### Known issues:\n- Beginning with Windows 8 **on tablet PCs** inactive sessions will be logged out by system - [more info](https://github.com/stascorp/rdpwrap/issues/37)\n- Beginning with Windows 10 you can accidentally lock yourself from PC - [more info](https://github.com/stascorp/rdpwrap/issues/50)\n- 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)\n- 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)\n- 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)\n- RDP works, but termsrv.dll crashes on logon attempt - Windows Vista Starter RTM x86 (termsrv.dll `6.0.6000.16386`)\n- 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:\n<br>`sc config TermService type= own`\n- 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.\n\n---\n\n### Change log:\n\n#### 2017.12.27\n- Version 1.6.2\n- Installer updated\n- Include updated INI file for latest Windows builds\n- Added check for supported Windows versions ([#155](https://github.com/stascorp/rdpwrap/issues/155))\n- Added feature to take INI file from current directory ([#300](https://github.com/stascorp/rdpwrap/issues/300))\n- Added feature to restore rfxvmt.dll (missing in Windows 10 Home [#194](https://github.com/stascorp/rdpwrap/issues/194))\n- RDP Config updated\n- Added feature to allow custom start programs ([#13 (comment)](https://github.com/stascorp/rdpwrap/issues/13#issuecomment-77651843))\n- MSI installation package added ([#14](https://github.com/stascorp/rdpwrap/issues/14))\n\n#### 2016.08.01\n- Version 1.6.1\n- Include updated INI file for latest Windows builds\n- Installer updated\n- Added online install mode\n- Added feature to keep settings on uninstall\n- RDP Config updated\n- Fixed update firewall rule on RDP port change\n- Added feature to hide users on logon\n\n#### 2015.08.12\n- Version 1.6\n- Added support for Windows 10\n- INI file has smaller size now - all comments are moved to KB file\n- Installer updated\n- Added workaround for 1056 error (although it isn't an error)\n- Added update support to installer\n- Newest RDPClip versions are included with installer\n- RDP Checker updated\n- Changed connect IP to 127.0.0.2\n- Updated some text messages\n- RDP Config updated\n- Added all possible shadowing modes\n- Also it will write settings to the group policy\n\n#### 2014.12.11\n- Version 1.5\n- Added INI config support\n- Configuration is stored in INI file now\n- We can extend version support without building new binaries\n- Added support for Windows 8.1 with KB3000850\n- Added support for Windows 10 Technical Preview Update 2\n- Installer updated\n- RDP Config updated\n- Diagnostics feature added to RDP Config\n\n#### 2014.11.14\n- Version 1.4\n- Added support for Windows 10 Technical Preview Update 1\n- Added support for Windows Vista SP2 with KB3003743\n- Added support for Windows 7 SP1 with KB3003743\n- Added new RDP Configuration Program\n\n#### 2014.10.21\n- Installer updated\n- Added feature to install RDP Wrapper to System32 directory\n- Fixed issue in the installer - NLA setting now remains unchanged\n- Local RDP Checker updated\n- SecurityLayer and UserAuthentification values changed on check start\n- RDP Checker restores values on exit\n\n#### 2014.10.20\n- Version 1.3\n- Added support for Windows 10 Technical Preview\n- Added support for Windows 7 with KB2984972\n- Added support for Windows 8 with KB2973501\n- Added extended support for Windows Vista (SP0, SP1 and SP2)\n- Added extended support for Windows 7 (SP0 and SP1)\n- Some improvements in the source code\n- Installer updated to v2.2\n- Fixed installation bug in Vista x64 (wrong expand path)\n- Local RDP Checker updated\n- Added description to error 0x708\n\n#### 2014.07.26\n- Version 1.2\n- Added support for Windows 8 Developer Preview\n- Added support for Windows 8 Consumer Preview\n- Added support for Windows 8 Release Preview\n- Added support for Windows 8.1 Preview\n- Added support for Windows 8.1\n- More details you will see in the source code\n- Installer updated to v2.1\n\n#### 2013.12.09\n- C++ port of RDP Wrapper was made by Fusix\n- x64 architecture is supported now\n- Added new command line installer v2.0\n- Added local RDP checker\n- Source code (C++ port, installer 2.0, local RDP checker) is also included\n\n#### 2013.10.25\n- Version 1.1 source code is available\n\n#### 2013.10.22\n- Version 1.1\n- Stable release\n- Improved wrapper (now it can wrap internal unexported termsrv.dll SL Policy function)\n- Added support for Windows 8 Single Language (tested on Acer Tablet PC with Intel Atom Z2760)\n\n#### 2013.10.19\n- Version 1.0\n- First [beta] version\n- Basic SL Policy wrapper\n\n---\n\n#### Supported Terminal Services versions:\n- 6.0.X.X (Windows Vista / Server 2008)\n- 6.0.6000.16386 (Windows Vista)\n- 6.0.6001.18000 (Windows Vista SP1)\n- 6.0.6002.18005 (Windows Vista SP2)\n- 6.0.6002.19214 (Windows Vista SP2 with KB3003743 GDR)\n- 6.0.6002.23521 (Windows Vista SP2 with KB3003743 LDR)\n- 6.1.X.X (Windows 7 / Server 2008 R2)\n- 6.1.7600.16385 (Windows 7)\n- 6.1.7600.20890 (Windows 7 with KB2479710)\n- 6.1.7600.21316 (Windows 7 with KB2750090)\n- 6.1.7601.17514 (Windows 7 SP1)\n- 6.1.7601.21650 (Windows 7 SP1 with KB2479710)\n- 6.1.7601.21866 (Windows 7 SP1 with KB2647409)\n- 6.1.7601.22104 (Windows 7 SP1 with KB2750090)\n- 6.1.7601.18540 (Windows 7 SP1 with KB2984972 GDR)\n- 6.1.7601.22750 (Windows 7 SP1 with KB2984972 LDR)\n- 6.1.7601.18637 (Windows 7 SP1 with KB3003743 GDR)\n- 6.1.7601.22843 (Windows 7 SP1 with KB3003743 LDR)\n- 6.1.7601.23403 (Windows 7 SP1 with KB3125574)\n- 6.1.7601.24234 (Windows 7 SP1 with KB4462923)\n- 6.2.8102.0 (Windows 8 Developer Preview)\n- 6.2.8250.0 (Windows 8 Consumer Preview)\n- 6.2.8400.0 (Windows 8 Release Preview)\n- 6.2.9200.16384 (Windows 8 / Server 2012)\n- 6.2.9200.17048 (Windows 8 with KB2973501 GDR)\n- 6.2.9200.21166 (Windows 8 with KB2973501 LDR)\n- 6.3.9431.0 (Windows 8.1 Preview)\n- 6.3.9600.16384 (Windows 8.1 / Server 2012 R2)\n- 6.3.9600.17095 (Windows 8.1 with KB2959626)\n- 6.3.9600.17415 (Windows 8.1 with KB3000850)\n- 6.3.9600.18692 (Windows 8.1 with KB4022720)\n- 6.3.9600.18708 (Windows 8.1 with KB4025335)\n- 6.3.9600.18928 (Windows 8.1 with KB4088876)\n- 6.3.9600.19093 (Windows 8.1 with KB4343891)\n- 6.4.9841.0 (Windows 10 Technical Preview)\n- 6.4.9860.0 (Windows 10 Technical Preview Update 1)\n- 6.4.9879.0 (Windows 10 Technical Preview Update 2)\n- 10.0.9926.0 (Windows 10 Pro Technical Preview)\n- 10.0.10041.0 (Windows 10 Pro Technical Preview Update 1)\n- 10.0.10240.16384 (Windows 10 RTM)\n- 10.0.10586.0 (Windows 10 TH2 Release 151029-1700)\n- 10.0.10586.589 (Windows 10 TH2 Release 160906-1759 with KB3185614)\n- 10.0.11082.1000 (Windows 10 RS1 Release 151210-2021)\n- 10.0.11102.1000 (Windows 10 RS1 Release 160113-1800)\n- 10.0.14251.1000 (Windows 10 RS1 Release 160124-1059)\n- 10.0.14271.1000 (Windows 10 RS1 Release 160218-2310)\n- 10.0.14279.1000 (Windows 10 RS1 Release 160229-1700)\n- 10.0.14295.1000 (Windows 10 RS1 Release 160318-1628)\n- 10.0.14300.1000 (Windows Server 2016 Technical Preview 5)\n- 10.0.14316.1000 (Windows 10 RS1 Release 160402-2227)\n- 10.0.14328.1000 (Windows 10 RS1 Release 160418-1609)\n- 10.0.14332.1001 (Windows 10 RS1 Release 160422-1940)\n- 10.0.14342.1000 (Windows 10 RS1 Release 160506-1708)\n- 10.0.14352.1002 (Windows 10 RS1 Release 160522-1930)\n- 10.0.14366.0 (Windows 10 RS1 Release 160610-1700)\n- 10.0.14367.0 (Windows 10 RS1 Release 160613-1700)\n- 10.0.14372.0 (Windows 10 RS1 Release 160620-2342)\n- 10.0.14379.0 (Windows 10 RS1 Release 160627-1607)\n- 10.0.14383.0 (Windows 10 RS1 Release 160701-1839)\n- 10.0.14385.0 (Windows 10 RS1 Release 160706-1700)\n- 10.0.14388.0 (Windows 10 RS1 Release 160709-1635)\n- 10.0.14393.0 (Windows 10 RS1 Release 160715-1616)\n- 10.0.14393.1198 (Windows 10 RS1 Release Sec 170427-1353 with KB4019472)\n- 10.0.14393.1737 (Windows 10 RS1 Release Inmarket 170914-1249 with KB4041691)\n- 10.0.14393.2457 (Windows 10 RS1 Release Inmarket 180822-1743 with KB4343884)\n- 10.0.14901.1000 (Windows 10 RS Pre-Release 160805-1700)\n- 10.0.14905.1000 (Windows 10 RS Pre-Release 160811-1739)\n- 10.0.14915.1000 (Windows 10 RS Pre-Release 160826-1902)\n- 10.0.14926.1000 (Windows 10 RS Pre-Release 160910-1529)\n- 10.0.14931.1000 (Windows 10 RS Pre-Release 160916-1700)\n- 10.0.14936.1000 (Windows 10 RS Pre-Release 160923-1700)\n- 10.0.14942.1000 (Windows 10 RS Pre-Release 161003-1929)\n- 10.0.14946.1000 (Windows 10 RS Pre-Release 161007-1700)\n- 10.0.14951.1000 (Windows 10 RS Pre-Release 161014-1700)\n- 10.0.14955.1000 (Windows 10 RS Pre-Release 161020-1700)\n- 10.0.14959.1000 (Windows 10 RS Pre-Release 161026-1700)\n- 10.0.14965.1001 (Windows 10 RS Pre-Release 161104-1700)\n- 10.0.14971.1000 (Windows 10 RS Pre-Release 161111-1700)\n- 10.0.14986.1000 (Windows 10 Build 160101.0800)\n- 10.0.14997.1001 (Windows 10 Build 160101.0800)\n- 10.0.15002.1001 (Windows 10 Build 160101.0800)\n- 10.0.15007.1000 (Windows 10 Build 160101.0800)\n- 10.0.15014.1000 (Windows 10 Build 160101.0800)\n- 10.0.15019.1000 (Windows 10 RS Pre-Release 170121-1513)\n- 10.0.15025.1000 (Windows 10 RS Pre-Release 170127-1750)\n- 10.0.15031.0 (Windows 10 RS2 Release 170204-1546)\n- 10.0.15042.0 (Windows 10 RS2 Release 170219-2329)\n- 10.0.15046.0 (Windows 10 Build 160101.0800)\n- 10.0.15048.0 (Windows 10 Build 160101.0800)\n- 10.0.15055.0 (Windows 10 Build 160101.0800)\n- 10.0.15058.0 (Windows 10 Build 160101.0800)\n- 10.0.15061.0 (Windows 10 Build 160101.0800)\n- 10.0.15063.0 (Windows 10 Build 160101.0800)\n- 10.0.15063.296 (Windows 10 Build 160101.0800)\n- 10.0.15063.994 (Windows 10 Build 160101.0800)\n- 10.0.15063.1155 (Windows 10 Build 160101.0800)\n- 10.0.16179.1000 (Windows 10 Build 160101.0800)\n- 10.0.16184.1001 (Windows 10 Build 160101.0800)\n- 10.0.16199.1000 (Windows 10 Build 160101.0800)\n- 10.0.16215.1000 (Windows 10 Build 160101.0800)\n- 10.0.16232.1000 (Windows 10 Build 160101.0800)\n- 10.0.16237.1001 (Windows 10 Build 160101.0800)\n- 10.0.16241.1001 (Windows 10 Build 160101.0800)\n- 10.0.16251.0 (Windows 10 Build 160101.0800)\n- 10.0.16251.1000 (Windows 10 Build 160101.0800)\n- 10.0.16257.1 (Windows 10 Build 160101.0800)\n- 10.0.16257.1000 (Windows 10 Build 160101.0800)\n- 10.0.16273.1000 (Windows 10 Build 160101.0800)\n- 10.0.16275.1000 (Windows 10 Build 160101.0800)\n- 10.0.16278.1000 (Windows 10 Build 160101.0800)\n- 10.0.16281.1000 (Windows 10 Build 160101.0800)\n- 10.0.16288.1 (Windows 10 Build 160101.0800)\n- 10.0.16291.0 (Windows 10 Build 160101.0800)\n- 10.0.16294.1 (Windows 10 Build 160101.0800)\n- 10.0.16296.0 (Windows 10 Build 160101.0800)\n- 10.0.16299.0 (Windows 10 Build 160101.0800)\n- 10.0.16299.15 (Windows 10 Build 160101.0800)\n- 10.0.16353.1000 (Windows 10 Build 160101.0800)\n- 10.0.16362.1000 (Windows 10 Build 160101.0800)\n- 10.0.17004.1000 (Windows 10 Build 160101.0800)\n- 10.0.17017.1000 (Windows 10 Build 160101.0800)\n- 10.0.17025.1000 (Windows 10 Build 160101.0800)\n- 10.0.17035.1000 (Windows 10 Build 160101.0800)\n- 10.0.17046.1000 (Windows 10 Build 160101.0800)\n- 10.0.17063.1000 (Windows 10 Build 160101.0800)\n- 10.0.17115.1 (Windows 10 Build 160101.0800)\n- 10.0.17128.1 (Windows 10 Build 160101.0800)\n- 10.0.17133.1 (Windows 10 Build 160101.0800)\n- 10.0.17134.1 (Windows 10 Build 160101.0800)\n- 10.0.17723.1000 (Windows 10 Build 160101.0800)\n- 10.0.17763.1 (Windows 10 Build 160101.0800)\n\n#### Confirmed working on:\n- Windows Vista Starter (x86 - Service Pack 1 and higher)\n- Windows Vista Home Basic\n- Windows Vista Home Premium\n- Windows Vista Business\n- Windows Vista Enterprise\n- Windows Vista Ultimate\n- Windows Server 2008\n- Windows 7 Starter\n- Windows 7 Home Basic\n- Windows 7 Home Premium\n- Windows 7 Professional\n- Windows 7 Enterprise\n- Windows 7 Ultimate\n- Windows Server 2008 R2\n- Windows 8 Developer Preview\n- Windows 8 Consumer Preview\n- Windows 8 Release Preview\n- Windows 8\n- Windows 8 Single Language\n- Windows 8 Pro\n- Windows 8 Enterprise\n- Windows Server 2012\n- Windows 8.1 Preview\n- Windows 8.1\n- Windows 8.1 Connected (with Bing)\n- Windows 8.1 Single Language\n- Windows 8.1 Connected Single Language (with Bing)\n- Windows 8.1 Pro\n- Windows 8.1 Enterprise\n- Windows Server 2012 R2\n- Windows 10 Technical Preview\n- Windows 10 Pro Technical Preview\n- Windows 10 Home\n- Windows 10 Home Single Language\n- Windows 10 Pro\n- Windows 10 Enterprise\n- Windows Server 2016 Technical Preview\n\nInstallation instructions:\n- Download latest release binaries and unpack files\n- Right-click on **`install.bat`** and select Run as Administrator\n- See command output for details\n\nTo update INI file:\n- Right-click on **`update.bat`** and select Run as Administrator\n- See command output for details\n\nTo uninstall:\n- Go to the directory where you extracted the files\n- Right-click on **`uninstall.bat`** and select Run as Administrator\n- See command output for details\n"
  },
  {
    "path": "bin/install.bat",
    "content": "@echo off\nif not exist \"%~dp0RDPWInst.exe\" goto :error\n\"%~dp0RDPWInst\" -i -o\necho ______________________________________________________________\necho.\necho You can check RDP functionality with RDPCheck program.\necho Also you can configure advanced settings with RDPConf program.\necho.\ngoto :anykey\n:error\necho [-] Installer executable not found.\necho Please extract all files from the downloaded package or check your anti-virus.\n:anykey\npause\n"
  },
  {
    "path": "bin/uninstall.bat",
    "content": "@echo off\nif not exist \"%~dp0RDPWInst.exe\" goto :error\n\"%~dp0RDPWInst\" -u\necho.\ngoto :anykey\n:error\necho [-] Installer executable not found.\necho Please extract all files from the downloaded package or check your anti-virus.\n:anykey\npause\n"
  },
  {
    "path": "bin/update.bat",
    "content": "@echo off\nif not exist \"%~dp0RDPWInst.exe\" goto :error\n\"%~dp0RDPWInst\" -w\necho.\ngoto :anykey\n:error\necho [-] Installer executable not found.\necho Please extract all files from the downloaded package or check your anti-virus.\n:anykey\npause\n"
  },
  {
    "path": "res/RDPWInst.wxs",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n\n<Wix xmlns=\"http://schemas.microsoft.com/wix/2006/wi\">\n  <?define ProductName=\"RDP Wrapper Library\" ?>\n  <?define ProductVersion=\"1.6.2\" ?>\n  <?define ProductCode=\"37ea5771-3352-4a52-9fac-9297331daebd\"?>\n  <?define UpgradeCode=\"6623f60c-e84f-41e7-a55b-f421165deeb5\"?>\n  <?define Manufacturer=\"Stas'M Corp. and contributors\"?>\n\n  <Product Id=\"$(var.ProductCode)\" Name=\"$(var.ProductName)\" Language=\"1033\" Version=\"$(var.ProductVersion)\" Manufacturer=\"$(var.Manufacturer)\" UpgradeCode=\"$(var.UpgradeCode)\">\n    <Package InstallerVersion=\"200\" Compressed=\"yes\"/>\n    <Property Id=\"MSIFASTINSTALL\" Value=\"1\" />\n    <Property Id=\"DISABLEROLLBACK\" Value=\"1\" />\n    <MajorUpgrade AllowDowngrades=\"yes\"/>\n\n    <Media Id=\"1\" Cabinet=\"media1.cab\" EmbedCab=\"yes\"/>\n\n    <Directory Id=\"TARGETDIR\" Name=\"SourceDir\">\n      <Directory Id=\"CommonAppDataFolder\">\n        <Directory Id=\"PACKAGECACHE\" Name=\"Package Cache\">\n          <Directory Id=\"INSTALLLOCATION\" Name=\"{$(var.ProductCode)}\">\n            <Component Id=\"RDPWrap\" Guid=\"affd77d1-b35c-46f3-a97f-1686dc57b8b8\">\n              <File Id='RDPWInst' DiskId='1' Source='RDPWInst.exe'/>\n            </Component>\n          </Directory>\n        </Directory>\n      </Directory>\n    </Directory>\n\n    <Feature Id=\"RDPWrapInstall\" Title=\"RDPWrapSetup\" Level=\"1\">\n      <ComponentRef Id=\"RDPWrap\" />\n    </Feature>\n\n    <CustomAction Id='InstallAction' FileKey='RDPWInst' ExeCommand='-i -o' Execute='immediate' Return='check'/>\n    <CustomAction Id='UninstallAction' FileKey='RDPWInst' ExeCommand='-u' Execute='immediate' Return='check'/>\n    <CustomAction Id='UpdateAction' FileKey='RDPWInst' ExeCommand='-w' Execute='immediate' Return='check'/>\n<!--     <CustomAction Id='ChangeAction' Directory='ProgramFilesFolder' ExeCommand='RDP Wrapper\\RDPConf' Execute='immediate' Return='check'/>\n    <CustomAction Id='RepairAction' Directory='ProgramFilesFolder' ExeCommand='RDP Wrapper\\RDPCheck' Execute='immediate' Return='check'/> -->\n\n    <InstallExecuteSequence>\n      <Custom Action='InstallAction' After='InstallFinalize'>NOT Installed AND NOT WIX_UPGRADE_DETECTED</Custom>\n      <Custom Action='UninstallAction' Before=\"RemoveFiles\">REMOVE AND NOT UPGRADINGPRODUCTCODE</Custom>\n      <Custom Action='UpdateAction' Before=\"RemoveFiles\">UPGRADINGPRODUCTCODE</Custom>\n<!--       <Custom Action='ChangeAction' After='InstallFinalize'>Installed AND NOT REINSTALL AND NOT UPGRADINGPRODUCTCODE AND NOT REMOVE</Custom>\n      <Custom Action='RepairAction' After='InstallFinalize'>REINSTALL</Custom> -->\n    </InstallExecuteSequence>\n\n  </Product>\n</Wix>\n"
  },
  {
    "path": "res/build_wxs.bat",
    "content": "@echo off\n\"%ProgramFiles%\\WiX Toolset v3.11\\bin\\candle\" RDPWInst.wxs\n\"%ProgramFiles%\\WiX Toolset v3.11\\bin\\light\" RDPWInst.wixobj\n"
  },
  {
    "path": "res/clearres.bat",
    "content": "@echo off\necho [FILENAMES]> clearres.txt\necho Exe=%1>> clearres.txt\necho SaveAs=%1>> clearres.txt\necho Log=>> clearres.txt\necho.>> clearres.txt\necho [COMMANDS]>> clearres.txt\necho -delete RCDATA,CHARTABLE,>> clearres.txt\necho -delete RCDATA,DVCLAL,>> clearres.txt\necho -delete RCDATA,PACKAGEINFO,>> clearres.txt\necho -delete CURSORGROUP,32761,>> clearres.txt\necho -delete CURSORGROUP,32762,>> clearres.txt\necho -delete CURSORGROUP,32763,>> clearres.txt\necho -delete CURSORGROUP,32764,>> clearres.txt\necho -delete CURSORGROUP,32765,>> clearres.txt\necho -delete CURSORGROUP,32766,>> clearres.txt\necho -delete CURSORGROUP,32767,>> clearres.txt\n\"C:\\Program Files\\Resource Hacker\\ResHacker.exe\" -script clearres.txt\ndel clearres.txt\n"
  },
  {
    "path": "res/legacy.install.bat",
    "content": "@echo off\nsetlocal EnableDelayedExpansion\necho RDP Wrapper Library Installer v1.0\necho Copyright (C) Stas'M Corp. 2013\necho.\n\nset PROCESSOR_ARCHITECTURE | find \"x86\" > nul\nif !errorlevel!==0 (\n\tgoto WOW64CHK\n) else (\n\tgoto UNSUPPORTED\n)\n\n:WOW64CHK\necho [*] Check if running WOW64 subsystem...\nset PROCESSOR_ARCHITEW6432 > nul\nif !errorlevel!==0 (\n\tgoto UNSUPPORTED\n) else (\n\tgoto SUPPORTED\n)\n\n:SUPPORTED\necho [+] Processor architecture is Intel x86 [supported]\ngoto INSTALL\n\n:UNSUPPORTED\necho [-] Unsupported processor architecture\ngoto END\n\n:INSTALL\necho [*] Installing...\nif not exist rdpwrap.dll (\n\techo [-] Error: rdpwrap.dll file not found\n\tgoto END\n)\necho [*] Copying file to Program Files...\nmd \"%ProgramFiles%\\RDP Wrapper\"\nxcopy /y rdpwrap.dll \"%ProgramFiles%\\RDP Wrapper\\\"\nif not !errorlevel!==0 (\n\techo [-] Failed to copy rdpwrap.dll to Program Files folder\n\tgoto END\n)\necho [*] Modifying registry...\nreg add \"HKLM\\SYSTEM\\CurrentControlSet\\Services\\TermService\\Parameters\" /v ServiceDll /t REG_EXPAND_SZ /d \"%ProgramFiles%\\RDP Wrapper\\rdpwrap.dll\" /f\nif not !errorlevel!==0 (\n\techo [-] Failed to modify registry\n\tgoto END\n)\necho [*] Setting firewall configuration...\nreg add \"HKLM\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\" /v fDenyTSConnections /t REG_DWORD /d 0 /f\nnetsh advfirewall firewall add rule name=\"Remote Desktop\" dir=in protocol=tcp localport=3389 profile=any action=allow\nnetsh advfirewall firewall add rule name=\"Remote Desktop\" dir=in protocol=udp localport=3389 profile=any action=allow\necho [*] Looking for TermService PID...\ntasklist /SVC /FI \"SERVICES eq TermService\" | find \"PID\" /V\necho.\nif !errorlevel!==0 (\n\tgoto DONE\n) else (\n\tgoto SVCSTART\n)\n\n:SVCSTART\necho [*] TermService is stopped. Starting it...\nsc config TermService start= auto | find \"1060\" > nul\nif !errorlevel!==0 (\n\techo [-] TermService is not installed. You need to install it manually.\n\tgoto END\n) else (\n\tnet start TermService\n\tgoto DONE\n)\n\n:DONE\necho [+] Installation complete!\necho Now reboot or restart service.\necho.\necho To reboot computer type:\necho shutdown /r\necho.\necho To restart TermService type:\necho taskkill /f /pid 1234         ^(replace 1234 with real PID which is shown above^)\necho net start TermService\necho.\necho If second method is used, and there are another services sharing svchost.exe,\necho you must start it too:\necho net start Service1\necho net start Service2\necho etc.\ngoto END\n\n:END\n"
  },
  {
    "path": "res/rdpwrap-arm-kb.ini",
    "content": "; RDP Wrapper Library configuration\r\n; for Windows RT (ARMv7)\r\n\r\n; This is experimental file\r\n\r\n[Main]\r\nUpdated=2016-03-07\r\nLogFile=\\rdpwrap.txt\r\n\r\n[SLPolicy]\r\nTerminalServices-RemoteConnectionManager-AllowRemoteConnections=1\r\nTerminalServices-RemoteConnectionManager-AllowMultipleSessions=1\r\nTerminalServices-RemoteConnectionManager-AllowAppServerMode=1\r\nTerminalServices-RemoteConnectionManager-AllowMultimon=1\r\nTerminalServices-RemoteConnectionManager-MaxUserSessions=0\r\nTerminalServices-RemoteConnectionManager-ce0ad219-4670-4988-98fb-89b14c2f072b-MaxSessions=0\r\nTerminalServices-RemoteConnectionManager-45344fe7-00e6-4ac6-9f01-d01fd4ffadfb-MaxSessions=2\r\nTerminalServices-RDP-7-Advanced-Compression-Allowed=1\r\nTerminalServices-RemoteConnectionManager-45344fe7-00e6-4ac6-9f01-d01fd4ffadfb-LocalOnly=0\r\nTerminalServices-RemoteConnectionManager-8dc86f1d-9969-4379-91c1-06fe1dc60575-MaxSessions=1000\r\nTerminalServices-DeviceRedirection-Licenses-TSEasyPrintAllowed=1\r\nTerminalServices-DeviceRedirection-Licenses-PnpRedirectionAllowed=1\r\nTerminalServices-DeviceRedirection-Licenses-TSMFPluginAllowed=1\r\nTerminalServices-RemoteConnectionManager-UiEffects-DWMRemotingAllowed=1\r\n\r\n[PatchCodes]\r\nZero=00\r\nbjmp5=05E0\r\nCDefPolicy_Query_r3_r5=40F20013C5F8203305E0\r\nCDefPolicy_Query_r3_r0=40F20013C0F8203305E0\r\n\r\n[6.2.9200.16384]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:10066DCC          MOV.W           R3, #0x11C\r\n; .text:10066DD0          STR             R3, [SP,#0x16C+var_13C]\r\n; .text:10066DD2          LDR             R3, =__imp_GetVersionExW\r\n; .text:10066DD4          MOVS            R4, #1            <- 0\r\n; .text:10066DD6          ADD             R0, SP, #0x16C+var_13C\r\n; .text:10066DD8          LDR             R3, [R3]\r\nSingleUserPatch.arm=1\r\nSingleUserOffset.arm=66DD4\r\nSingleUserCode.arm=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:10059164          LDR.W           R2, [R5,#0x324]   ; D5 F8 24 23   ; [R5,#0x324] -> R2\r\n; .text:10059168          LDR.W           R3, [R5,#0x320]   ; D5 F8 20 33   ; [R5,#0x320] -> R3\r\n; .text:1005916C          CMP             R2, R3            ; 9A 42         ; compare\r\n; .text:1005916E          BNE             loc_1005917A      ; 04 D1         ; jump if (R2 != R3)\r\n; Changed\r\n; .text:10059164          MOVW            R3, #0x100        ; 40 F2 00 13   ; 0x100 -> R3\r\n; .text:10059168          STR.W           R3, [R5,#0x320]   ; C5 F8 20 33   ; R3 -> [R5,#0x320]\r\n; .text:1005916C          B               loc_1005917A      ; 05 E0         ; jump\r\n; .text:1005916E          BNE             loc_1005917A      ; 04 D1         ; / never executed /\r\nDefPolicyPatch.arm=1\r\nDefPolicyOffset.arm=59164\r\nDefPolicyCode.arm=CDefPolicy_Query_r3_r5\r\n; Hook SLGetWindowsInformationDWORDWrapper\r\nSLPolicyInternal.arm=1\r\nSLPolicyOffset.arm=5F934\r\nSLPolicyFunc.arm=New_Win8SL\r\n\r\n[6.3.9600.16384]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\n; .text:1008E6C2          BL              _IsLicenseTypeLocalOnly_CSLQuery__SAJAAU_GUID__PAH_Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)\r\n; .text:1008E6C6          CMP             R0, #0\r\n; .text:1008E6C8          BLT             loc_1008E6DA\r\n; .text:1008E6CA          LDR             R3, [SP,#0x20+var_14]\r\n; .text:1008E6CC          CBZ             R3, loc_1008E6DA  ; 2B B1         ; jump if (R3 == 0)\r\n; Changed\r\n; .text:1008E6CC          B               loc_1008E6DA      ; 05 E0         ; jump\r\nLocalOnlyPatch.arm=1\r\nLocalOnlyOffset.arm=8E6CC\r\nLocalOnlyCode.arm=bjmp5\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:10069E74          MOV.W           R3, #0x11C\r\n; .text:10069E78          STR             R3, [SP,#0x164+var_13C]\r\n; .text:10069E7A          LDR             R3, =__imp_GetVersionExW\r\n; .text:10069E7C          MOVS            R4, #1            <- 0\r\n; .text:10069E7E          ADD             R0, SP, #0x164+var_13C\r\n; .text:10069E80          LDR             R3, [R3]\r\nSingleUserPatch.arm=1\r\nSingleUserOffset.arm=69E7C\r\nSingleUserCode.arm=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:10064D54          LDR.W           R2, [R0,#0x324]   ; D0 F8 24 23   ; [R0,#0x324] -> R2\r\n; .text:10064D58          LDR.W           R3, [R0,#0x320]   ; D0 F8 20 33   ; [R0,#0x320] -> R3\r\n; .text:10064D5C          CMP             R2, R3            ; 9A 42         ; compare\r\n; .text:10064D5E          BNE             loc_10064D6A      ; 04 D1         ; jump if (R2 != R3)\r\n; Changed\r\n; .text:10064D54          MOVW            R3, #0x100        ; 40 F2 00 13   ; 0x100 -> R3\r\n; .text:10064D58          STR.W           R3, [R0,#0x320]   ; C0 F8 20 33   ; R3 -> [R0,#0x320]\r\n; .text:10064D5C          B               loc_10064D6A      ; 05 E0         ; jump\r\n; .text:10064D5E          BNE             loc_10064D6A      ; 04 D1         ; / never executed /\r\nDefPolicyPatch.arm=1\r\nDefPolicyOffset.arm=64D54\r\nDefPolicyCode.arm=CDefPolicy_Query_r3_r0\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.arm=1\r\nSLInitOffset.arm=32188\r\nSLInitFunc.arm=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.17095]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\n; .text:1008E35A          BL              _IsLicenseTypeLocalOnly_CSLQuery__SAJAAU_GUID__PAH_Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)\r\n; .text:1008E35E          CMP             R0, #0\r\n; .text:1008E360          BLT             loc_1008E372\r\n; .text:1008E362          LDR             R3, [SP,#0x20+var_14]\r\n; .text:1008E364          CBZ             R3, loc_1008E372  ; 2B B1         ; jump if (R3 == 0)\r\n; Changed\r\n; .text:1008E364          B               loc_1008E372      ; 05 E0         ; jump\r\nLocalOnlyPatch.arm=1\r\nLocalOnlyOffset.arm=8E364\r\nLocalOnlyCode.arm=bjmp5\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:10069C2C          MOV.W           R3, #0x11C\r\n; .text:10069C30          STR             R3, [SP,#0x164+var_13C]\r\n; .text:10069C32          LDR             R3, =GetVersionExW\r\n; .text:10069C34          MOVS            R4, #1            <- 0\r\n; .text:10069C36          ADD             R0, SP, #0x164+var_13C\r\n; .text:10069C38          LDR             R3, [R3]\r\nSingleUserPatch.arm=1\r\nSingleUserOffset.arm=69C34\r\nSingleUserCode.arm=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:100649E0          LDR.W           R2, [R0,#0x324]   ; D0 F8 24 23   ; [R0,#0x324] -> R2\r\n; .text:100649E4          LDR.W           R3, [R0,#0x320]   ; D0 F8 20 33   ; [R0,#0x320] -> R3\r\n; .text:100649E8          CMP             R2, R3            ; 9A 42         ; compare\r\n; .text:100649EA          BNE             loc_100649F6      ; 04 D1         ; jump if (R2 != R3)\r\n; Changed\r\n; .text:100649E0          MOVW            R3, #0x100        ; 40 F2 00 13   ; 0x100 -> R3\r\n; .text:100649E4          STR.W           R3, [R0,#0x320]   ; C0 F8 20 33   ; R3 -> [R0,#0x320]\r\n; .text:100649E8          B               loc_10064D6A      ; 05 E0         ; jump\r\n; .text:100649EA          BNE             loc_10064D6A      ; 04 D1         ; / never executed /\r\nDefPolicyPatch.arm=1\r\nDefPolicyOffset.arm=649E0\r\nDefPolicyCode.arm=CDefPolicy_Query_r3_r0\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.arm=1\r\nSLInitOffset.arm=32E3C\r\nSLInitFunc.arm=New_CSLQuery_Initialize\r\n\r\n[SLInit]\r\nbServerSku=1\r\nbRemoteConnAllowed=1\r\nbFUSEnabled=1\r\nbAppServerAllowed=1\r\nbMultimonAllowed=1\r\nlMaxUserSessions=0\r\nulMaxDebugSessions=0\r\nbInitialized=1\r\n\r\n[6.3.9600.16384-SLInit]\r\nbFUSEnabled.arm       =A57E0\r\nlMaxUserSessions.arm  =A57E4\r\nbAppServerAllowed.arm =A57E8\r\nbInitialized.arm      =A57EC\r\nbMultimonAllowed.arm  =A57F0\r\nbServerSku.arm        =A57F4\r\nulMaxDebugSessions.arm=A57F8\r\nbRemoteConnAllowed.arm=A57FC\r\n\r\n[6.3.9600.17095-SLInit]\r\nbFUSEnabled.arm       =A67E0\r\nlMaxUserSessions.arm  =A67E4\r\nbAppServerAllowed.arm =A67E8\r\nbInitialized.arm      =A67EC\r\nbMultimonAllowed.arm  =A67F0\r\nbServerSku.arm        =A67F4\r\nulMaxDebugSessions.arm=A67F8\r\nbRemoteConnAllowed.arm=A67FC\r\n"
  },
  {
    "path": "res/rdpwrap-ini-kb.txt",
    "content": "[Main]\r\n; Last updated date\r\nUpdated=2018-10-10\r\n; Address to log file (RDP Wrapper will write it, if exists)\r\nLogFile=\\rdpwrap.txt\r\n; Hook SLPolicy API on Windows NT 6.0\r\nSLPolicyHookNT60=1\r\n; Hook SLPolicy API on Windows NT 6.1\r\nSLPolicyHookNT61=1\r\n\r\n[SLPolicy]\r\n; Allow Remote Connections\r\nTerminalServices-RemoteConnectionManager-AllowRemoteConnections=1\r\n; Allow Multiple Sessions\r\nTerminalServices-RemoteConnectionManager-AllowMultipleSessions=1\r\n; Allow Multiple Sessions (Application Server Mode)\r\nTerminalServices-RemoteConnectionManager-AllowAppServerMode=1\r\n; Allow Multiple Monitors\r\nTerminalServices-RemoteConnectionManager-AllowMultimon=1\r\n; Max User Sessions (0 = unlimited)\r\nTerminalServices-RemoteConnectionManager-MaxUserSessions=0\r\n; Max Debug Sessions (Windows 8, 0 = unlimited)\r\nTerminalServices-RemoteConnectionManager-ce0ad219-4670-4988-98fb-89b14c2f072b-MaxSessions=0\r\n; Max Sessions\r\n; 0 - logon not possible even from console\r\n; 1 - only one active user (console or remote)\r\n; 2 - allow concurrent sessions\r\nTerminalServices-RemoteConnectionManager-45344fe7-00e6-4ac6-9f01-d01fd4ffadfb-MaxSessions=2\r\n; Allow Advanced Compression with RDP 7 Protocol\r\nTerminalServices-RDP-7-Advanced-Compression-Allowed=1\r\n; IsTerminalTypeLocalOnly = 0\r\nTerminalServices-RemoteConnectionManager-45344fe7-00e6-4ac6-9f01-d01fd4ffadfb-LocalOnly=0\r\n; Max Sessions (hard limit)\r\nTerminalServices-RemoteConnectionManager-8dc86f1d-9969-4379-91c1-06fe1dc60575-MaxSessions=1000\r\n; Allow EasyPrint\r\nTerminalServices-DeviceRedirection-Licenses-TSEasyPrintAllowed=1\r\n; Allow PnP Redirection\r\nTerminalServices-DeviceRedirection-Licenses-PnpRedirectionAllowed=1\r\n; Allow Media Foundation plugins\r\nTerminalServices-DeviceRedirection-Licenses-TSMFPluginAllowed=1\r\n; Allow DWM Remoting\r\nTerminalServices-RemoteConnectionManager-UiEffects-DWMRemotingAllowed=1\r\n\r\n[PatchCodes]\r\nnop=90\r\nZero=00\r\njmpshort=EB\r\nnopjmp=90E9\r\nCDefPolicy_Query_edx_ecx=BA000100008991200300005E90\r\nCDefPolicy_Query_eax_rcx_jmp=B80001000089813806000090EB\r\nCDefPolicy_Query_eax_esi=B80001000089862003000090\r\nCDefPolicy_Query_eax_rdi=B80001000089873806000090\r\nCDefPolicy_Query_eax_ecx=B80001000089812003000090\r\nCDefPolicy_Query_eax_ecx_jmp=B800010000898120030000EB0E\r\nCDefPolicy_Query_eax_rcx=B80001000089813806000090\r\nCDefPolicy_Query_edi_rcx=BF0001000089B938060000909090\r\n\r\n[6.0.6000.16386]\r\n; HOW TO search CSessionArbitrationHelper::IsSingleSessionPerUserEnabled function in IDA Pro:\r\n; 1. Search text: CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; 2. All xrefs will point to this function (in x64 version xref points to subroutine, so you need to go one level up)\r\n; 3. Go to first graph block and find memset, VersionInformation, call GetVersionExW, and so on\r\n\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; Imagebase: 6F320000\r\n; .text:6F3360B9          lea     eax, [ebp+VersionInformation]\r\n; .text:6F3360BF          inc     ebx            <- nop\r\n; .text:6F3360C0          push    eax             ; lpVersionInformation\r\n; .text:6F3360C1          mov     [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:6F3360CB          mov     [esi], ebx\r\n; .text:6F3360CD          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=160BF\r\nSingleUserCode.x86=nop\r\n; Imagebase: 7FF756E0000\r\n; .text:000007FF75745E38          lea     rcx, [rsp+198h+VersionInformation] ; lpVersionInformation\r\n; .text:000007FF75745E3D          mov     ebx, 1     <- 0\r\n; .text:000007FF75745E42          mov     [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000007FF75745E4A          mov     [rdi], ebx\r\n; .text:000007FF75745E4C          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=65E3E\r\nSingleUserCode.x64=Zero\r\n; HOW TO search CDefPolicy::Query function in IDA Pro:\r\n; 1. Search text: CDefPolicy::Query\r\n; 2. All xrefs will point to this function (in x64 version xref sometimes points to subroutine, so you need to go one level up)\r\n; 3. Go to first graph block and find cmp/jz instructions on the bottom of block\r\n\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:6F335CD8          cmp     edx, [ecx+320h]\r\n; .text:6F335CDE          pop     esi\r\n; .text:6F335CDF          jz      loc_6F3426F1\r\n; Changed\r\n; .text:6F335CD8          mov     edx, 100h\r\n; .text:6F335CDD          mov     [ecx+320h], edx\r\n; .text:6F335CE3          pop     esi\r\n; .text:6F335CE4          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=15CD8\r\nDefPolicyCode.x86=CDefPolicy_Query_edx_ecx\r\n; Original\r\n; .text:000007FF7573C88F          mov     eax, [rcx+638h]\r\n; .text:000007FF7573C895          cmp     [rcx+63Ch], eax\r\n; .text:000007FF7573C89B          jnz     short loc_7FF7573C8B3\r\n; Changed\r\n; .text:000007FF7573C88F          mov     eax, 100h\r\n; .text:000007FF7573C894          mov     [rcx+638h], eax\r\n; .text:000007FF7573C89A          nop\r\n; .text:000007FF7573C89B          jmp     short loc_7FF7573C8B3\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=5C88F\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp\r\n\r\n[6.0.6001.18000]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; Imagebase: 6E800000\r\n; .text:6E8185DE          lea     eax, [ebp+VersionInformation]\r\n; .text:6E8185E4          inc     ebx            <- nop\r\n; .text:6E8185E5          push    eax             ; lpVersionInformation\r\n; .text:6E8185E6          mov     [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:6E8185F0          mov     [esi], ebx\r\n; .text:6E8185F2          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=185E4\r\nSingleUserCode.x86=nop\r\n; Imagebase: 7FF76220000\r\n; .text:000007FF76290DB4          lea     rcx, [rsp+198h+VersionInformation] ; lpVersionInformation\r\n; .text:000007FF76290DB9          mov     ebx, 1     <- 0\r\n; .text:000007FF76290DBE          mov     [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000007FF76290DC6          mov     [rdi], ebx\r\n; .text:000007FF76290DC8          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=70DBA\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:6E817FD8          cmp     edx, [ecx+320h]\r\n; .text:6E817FDE          pop     esi\r\n; .text:6E817FDF          jz      loc_6E826F16\r\n; Changed\r\n; .text:6E817FD8          mov     edx, 100h\r\n; .text:6E817FDD          mov     [ecx+320h], edx\r\n; .text:6E817FE3          pop     esi\r\n; .text:6E817FE4          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=17FD8\r\nDefPolicyCode.x86=CDefPolicy_Query_edx_ecx\r\n; Original\r\n; .text:000007FF76285BD7          mov     eax, [rcx+638h]\r\n; .text:000007FF76285BDD          cmp     [rcx+63Ch], eax\r\n; .text:000007FF76285BE3          jnz     short loc_7FF76285BFB\r\n; Changed\r\n; .text:000007FF76285BD7          mov     eax, 100h\r\n; .text:000007FF76285BDC          mov     [rcx+638h], eax\r\n; .text:000007FF76285BE2          nop\r\n; .text:000007FF76285BE3          jmp     short loc_7FF76285BFB\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=65BD7\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp\r\n\r\n[6.0.6002.18005]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; Imagebase: 6F580000\r\n; .text:6F597FA2          lea     eax, [ebp+VersionInformation]\r\n; .text:6F597FA8          inc     ebx            <- nop\r\n; .text:6F597FA9          push    eax             ; lpVersionInformation\r\n; .text:6F597FAA          mov     [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:6F597FB4          mov     [esi], ebx\r\n; .text:6F597FB6          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=17FA8\r\nSingleUserCode.x86=nop\r\n; Imagebase: 7FF766C0000\r\n; .text:000007FF76730FF0          lea     rcx, [rsp+198h+VersionInformation] ; lpVersionInformation\r\n; .text:000007FF76730FF5          mov     ebx, 1     <- 0\r\n; .text:000007FF76730FFA          mov     [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000007FF76731002          mov     [rdi], ebx\r\n; .text:000007FF76731004          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=70FF6\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:6F5979C0          cmp     edx, [ecx+320h]\r\n; .text:6F5979C6          pop     esi\r\n; .text:6F5979C7          jz      loc_6F5A6F26\r\n; Changed\r\n; .text:6F5979C0          mov     edx, 100h\r\n; .text:6F5979C5          mov     [ecx+320h], edx\r\n; .text:6F5979CB          pop     esi\r\n; .text:6F5979CC          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=179C0\r\nDefPolicyCode.x86=CDefPolicy_Query_edx_ecx\r\n; Original\r\n; .text:000007FF76725E83          mov     eax, [rcx+638h]\r\n; .text:000007FF76725E89          cmp     [rcx+63Ch], eax\r\n; .text:000007FF76725E8F          jz      short loc_7FF76725EA7\r\n; Changed\r\n; .text:000007FF76725E83          mov     eax, 100h\r\n; .text:000007FF76725E88          mov     [rcx+638h], eax\r\n; .text:000007FF76725E8E          nop\r\n; .text:000007FF76725E8F          jmp     short loc_7FF76725EA7\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=65E83\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp\r\n\r\n[6.0.6002.19214]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; Imagebase: 6F580000\r\n; .text:6F597FBE          lea     eax, [ebp+VersionInformation]\r\n; .text:6F597FC4          inc     ebx            <- nop\r\n; .text:6F597FC5          push    eax             ; lpVersionInformation\r\n; .text:6F597FC6          mov     [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:6F597FD0          mov     [esi], ebx\r\n; .text:6F597FD2          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=17FC4\r\nSingleUserCode.x86=nop\r\n; Imagebase: 7FF75AC0000\r\n; .text:000007FF75B312A4          lea     rcx, [rsp+198h+VersionInformation] ; lpVersionInformation\r\n; .text:000007FF75B312A9          mov     ebx, 1     <- 0\r\n; .text:000007FF75B312AE          mov     [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000007FF75B312B6          mov     [rdi], ebx\r\n; .text:000007FF75B312B8          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=712AA\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:6F5979B8          cmp     edx, [ecx+320h]\r\n; .text:6F5979BE          pop     esi\r\n; .text:6F5979BF          jz      loc_6F5A6F3E\r\n; Changed\r\n; .text:6F5979B8          mov     edx, 100h\r\n; .text:6F5979BD          mov     [ecx+320h], edx\r\n; .text:6F5979C3          pop     esi\r\n; .text:6F5979C4          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=179B8\r\nDefPolicyCode.x86=CDefPolicy_Query_edx_ecx\r\n; Original\r\n; .text:000007FF75B25FF7          mov     eax, [rcx+638h]\r\n; .text:000007FF75B25FFD          cmp     [rcx+63Ch], eax\r\n; .text:000007FF75B26003          jnz     short loc_7FF75B2601B\r\n; Changed\r\n; .text:000007FF75B25FF7          mov     eax, 100h\r\n; .text:000007FF75B25FFC          mov     [rcx+638h], eax\r\n; .text:000007FF75B26002          nop\r\n; .text:000007FF75B26003          jmp     short loc_7FF75B2601B\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=65FF7\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp\r\n\r\n[6.0.6002.23521]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; Imagebase: 6F580000\r\n; .text:6F597FAE          lea     eax, [ebp+VersionInformation]\r\n; .text:6F597FB4          inc     ebx            <- nop\r\n; .text:6F597FB5          push    eax             ; lpVersionInformation\r\n; .text:6F597FB6          mov     [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:6F597FC0          mov     [esi], ebx\r\n; .text:6F597FC2          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=17FB4\r\nSingleUserCode.x86=nop\r\n; Imagebase: 7FF75AC0000\r\n; .text:000007FF75B31EA4          lea     rcx, [rsp+198h+VersionInformation] ; lpVersionInformation\r\n; .text:000007FF75B31EA9          mov     ebx, 1     <- 0\r\n; .text:000007FF75B31EAE          mov     [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000007FF75B31EB6          mov     [rdi], ebx\r\n; .text:000007FF75B31EB8          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=71EAA\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:6F5979CC          cmp     edx, [ecx+320h]\r\n; .text:6F5979D2          pop     esi\r\n; .text:6F5979D3          jz      loc_6F5A6F2E\r\n; Changed\r\n; .text:6F5979CC          mov     edx, 100h\r\n; .text:6F5979D1          mov     [ecx+320h], edx\r\n; .text:6F5979D7          pop     esi\r\n; .text:6F5979D8          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=179CC\r\nDefPolicyCode.x86=CDefPolicy_Query_edx_ecx\r\n; Original\r\n; .text:000007FF75B269CB          mov     eax, [rcx+638h]\r\n; .text:000007FF75B269D1          cmp     [rcx+63Ch], eax\r\n; .text:000007FF75B269D7          jnz     short loc_7FF75B269EF\r\n; Changed\r\n; .text:000007FF75B269CB          mov     eax, 100h\r\n; .text:000007FF75B269D0          mov     [rcx+638h], eax\r\n; .text:000007FF75B269D6          nop\r\n; .text:000007FF75B269D7          jmp     short loc_7FF75B269EF\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=669CB\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp\r\n\r\n[6.1.7600.16385]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; Imagebase: 6F2E0000\r\n; .text:6F2F9E1F          lea     eax, [ebp+VersionInformation]\r\n; .text:6F2F9E25          inc     ebx            <- nop\r\n; .text:6F2F9E26          push    eax             ; lpVersionInformation\r\n; .text:6F2F9E27          mov     [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:6F2F9E31          mov     [esi], ebx\r\n; .text:6F2F9E33          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=19E25\r\nSingleUserCode.x86=nop\r\n; Imagebase: 7FF75A80000\r\n; .text:000007FF75A97D90          lea     rcx, [rsp+198h+VersionInformation] ; lpVersionInformation\r\n; .text:000007FF75A97D95          mov     ebx, 1     <- 0\r\n; .text:000007FF75A97D9A          mov     [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000007FF75A97DA2          mov     [rdi], ebx\r\n; .text:000007FF75A97DA4          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17D96\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:6F2F96F3          cmp     eax, [esi+320h]\r\n; .text:6F2F96F9          jz      loc_6F30E256\r\n; Changed\r\n; .text:6F2F96F3          mov     eax, 100h\r\n; .text:6F2F96F8          mov     [esi+320h], eax\r\n; .text:6F2F96FE          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=196F3\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\n; Original\r\n; .text:000007FF75A97AD2          cmp     [rdi+63Ch], eax\r\n; .text:000007FF75A97AD8          jz      loc_7FF75AA4978\r\n; Changed\r\n; .text:000007FF75A97AD2          mov     eax, 100h\r\n; .text:000007FF75A97AD7          mov     [rdi+638h], eax\r\n; .text:000007FF75A97ADD          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17AD2\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7600.20890]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=19E2D\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17DF2\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=196FB\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17B0E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7600.21316]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=19E2D\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17E3E\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=196FB\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17B5E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.17514]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; Imagebase: 6F2E0000\r\n; .text:6F2FA497          lea     eax, [ebp+VersionInformation]\r\n; .text:6F2FA49D          inc     ebx            <- nop\r\n; .text:6F2FA49E          push    eax             ; lpVersionInformation\r\n; .text:6F2FA49F          mov     [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:6F2FA4A9          mov     [esi], ebx\r\n; .text:6F2FA4AB          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A49D\r\nSingleUserCode.x86=nop\r\n; Imagebase: 7FF75A80000\r\n; .text:000007FF75A980DC          lea     rcx, [rsp+198h+VersionInformation] ; lpVersionInformation\r\n; .text:000007FF75A980E1          mov     ebx, 1     <- 0\r\n; .text:000007FF75A980E6          mov     [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000007FF75A980EE          mov     [rdi], ebx\r\n; .text:000007FF75A980F0          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=180E2\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:6F2F9D53          cmp     eax, [esi+320h]\r\n; .text:6F2F9D59          jz      loc_6F30B25E\r\n; Changed\r\n; .text:6F2F9D53          mov     eax, 100h\r\n; .text:6F2F9D58          mov     [esi+320h], eax\r\n; .text:6F2F9D5E          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19D53\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\n; Original\r\n; .text:000007FF75A97D8A          cmp     [rdi+63Ch], eax\r\n; .text:000007FF75A97D90          jz      loc_7FF75AA40F4\r\n; Changed\r\n; .text:000007FF75A97D8A          mov     eax, 100h\r\n; .text:000007FF75A97D8F          mov     [rdi+638h], eax\r\n; .text:000007FF75A97D95          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17D8A\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.18540]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; Imagebase: 6F2E0000\r\n; .text:6F2FA4DF          lea     eax, [ebp+VersionInformation]\r\n; .text:6F2FA4E5          inc     ebx            <- nop\r\n; .text:6F2FA4E6          push    eax             ; lpVersionInformation\r\n; .text:6F2FA4E7          mov     [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:6F2FA4F1          mov     [esi], ebx\r\n; .text:6F2FA4F3          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A4E5\r\nSingleUserCode.x86=nop\r\n; Imagebase: 7FF75A80000\r\n; .text:000007FF75A98000          lea     rcx, [rsp+198h+VersionInformation] ; lpVersionInformation\r\n; .text:000007FF75A98005          mov     ebx, 1     <- 0\r\n; .text:000007FF75A9800A          mov     [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000007FF75A98012          mov     [rdi], ebx\r\n; .text:000007FF75A98014          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=18006\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:6F2F9D9F          cmp     eax, [esi+320h]\r\n; .text:6F2F9DA5          jz      loc_6F30B2AE\r\n; Changed\r\n; .text:6F2F9D9F          mov     eax, 100h\r\n; .text:6F2F9DA4          mov     [esi+320h], eax\r\n; .text:6F2F9DAA          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19D9F\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\n; Original\r\n; .text:000007FF75A97C82          cmp     [rdi+63Ch], eax\r\n; .text:000007FF75A97C88          jz      loc_7FF75AA3FBD\r\n; Changed\r\n; .text:000007FF75A97C82          mov     eax, 100h\r\n; .text:000007FF75A97C87          mov     [rdi+638h], eax\r\n; .text:000007FF75A97C8D          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17C82\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.22750]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; Imagebase: 6F2E0000\r\n; .text:6F2FA64F          lea     eax, [ebp+VersionInformation]\r\n; .text:6F2FA655          inc     ebx            <- nop\r\n; .text:6F2FA656          push    eax             ; lpVersionInformation\r\n; .text:6F2FA657          mov     [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:6F2FA661          mov     [esi], ebx\r\n; .text:6F2FA663          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A655\r\nSingleUserCode.x86=nop\r\n; Imagebase: 7FF75A80000\r\n; .text:000007FF75A97E88          lea     rcx, [rsp+198h+VersionInformation] ; lpVersionInformation\r\n; .text:000007FF75A97E8D          mov     ebx, 1     <- 0\r\n; .text:000007FF75A97E92          mov     [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000007FF75A97E9A          mov     [rdi], ebx\r\n; .text:000007FF75A97E9C          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17E8E\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:6F2F9E21          cmp     eax, [esi+320h]\r\n; .text:6F2F9E27          jz      loc_6F30B6CE\r\n; Changed\r\n; .text:6F2F9E21          mov     eax, 100h\r\n; .text:6F2F9E26          mov     [esi+320h], eax\r\n; .text:6F2F9E2C          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19E21\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\n; Original\r\n; .text:000007FF75A97C92          cmp     [rdi+63Ch], eax\r\n; .text:000007FF75A97C98          jz      loc_7FF75AA40A2\r\n; Changed\r\n; .text:000007FF75A97C92          mov     eax, 100h\r\n; .text:000007FF75A97C97          mov     [rdi+638h], eax\r\n; .text:000007FF75A97C9D          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17C92\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.18637]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; Imagebase: 6F2E0000\r\n; .text:6F2FA4D7          lea     eax, [ebp+VersionInformation]\r\n; .text:6F2FA4DD          inc     ebx            <- nop\r\n; .text:6F2FA4DE          push    eax             ; lpVersionInformation\r\n; .text:6F2FA4DF          mov     [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:6F2FA4E9          mov     [esi], ebx\r\n; .text:6F2FA4EB          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A4DD\r\nSingleUserCode.x86=nop\r\n; Imagebase: 7FF75A80000\r\n; .text:000007FF75A980F4          lea     rcx, [rsp+198h+VersionInformation] ; lpVersionInformation\r\n; .text:000007FF75A980F9          mov     ebx, 1     <- 0\r\n; .text:000007FF75A980FE          mov     [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000007FF75A98106          mov     [rdi], ebx\r\n; .text:000007FF75A98108          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=180FA\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:6F2F9DBB          cmp     eax, [esi+320h]\r\n; .text:6F2F9DC1          jz      loc_6F30B2A6\r\n; Changed\r\n; .text:6F2F9DBB          mov     eax, 100h\r\n; .text:6F2F9DC0          mov     [esi+320h], eax\r\n; .text:6F2F9DC6          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19DBB\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\n; Original\r\n; .text:000007FF75A97DC6          cmp     [rdi+63Ch], eax\r\n; .text:000007FF75A97DCC          jz      loc_7FF75AA40BD\r\n; Changed\r\n; .text:000007FF75A97DC6          mov     eax, 100h\r\n; .text:000007FF75A97DCB          mov     [rdi+638h], eax\r\n; .text:000007FF75A97DD1          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17DC6\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.21650]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A49D\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=180BE\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19D53\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17D5A\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.21866]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A49D\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=180BE\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19D53\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17D5A\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.22104]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A49D\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=180C6\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19D53\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17D5E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.22843]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; Imagebase: 6F2E0000\r\n; .text:6F2FA64F          lea     eax, [ebp+VersionInformation]\r\n; .text:6F2FA655          inc     ebx            <- nop\r\n; .text:6F2FA656          push    eax             ; lpVersionInformation\r\n; .text:6F2FA657          mov     [ebp+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:6F2FA661          mov     [esi], ebx\r\n; .text:6F2FA663          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A655\r\nSingleUserCode.x86=nop\r\n; Imagebase: 7FF75A80000\r\n; .text:000007FF75A97F90          lea     rcx, [rsp+198h+VersionInformation] ; lpVersionInformation\r\n; .text:000007FF75A97F95          mov     ebx, 1     <- 0\r\n; .text:000007FF75A97F9A          mov     [rsp+198h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000007FF75A97FA2          mov     [rdi], ebx\r\n; .text:000007FF75A97FA4          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17F96\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:6F2F9E25          cmp     eax, [esi+320h]\r\n; .text:6F2F9E2B          jz      loc_6F30B6D6\r\n; Changed\r\n; .text:6F2F9E25          mov     eax, 100h\r\n; .text:6F2F9E2A          mov     [esi+320h], eax\r\n; .text:6F2F9E30          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19E25\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\n; Original\r\n; .text:000007FF75A97D6E          cmp     [rdi+63Ch], eax\r\n; .text:000007FF75A97D74          jz      loc_7FF75AA4182\r\n; Changed\r\n; .text:000007FF75A97D6E          mov     eax, 100h\r\n; .text:000007FF75A97D73          mov     [rdi+638h], eax\r\n; .text:000007FF75A97D79          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17D6E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.23403]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A65D\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17F62\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19E29\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17CE2\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.24234]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A675\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17F56\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19E41\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17D2E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.2.8102.0]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:1000F7E5          lea     eax, [esp+150h+VersionInformation]\r\n; .text:1000F7E9          inc     esi            <- nop\r\n; .text:1000F7EA          push    eax             ; lpVersionInformation\r\n; .text:1000F7EB          mov     [esp+154h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:1000F7F3          mov     [edi], esi\r\n; .text:1000F7F5          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=F7E9\r\nSingleUserCode.x86=nop\r\n; .text:000000018000D83A          lea     rcx, [rsp+180h+VersionInformation] ; lpVersionInformation\r\n; .text:000000018000D83F          mov     ebx, 1     <- 0\r\n; .text:000000018000D844          mov     [rsp+180h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000000018000D84C          mov     [rdi], ebx\r\n; .text:000000018000D84E          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=D840\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:1000E47C          cmp     eax, [esi+320h]\r\n; .text:1000E482          jz      loc_1002D775\r\n; Changed\r\n; .text:1000E47C          mov     eax, 100h\r\n; .text:1000E481          mov     [esi+320h], eax\r\n; .text:1000E487          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=E47C\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\n; Original\r\n; .text:000000018000D3E6          cmp     [rdi+63Ch], eax\r\n; .text:000000018000D3EC          jz      loc_180027792\r\n; Changed\r\n; .text:000000018000D3E6          mov     eax, 100h\r\n; .text:000000018000D3EB          mov     [rdi+638h], eax\r\n; .text:000000018000D3F1          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=D3E6\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n; Hook SLGetWindowsInformationDWORDWrapper\r\nSLPolicyInternal.x86=1\r\nSLPolicyOffset.x86=1B909\r\nSLPolicyFunc.x86=New_Win8SL\r\nSLPolicyInternal.x64=1\r\nSLPolicyOffset.x64=1A484\r\nSLPolicyFunc.x64=New_Win8SL\r\n\r\n[6.2.8250.0]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:100159C5          lea     eax, [esp+150h+VersionInformation]\r\n; .text:100159C9          inc     esi            <- nop\r\n; .text:100159CA          push    eax             ; lpVersionInformation\r\n; .text:100159CB          mov     [esp+154h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:100159D3          mov     [edi], esi\r\n; .text:100159D5          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=159C9\r\nSingleUserCode.x86=nop\r\n; .text:0000000180011E6E          lea     rcx, [rsp+180h+VersionInformation] ; lpVersionInformation\r\n; .text:0000000180011E73          mov     ebx, 1     <- 0\r\n; .text:0000000180011E78          mov     [rsp+180h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:0000000180011E80          mov     [rdi], ebx\r\n; .text:0000000180011E82          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=11E74\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:10013520          cmp     eax, [esi+320h]\r\n; .text:10013526          jz      loc_1002DB85\r\n; Changed\r\n; .text:10013520          mov     eax, 100h\r\n; .text:10013525          mov     [esi+320h], eax\r\n; .text:1001352B          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=13520\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\n; Original\r\n; .text:000000018001187A          cmp     [rdi+63Ch], eax\r\n; .text:0000000180011880          jz      loc_1800273A2\r\n; Changed\r\n; .text:000000018001187A          mov     eax, 100h\r\n; .text:000000018001187F          mov     [rdi+638h], eax\r\n; .text:0000000180011885          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1187A\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n; Hook SLGetWindowsInformationDWORDWrapper\r\nSLPolicyInternal.x86=1\r\nSLPolicyOffset.x86=1A0A9\r\nSLPolicyFunc.x86=New_Win8SL_CP\r\nSLPolicyInternal.x64=1\r\nSLPolicyOffset.x64=18FAC\r\nSLPolicyFunc.x64=New_Win8SL\r\n\r\n[6.2.8400.0]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:1001547E          lea     eax, [esp+150h+VersionInformation]\r\n; .text:10015482          inc     esi            <- nop\r\n; .text:10015483          push    eax             ; lpVersionInformation\r\n; .text:10015484          mov     [esp+154h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:1001548C          mov     [edi], esi\r\n; .text:1001548E          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=15482\r\nSingleUserCode.x86=nop\r\n; .text:000000018002081E          lea     rcx, [rsp+180h+VersionInformation] ; lpVersionInformation\r\n; .text:0000000180020823          mov     ebx, 1     <- 0\r\n; .text:0000000180020828          mov     [rsp+180h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:0000000180020830          mov     [rdi], ebx\r\n; .text:0000000180020832          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=20824\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:10013E48          cmp     eax, [esi+320h]\r\n; .text:10013E4E          jz      loc_1002E079\r\n; Changed\r\n; .text:10013E48          mov     eax, 100h\r\n; .text:10013E4D          mov     [esi+320h], eax\r\n; .text:10013E53          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=13E48\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\n; Original\r\n; .text:000000018001F102          cmp     [rdi+63Ch], eax\r\n; .text:000000018001F108          jz      loc_18003A02E\r\n; Changed\r\n; .text:000000018001F102          mov     eax, 100h\r\n; .text:000000018001F107          mov     [rdi+638h], eax\r\n; .text:000000018001F10D          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1F102\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n; Hook SLGetWindowsInformationDWORDWrapper\r\nSLPolicyInternal.x86=1\r\nSLPolicyOffset.x86=19629\r\nSLPolicyFunc.x86=New_Win8SL\r\nSLPolicyInternal.x64=1\r\nSLPolicyOffset.x64=2492C\r\nSLPolicyFunc.x64=New_Win8SL\r\n\r\n[6.2.9200.16384]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:1001554E          lea     eax, [esp+150h+VersionInformation]\r\n; .text:10015552          inc     esi            <- nop\r\n; .text:10015553          push    eax             ; lpVersionInformation\r\n; .text:10015554          mov     [esp+154h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:1001555C          mov     [edi], esi\r\n; .text:1001555E          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=15552\r\nSingleUserCode.x86=nop\r\n; .text:000000018002BAA2          lea     rcx, [rsp+180h+VersionInformation] ; lpVersionInformation\r\n; .text:000000018002BAA7          mov     ebx, 1     <- 0\r\n; .text:000000018002BAAC          mov     [rsp+180h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000000018002BAB4          mov     [rdi], ebx\r\n; .text:000000018002BAB6          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2BAA8\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:10013F08          cmp     eax, [esi+320h]\r\n; .text:10013F0E          jz      loc_1002E161\r\n; Changed\r\n; .text:10013F08          mov     eax, 100h\r\n; .text:10013F0D          mov     [esi+320h], eax\r\n; .text:10013F13          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=13F08\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\n; Original\r\n; .text:000000018002A31A          cmp     [rdi+63Ch], eax\r\n; .text:000000018002A320          jz      loc_18003A0F9\r\n; Changed\r\n; .text:000000018002A31A          mov     eax, 100h\r\n; .text:000000018002A31F          mov     [rdi+638h], eax\r\n; .text:000000018002A325          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=2A31A\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n; Hook SLGetWindowsInformationDWORDWrapper\r\nSLPolicyInternal.x86=1\r\nSLPolicyOffset.x86=19559\r\nSLPolicyFunc.x86=New_Win8SL\r\nSLPolicyInternal.x64=1\r\nSLPolicyOffset.x64=21FA8\r\nSLPolicyFunc.x64=New_Win8SL\r\n\r\n[6.2.9200.17048]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:1002058E          lea     eax, [esp+150h+VersionInformation]\r\n; .text:10020592          inc     esi            <- nop\r\n; .text:10020593          push    eax             ; lpVersionInformation\r\n; .text:10020594          mov     [esp+154h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:1002059C          mov     [edi], esi\r\n; .text:1002059E          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=20592\r\nSingleUserCode.x86=nop\r\n; .text:0000000180020942          lea     rcx, [rsp+180h+VersionInformation] ; lpVersionInformation\r\n; .text:0000000180020947          mov     ebx, 1     <- 0\r\n; .text:000000018002094C          mov     [rsp+180h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:0000000180020954          mov     [rdi], ebx\r\n; .text:0000000180020956          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=20948\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:1001F408          cmp     eax, [esi+320h]\r\n; .text:1001F40E          jz      loc_1002E201\r\n; Changed\r\n; .text:1001F408          mov     eax, 100h\r\n; .text:1001F40D          mov     [esi+320h], eax\r\n; .text:1001F413          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=1F408\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\n; Original\r\n; .text:000000018001F206          cmp     [rdi+63Ch], eax\r\n; .text:000000018001F20C          jz      loc_18003A1B4\r\n; Changed\r\n; .text:000000018001F206          mov     eax, 100h\r\n; .text:000000018001F20B          mov     [rdi+638h], eax\r\n; .text:000000018001F211          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1F206\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n; Hook SLGetWindowsInformationDWORDWrapper\r\nSLPolicyInternal.x86=1\r\nSLPolicyOffset.x86=17059\r\nSLPolicyFunc.x86=New_Win8SL\r\nSLPolicyInternal.x64=1\r\nSLPolicyOffset.x64=24570\r\nSLPolicyFunc.x64=New_Win8SL\r\n\r\n[6.2.9200.21166]\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:10015576          lea     eax, [esp+150h+VersionInformation]\r\n; .text:1001557A          inc     esi            <- nop\r\n; .text:1001557B          push    eax             ; lpVersionInformation\r\n; .text:1001557C          mov     [esp+154h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:10015584          mov     [edi], esi\r\n; .text:10015586          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1557A\r\nSingleUserCode.x86=nop\r\n; .text:000000018002BAF2          lea     rcx, [rsp+180h+VersionInformation] ; lpVersionInformation\r\n; .text:000000018002BAF7          mov     ebx, 1     <- 0\r\n; .text:000000018002BAFC          mov     [rsp+180h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000000018002BB04          mov     [rdi], ebx\r\n; .text:000000018002BB06          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2BAF8\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:10013F30          cmp     eax, [esi+320h]\r\n; .text:10013F36          jz      loc_1002E189\r\n; Changed\r\n; .text:10013F30          mov     eax, 100h\r\n; .text:10013F35          mov     [esi+320h], eax\r\n; .text:10013F3B          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=13F30\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\n; Original\r\n; .text:000000018002A3B6          cmp     [rdi+63Ch], eax\r\n; .text:000000018002A3BC          jz      loc_18003A174\r\n; Changed\r\n; .text:000000018002A3B6          mov     eax, 100h\r\n; .text:000000018002A3BB          mov     [rdi+638h], eax\r\n; .text:000000018002A3C1          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=2A3B6\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n; Hook SLGetWindowsInformationDWORDWrapper\r\nSLPolicyInternal.x86=1\r\nSLPolicyOffset.x86=19581\r\nSLPolicyFunc.x86=New_Win8SL\r\nSLPolicyInternal.x64=1\r\nSLPolicyOffset.x64=21FD0\r\nSLPolicyFunc.x64=New_Win8SL\r\n\r\n[6.3.9431.0]\r\n; HOW TO search CEnforcementCore::GetInstanceOfTSLicense function in IDA Pro:\r\n; 1. Search text: CSLQuery::IsLicenseTypeLocalOnly\r\n; 2. All xrefs will point to this function\r\n; 3. Go to function beginning and check ; CODE XREF string, it will point to GetInstanceOfTSLicense function\r\n; 4. Follow CODE XREF, switch to graph view, the next block below is to patch\r\n; Another way:\r\n; 1. Search text: CEnforcementCore::GetInstanceOfTSLicense FAILED - License type me\r\n; 2. All xrefs will point to GetInstanceOfTSLicense\r\n; 3. Follow xref, the previous block above is to patch\r\n\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\n; .text:1008A604          call    ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)\r\n; .text:1008A609          test    eax, eax\r\n; .text:1008A60B          js      short loc_1008A628\r\n; .text:1008A60D          cmp     [ebp+var_8], 0\r\n; .text:1008A611          jz      short loc_1008A628 <- jmp\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=8A611\r\nLocalOnlyCode.x86=jmpshort\r\n; .text:000000018009F713          call    ?IsLicenseTypeLocalOnly@CSLQuery@@SAJAEAU_GUID@@PEAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)\r\n; .text:000000018009F718          test    eax, eax\r\n; .text:000000018009F71A          js      short loc_18009F73B\r\n; .text:000000018009F71C          cmp     [rsp+48h+arg_18], 0\r\n; .text:000000018009F721          jz      short loc_18009F73B <- jmp\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=9F721\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:100306A4          lea     eax, [esp+150h+VersionInformation]\r\n; .text:100306A8          inc     ebx            <- nop\r\n; .text:100306A9          mov     [edi], ebx\r\n; .text:100306AB          push    eax             ; lpVersionInformation\r\n; .text:100306AC          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=306A8\r\nSingleUserCode.x86=nop\r\n; .text:00000001800367F3          lea     rcx, [rsp+190h+VersionInformation] ; lpVersionInformation\r\n; .text:00000001800367F8          mov     ebx, 1     <- 0\r\n; .text:00000001800367FD          mov     [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:0000000180036805          mov     [rdi], ebx\r\n; .text:0000000180036807          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=367F9\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:1002EA25          cmp     eax, [ecx+320h]\r\n; .text:1002EA2B          jz      loc_100348C1\r\n; Changed\r\n; .text:1002EA25          mov     eax, 100h\r\n; .text:1002EA2A          mov     [ecx+320h], eax\r\n; .text:1002EA30          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2EA25\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\n; Original\r\n; .text:00000001800350FD          cmp     [rcx+63Ch], eax\r\n; .text:0000000180035103          jz      loc_18004F6AE\r\n; Changed\r\n; .text:00000001800350FD          mov     eax, 100h\r\n; .text:0000000180035102          mov     [rcx+638h], eax\r\n; .text:0000000180035108          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=350FD\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; HOW TO search CSLQuery::Initialize function in IDA Pro:\r\n; 1. Search text: CSLQuery::Initialize - SLGetWindowsInformationDWORD failed\r\n; 2. All xrefs will point to this function\r\n\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=196B0\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2F9C0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.16384]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\n; .text:100A271C          call    ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)\r\n; .text:100A2721          test    eax, eax\r\n; .text:100A2723          js      short loc_100A2740\r\n; .text:100A2725          cmp     [ebp+var_8], 0\r\n; .text:100A2729          jz      short loc_100A2740 <- jmp\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A2729\r\nLocalOnlyCode.x86=jmpshort\r\n; .text:000000018008181F          cmp     [rsp+48h+arg_18], 0\r\n; .text:0000000180081824          jz      loc_180031DEF <- nop + jmp\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=81824\r\nLocalOnlyCode.x64=nopjmp\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:10018024          lea     eax, [esp+150h+VersionInformation]\r\n; .text:10018028          inc     ebx            <- nop\r\n; .text:10018029          mov     [edi], ebx\r\n; .text:1001802B          push    eax             ; lpVersionInformation\r\n; .text:1001802C          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=18028\r\nSingleUserCode.x86=nop\r\n; .text:000000018002023B          lea     rcx, [rsp+190h+VersionInformation] ; lpVersionInformation\r\n; .text:0000000180020240          mov     ebx, 1     <- 0\r\n; .text:0000000180020245          mov     [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:000000018002024D          mov     [rdi], ebx\r\n; .text:000000018002024F          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=20241\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:10016115          cmp     eax, [ecx+320h]\r\n; .text:1001611B          jz      loc_10034DE1\r\n; Changed\r\n; .text:10016115          mov     eax, 100h\r\n; .text:1001611A          mov     [ecx+320h], eax\r\n; .text:10016120          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=16115\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\n; Original\r\n; .text:0000000180057829          cmp     [rcx+63Ch], eax\r\n; .text:000000018005782F          jz      loc_18005E850\r\n; Changed\r\n; .text:0000000180057829          mov     eax, 100h\r\n; .text:000000018005782E          mov     [rcx+638h], eax\r\n; .text:0000000180057834          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=57829\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=1CEB0\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=554C0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.17095]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\n; .text:100A36C4          call    ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)\r\n; .text:100A36C9          test    eax, eax\r\n; .text:100A36CB          js      short loc_100A36E8\r\n; .text:100A36CD          cmp     [ebp+var_8], 0\r\n; .text:100A36D1          jz      short loc_100A36E8 <- jmp\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A36D1\r\nLocalOnlyCode.x86=jmpshort\r\n; .text:00000001800B914B          call    ?IsLicenseTypeLocalOnly@CSLQuery@@SAJAEAU_GUID@@PEAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)\r\n; .text:00000001800B9150          test    eax, eax\r\n; .text:00000001800B9152          js      short loc_1800B9173\r\n; .text:00000001800B9154          cmp     [rsp+48h+arg_18], 0\r\n; .text:00000001800B9159          jz      short loc_1800B9173 <- jmp\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=B9159\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:10036BA5          lea     eax, [esp+150h+VersionInformation]\r\n; .text:10036BA9          inc     ebx            <- nop\r\n; .text:10036BAA          mov     [edi], ebx\r\n; .text:10036BAC          push    eax             ; lpVersionInformation\r\n; .text:10036BAD          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36BA9\r\nSingleUserCode.x86=nop\r\n; .text:0000000180021823          lea     rcx, [rsp+190h+VersionInformation] ; lpVersionInformation\r\n; .text:0000000180021828          mov     ebx, 1     <- 0\r\n; .text:000000018002182D          mov     [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:0000000180021835          mov     [rdi], ebx\r\n; .text:0000000180021837          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=21829\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:10037529          cmp     eax, [ecx+320h]\r\n; .text:1003752F          jz      loc_10043662\r\n; Changed\r\n; .text:10037529          mov     eax, 100h\r\n; .text:1003752E          mov     [ecx+320h], eax\r\n; .text:10037534          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=37529\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\n; Original\r\n; .text:000000018001F6A1          cmp     [rcx+63Ch], eax\r\n; .text:000000018001F6A7          jz      loc_18007284B\r\n; Changed\r\n; .text:000000018001F6A1          mov     eax, 100h\r\n; .text:000000018001F6A6          mov     [rcx+638h], eax\r\n; .text:000000018001F6AC          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1F6A1\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=117F1\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=3B110\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.17415]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\n; .text:100B33EB          call    ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)\r\n; .text:100B33F0          test    eax, eax\r\n; .text:100B33F2          js      short loc_100B340F\r\n; .text:100B33F4          cmp     [ebp+var_C], 0\r\n; .text:100B33F8          jz      short loc_100B340F <- jmp\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=B33F8\r\nLocalOnlyCode.x86=jmpshort\r\n; .text:000000018008B2D4          cmp     [rsp+58h+arg_18], 0\r\n; .text:000000018008B2D9          jz      loc_180025C39 <- nop + jmp\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8B2D9\r\nLocalOnlyCode.x64=nopjmp\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:10037111          lea     eax, [esp+150h+VersionInformation]\r\n; .text:10037115          inc     ebx            <- nop\r\n; .text:10037116          mov     [edi], ebx\r\n; .text:10037118          push    eax             ; lpVersionInformation\r\n; .text:10037119          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=37115\r\nSingleUserCode.x86=nop\r\n; .text:0000000180033CE3          lea     rcx, [rsp+190h+VersionInformation] ; lpVersionInformation\r\n; .text:0000000180033CE8          mov     ebx, 1     <- 0\r\n; .text:0000000180033CED          mov     [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:0000000180033CF5          mov     [rdi], ebx\r\n; .text:0000000180033CF7          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=33CE9\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:1003CFF9          cmp     eax, [ecx+320h]\r\n; .text:1003CFFF          jz      loc_1004A52F\r\n; Changed\r\n; .text:1003CFF9          mov     eax, 100h\r\n; .text:1003CFFE          mov     [ecx+320h], eax\r\n; .text:1003D004          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3CFF9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\n; Original\r\n; .text:0000000180045825          cmp     [rcx+63Ch], eax\r\n; .text:000000018004582B          jz      loc_180067704\r\n; Changed\r\n; .text:0000000180045825          mov     eax, 100h\r\n; .text:000000018004582A          mov     [rcx+638h], eax\r\n; .text:0000000180045830          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=45825\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=18478\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=5DBC0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.18692]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=B3458\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8B2E9\r\nLocalOnlyCode.x64=nopjmp\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=37105\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=37039\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3CFE9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=45835\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=18488\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=5DBD0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.18708]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=B35D8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8B376\r\nLocalOnlyCode.x64=nopjmp\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=370F5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=36FE9\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3CFD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=457D5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=18308\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=5DB70\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.18928]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=B39D8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8B25D\r\nLocalOnlyCode.x64=nopjmp\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=37D25\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=36C09\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3D6F9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=45495\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=18328\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=5D830\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.19093]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=B3958\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8AE4E\r\nLocalOnlyCode.x64=nopjmp\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3F045\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=36BC9\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3D899\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=45305\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=18288\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=5D660\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.4.9841.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\n; .text:1009569B          call    sub_100B7EE5\r\n; .text:100956A0          test    eax, eax\r\n; .text:100956A2          js      short loc_100956BF\r\n; .text:100956A4          cmp     [ebp+var_C], 0\r\n; .text:100956A8          jz      short loc_100956BF <- jmp\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=956A8\r\nLocalOnlyCode.x86=jmpshort\r\n; .text:0000000180081133          call    sub_1800A9048\r\n; .text:0000000180081138          test    eax, eax\r\n; .text:000000018008113A          js      short loc_18008115B\r\n; .text:000000018008113C          cmp     [rsp+58h+arg_18], 0\r\n; .text:0000000180081141          jz      short loc_18008115B <- jmp\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=81141\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:10030121          lea     eax, [esp+150h+VersionInformation]\r\n; .text:10030125          inc     ebx            <- nop\r\n; .text:10030126          mov     [edi], ebx\r\n; .text:10030128          push    eax             ; lpVersionInformation\r\n; .text:10030129          call    ds:GetVersionExW\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=30125\r\nSingleUserCode.x86=nop\r\n; .text:0000000180012153          lea     rcx, [rsp+190h+VersionInformation] ; lpVersionInformation\r\n; .text:0000000180012158          mov     ebx, 1     <- 0\r\n; .text:000000018001215D          mov     [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:0000000180012165          mov     [rdi], ebx\r\n; .text:0000000180012167          call    cs:GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=12159\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:1003B989          cmp     eax, [ecx+320h]\r\n; .text:1003B98F          jz      loc_1005E809\r\n; Changed\r\n; .text:1003B989          mov     eax, 100h\r\n; .text:1003B98E          mov     [ecx+320h], eax\r\n; .text:1003B994          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3B989\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\n; Original\r\n; .text:000000018000C125          cmp     [rcx+63Ch], eax\r\n; .text:000000018000C12B          jz      sub_18003BABC\r\n; Changed\r\n; .text:000000018000C125          mov     eax, 100h\r\n; .text:000000018000C12A          mov     [rcx+638h], eax\r\n; .text:000000018000C130          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=C125\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46A68\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=1EA50\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.4.9860.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\n; .text:100962BB          call    ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)\r\n; .text:100962C0          test    eax, eax\r\n; .text:100962C2          js      short loc_100962DF\r\n; .text:100962C4          cmp     [ebp+var_C], 0\r\n; .text:100962C8          jz      short loc_100962DF <- jmp\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=962C8\r\nLocalOnlyCode.x86=jmpshort\r\n; .text:0000000180081083          call    ?IsLicenseTypeLocalOnly@CSLQuery@@SAJAEAU_GUID@@PEAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)\r\n; .text:0000000180081088          test    eax, eax\r\n; .text:000000018008108A          js      short loc_1800810AB\r\n; .text:000000018008108C          cmp     [rsp+58h+arg_18], 0\r\n; .text:0000000180081091          jz      short loc_1800810AB <- jmp\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=81091\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:10030841          lea     eax, [esp+150h+VersionInformation]\r\n; .text:10030845          inc     ebx            <- nop\r\n; .text:10030846          mov     [edi], ebx\r\n; .text:10030848          push    eax             ; lpVersionInformation\r\n; .text:10030849          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=30845\r\nSingleUserCode.x86=nop\r\n; .text:0000000180011AA3          lea     rcx, [rsp+190h+VersionInformation] ; lpVersionInformation\r\n; .text:0000000180011AA8          mov     ebx, 1     <- 0\r\n; .text:0000000180011AAD          mov     [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:0000000180011AB5          mov     [rdi], ebx\r\n; .text:0000000180011AB7          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=11AA9\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:1003BEC9          cmp     eax, [ecx+320h]\r\n; .text:1003BECF          jz      loc_1005EE1A\r\n; Changed\r\n; .text:1003BEC9          mov     eax, 100h\r\n; .text:1003BECE          mov     [ecx+320h], eax\r\n; .text:1003BED4          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3BEC9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\n; Original\r\n; .text:000000018000B9F5          cmp     [rcx+63Ch], eax\r\n; .text:000000018000B9FB          jz      sub_18003B9C8\r\n; Changed\r\n; .text:000000018000B9F5          mov     eax, 100h\r\n; .text:000000018000B9FA          mov     [rcx+638h], eax\r\n; .text:000000018000BA00          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=B9F5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46F18\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=1EB00\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.4.9879.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\n; .text:100A9CBB          call    ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)\r\n; .text:100A9CC0          test    eax, eax\r\n; .text:100A9CC2          js      short loc_100A9CDF\r\n; .text:100A9CC4          cmp     [ebp+var_C], 0\r\n; .text:100A9CC8          jz      short loc_100A9CDF <- jmp\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9CC8\r\nLocalOnlyCode.x86=jmpshort\r\n; .text:0000000180095603          call    ?IsLicenseTypeLocalOnly@CSLQuery@@SAJAEAU_GUID@@PEAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)\r\n; .text:0000000180095608          test    eax, eax\r\n; .text:000000018009560A          js      short loc_18009562B\r\n; .text:000000018009560C          cmp     [rsp+58h+arg_18], 0\r\n; .text:0000000180095611          jz      short loc_18009562B <- jmp\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=95611\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:10030C51          lea     eax, [esp+150h+VersionInformation]\r\n; .text:10030C55          inc     ebx            <- nop\r\n; .text:10030C56          mov     [edi], ebx\r\n; .text:10030C58          push    eax             ; lpVersionInformation\r\n; .text:10030C59          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=30C55\r\nSingleUserCode.x86=nop\r\n; .text:0000000180016A2E          call    memset_0\r\n; .text:0000000180016A33          mov     ebx, 1     <- 0\r\n; .text:0000000180016A38          mov     [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:0000000180016A40          lea     rcx, [rsp+190h+VersionInformation] ; lpVersionInformation\r\n; .text:0000000180016A45          mov     [rdi], ebx\r\n; .text:0000000180016A47          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=16A34\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:1002DAB9          cmp     eax, [ecx+320h]\r\n; .text:1002DABF          jz      loc_1006C38A\r\n; Changed\r\n; .text:1002DAB9          mov     eax, 100h\r\n; .text:1002DABE          mov     [ecx+320h], eax\r\n; .text:1002DAC4          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2DAB9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\n; Original\r\n; .text:000000018001BDC5          cmp     [rcx+63Ch], eax\r\n; .text:000000018001BDCB          jz      sub_180045540\r\n; Changed\r\n; .text:000000018001BDC5          mov     eax, 100h\r\n; .text:000000018001BDCA          mov     [rcx+638h], eax\r\n; .text:000000018001BDD0          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1BDC5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=41132\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=24750\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.9926.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8C28\r\nLocalOnlyCode.x86=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=31725\r\nSingleUserCode.x86=nop\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3CF99\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=3F140\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\n; x64 contributed by v-yadli\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x64=1\r\n;;;OFFSET = 0x61\r\n;;;BASE   = 0x95F90\r\nLocalOnlyOffset.x64=95FF1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x64=1\r\n;;;OFFSET   = 0x43\r\n;;;BASE     = 0x12F90\r\n;;;;instruction = 0xBB 0x01 0x00 0x00 0x00\r\n;;;                   ^^^ +1 offset\r\nSingleUserOffset.x64=12A34\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x64=1\r\n;;;\r\n;;;BASE     = 0xBDF0\r\n;;;OFFSET   = 0x15\r\nDefPolicyOffset.x64=BE05\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=24EC0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.10041.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\n; .text:100A9D7B          call    ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)\r\n; .text:100A9D80          test    eax, eax\r\n; .text:100A9D82          js      short loc_100A9D9F\r\n; .text:100A9D84          cmp     [ebp+var_C], 0\r\n; .text:100A9D88          jz      short loc_100A9D9F <- jmp\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9D88\r\nLocalOnlyCode.x86=jmpshort\r\n; .text:0000000180097133          call    ?IsLicenseTypeLocalOnly@CSLQuery@@SAJAEAU_GUID@@PEAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)\r\n; .text:0000000180097138          test    eax, eax\r\n; .text:000000018009713A          js      short loc_18009715B\r\n; .text:000000018009713C          cmp     [rsp+58h+arg_18], 0\r\n; .text:0000000180097141          jz      short loc_18009715B <- jmp\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=97141\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n; .text:10032211          lea     eax, [esp+150h+VersionInformation]\r\n; .text:10032215          inc     ebx            <- nop\r\n; .text:10032216          mov     [edi], ebx\r\n; .text:10032218          push    eax             ; lpVersionInformation\r\n; .text:10032219          call    ds:__imp__GetVersionExW@4 ; GetVersionExW(x)\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=32215\r\nSingleUserCode.x86=nop\r\n; .text:0000000180015C5E          call    memset_0\r\n; .text:0000000180015C63          mov     ebx, 1     <- 0\r\n; .text:0000000180015C68          mov     [rsp+190h+VersionInformation.dwOSVersionInfoSize], 11Ch\r\n; .text:0000000180015C70          lea     rcx, [rsp+190h+VersionInformation] ; lpVersionInformation\r\n; .text:0000000180015C75          mov     [rdi], ebx\r\n; .text:0000000180015C77          call    cs:__imp_GetVersionExW\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=15C64\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\n; Original\r\n; .text:1002DFC9          cmp     eax, [ecx+320h]\r\n; .text:1002DFCF          jz      loc_10056550\r\n; Changed\r\n; .text:1002DFC9          mov     eax, 100h\r\n; .text:1002DFCE          mov     [ecx+320h], eax\r\n; .text:1002DFD4          nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2DFC9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\n; Original\r\n; .text:000000018000B795          cmp     [rcx+63Ch], eax\r\n; .text:000000018000B79B          jz      sub_18003A79A\r\n; Changed\r\n; .text:000000018000B795          mov     eax, 100h\r\n; .text:000000018000B79A          mov     [rcx+638h], eax\r\n; .text:000000018000B7A0          nop\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=B795\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46960\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22E40\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.10240.16384]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7D38\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=96901\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=32A95\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=18F74\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2F5B9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=22865\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46581\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=250F0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.10586.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7C18\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=96AA1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=353B5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=190D4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30B69\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=229A5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=469DE\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=25220\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.10586.589]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7BE8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=96A51\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=353B5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=190D4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30B69\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=229A5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=469DE\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=25220\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.11082.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7C98\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=96AB1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35405\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=190D4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30BB9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=229A5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46A3E\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=25220\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.11102.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5D58\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=95CD1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35A85\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2A9C4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30159\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B5D5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=44FD2\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D160\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14251.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5D58\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=95CD1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35A85\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2A9C4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30159\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B5D5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=44FD2\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D160\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14271.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A4CE8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=941E1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35915\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=263F4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF79\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1C185\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=47725\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CE50\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14279.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A4D28\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=94191\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35915\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=263F4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF79\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1C185\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=47725\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CE50\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14295.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A4D28\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D691\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35925\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=25514\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1BA35\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=47748\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C860\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14300.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F5F1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=26B04\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1D125\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CC60\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14316.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E88\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F5F1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=32B55\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=26B04\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3C1C9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1D295\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46ABD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CC60\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14328.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E88\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F5F1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=32B55\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=26B04\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3C1C9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1D365\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46ABD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CC60\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14332.1001]\r\n; contributed by maxpiva\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E98\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F601\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=357E5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2AE44\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=316A9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1C025\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4755F\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CAD0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14342.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E98\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8EF31\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=357E5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=26774\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=316A9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1CEF5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4755F\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CA20\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14352.1002]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A4478\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D911\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35465\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=24474\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30099\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1AC05\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=44792\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CDB0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14366.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9088\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FB01\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34F65\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=21DE4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=316E9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1A855\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4793E\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CCE0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14367.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9088\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FB01\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34F65\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=21DE4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=316E9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1A855\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4793E\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CCE0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14372.0]\r\n; x64 contributed by kbmorris\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7698\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F931\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34635\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=295A4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF69\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B295\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=460D2\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CC10\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14379.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7698\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F941\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34635\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=295A4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF69\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B295\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=460D2\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CC10\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14383.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7698\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F941\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34635\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=295A4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF69\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B295\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=460D2\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CC10\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14385.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7698\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F941\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34635\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=295A4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF69\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B295\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=460D2\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CC10\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14388.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6038\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D781\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=359C5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=299A4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF29\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1AFC5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45636\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C930\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14393.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6038\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D781\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=359C5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=299A4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF29\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1AFC5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45636\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C930\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14393.1198]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6088\r\nLocalOnlyCode.x86=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=359C5\r\nSingleUserCode.x86=nop\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF29\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45636\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\n\r\n[10.0.14393.1737]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6198\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D861\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35AD5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=299A4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30039\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1AFC5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45724\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C930\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14393.2457]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6248\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D811\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36CE5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=29CF4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31209\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B545\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45824\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C920\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14901.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6038\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D781\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=359C5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=299A4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF29\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1AFC5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45636\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C930\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14905.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6038\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D781\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=359C5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=299A4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF29\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1AFC5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45636\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C930\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14915.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6D98\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E241\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35E35\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=29EB4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30399\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B4A5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46092\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CE40\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14926.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6D18\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E071\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35E55\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=29EB4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=303B9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B4A5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=460A2\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CE40\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14931.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A4908\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8B411\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35705\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=29264\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF69\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1AD05\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=452FD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C7FC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14936.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A3F38\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8B9A1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35355\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=25174\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FCD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1BB55\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=44CFE\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C62C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14942.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A3F38\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=9115B\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35355\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=199BD\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FCD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1064E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=44CFE\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=258EC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14946.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A4018\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=911AB\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35355\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=199AD\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FCD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1064E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=44CFD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=258DC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14951.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A78D8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=94A6B\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3BA85\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1CEDD\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=32629\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=11E9E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=3F680\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22EE0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14955.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A78D8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=94A6B\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3BA85\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1CEDD\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=32629\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=11E9E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=3F680\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22EE0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14959.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A79B8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=934AB\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=2EF05\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=16A0D\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2A4E9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10A8E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=448A0\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=26960\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14965.1001]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7868\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=9345B\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3BA85\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17DFD\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=32A59\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1212E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=3F680\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=26610\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14971.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7968\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=925FB\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36FE5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1803D\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3D9A9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=11FBE\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46500\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=26180\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14986.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7878\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=926BB\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36FA5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17FFD\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3D979\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=11F7E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=464A0\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=26140\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14997.1001]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=931EB\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=274ED\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1D95E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=E000\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15002.1001]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9698\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=931EB\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=346B5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=274ED\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3D779\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1D95E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=47D90\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=E000\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15007.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9648\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=931EB\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34665\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=274ED\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3D719\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1D95E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=47D30\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=E000\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15014.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9648\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=931EB\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34685\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=274ED\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3D739\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1D95E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=47D50\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=E000\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15019.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A39F8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=928FB\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=BADF5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=FBDD\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=A8479\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx_jmp\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=20AAE\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=3C240\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=24480\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15025.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=9259B\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2C08D\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1DD0E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=E5B8\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15031.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5BA8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E221\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=30A75\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2A114\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2B1D9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1C7B5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4532D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D80C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15042.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5BA8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E221\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=30A75\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2A114\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2B1D9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1C7B5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4532D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D80C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15046.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=80BB8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E361\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=31E95\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=15E14\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=38A19\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=E745\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=9422D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=21FFC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15048.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=80BB8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E361\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=31E95\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=15E14\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=38A19\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=E745\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=9422D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=21FFC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15055.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5348\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D2E1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=374C5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=181E4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3BAD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10B65\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=44EFF\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22AEC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15058.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5D68\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8CAA1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35075\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=24E74\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FCD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=2DD65\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4549D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D1EC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15061.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5D68\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8CAA1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35075\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=24E74\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FCD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=2DD65\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4549D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D1EC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15063.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5D68\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8CAA1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35075\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=24E74\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FCD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=2DD65\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4549D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D1EC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15063.296]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5D68\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8CAA1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35075\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=24E74\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FCD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=2DD65\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4549D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D1EC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15063.994]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8CB01\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=15EA4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=FAE5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=234DC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15063.1155]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8CB01\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=15EA4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=FAE5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=234DC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16179.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AA568\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8C141\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34425\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=16F84\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31219\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1E7F5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45F30\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=21700\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16184.1001]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AA568\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8C141\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34425\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=16F84\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31219\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1E7F5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45F30\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=21700\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16199.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=ABA68\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8CED1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=348C5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=28C14\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=319B9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=CB25\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=469B0\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=FA30\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16215.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7CE8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8DE21\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39F05\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=28724\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3E019\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=CC15\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46462\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=FB00\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16232.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7D38\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8DD41\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39F35\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=287B4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3E0C9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=CC15\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4650F\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=FB00\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16237.1001]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7F38\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E911\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39F85\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1BC84\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3E119\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=DA55\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4655D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2180C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16241.1001]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7F38\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E911\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39F85\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1BC84\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3E119\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=DA55\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4655D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2180C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16251.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=ABC88\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8EC21\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3A525\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1BCB4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31779\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=DAF5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=447FD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2183C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16251.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=ABC88\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8EC21\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3A525\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1BCB4\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31779\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=DAF5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=447FD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2183C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16257.1]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AB718\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E841\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=33925\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=11364\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3C409\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1EFD5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4504D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2495C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16257.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AB718\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E841\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=33925\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=11364\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3C409\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1EFD5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4504D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2495C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16273.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AB798\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E871\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=33925\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=11364\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3C409\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1EFD5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4504D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2495C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16275.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9388\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=90001\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39435\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C724\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DE89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D75\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=463D4\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D0C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16278.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9388\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=90001\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39435\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C724\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DE89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D75\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=463D4\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D0C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16281.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E08\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FD01\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C774\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DC89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=461BD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D5C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16288.1]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E08\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FD01\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C774\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DC89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=461BD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D5C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16291.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E08\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FD01\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C774\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DC89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=461BD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D5C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16294.1]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E08\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FD01\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C774\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DC89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=461BD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D5C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16296.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E08\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FD01\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C774\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DC89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=461BD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D5C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16299.0]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E08\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FD01\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C774\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DC89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=461BD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D5C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16299.15]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E08\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FD01\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C774\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DC89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=461BD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D5C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16353.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9388\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=90001\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39435\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C724\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DE89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D75\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=463D4\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D0C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16362.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E38\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FBA1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=2F61C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=19D1C\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DE99\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=463D4\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D9C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17004.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8EB8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FB41\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=2F65C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=19D1C\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DF09\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4643F\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D9C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17017.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AB388\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F291\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3477C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1977C\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31049\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=125A5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45CDD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=227DC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17025.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AB498\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F291\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3477C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1977C\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31049\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=125A5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45CDD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=227DC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17035.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AB3F8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F271\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=354AC\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=14E7C\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31F19\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10CB5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45C4D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22AEC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17046.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AB3F8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F281\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=354AC\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=14E8C\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31F19\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10CC5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45C4D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22AFC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17063.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AD7F8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=92671\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36B0C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=153CC\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=33569\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=111CE\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=474AD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2318C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17115.1]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AD738\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=925D1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36B0C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1511C\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=33569\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10E78\r\nDefPolicyCode.x64=CDefPolicy_Query_edi_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=474AD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22E6C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17128.1]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AD738\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=925D1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36B0C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1511C\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=33569\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10E78\r\nDefPolicyCode.x64=CDefPolicy_Query_edi_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=474AD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22E6C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17133.1]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AD738\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=925D1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36B0C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1511C\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=33569\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10E78\r\nDefPolicyCode.x64=CDefPolicy_Query_edi_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=474AD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22E6C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17134.1]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AD738\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=925D1\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36B0C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1511C\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=33569\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10E78\r\nDefPolicyCode.x64=CDefPolicy_Query_edi_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=474AD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22E6C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17723.1000]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=75D91\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelperMgr::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1296C\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17A45\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=1B10C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17763.1]\r\n; Patch CEnforcementCore::GetInstanceOfTSLicense\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AF8E4\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=77941\r\nLocalOnlyCode.x64=jmpshort\r\n; Patch CSessionArbitrationHelperMgr::IsSingleSessionPerUserEnabled\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=4D505\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1322C\r\nSingleUserCode.x64=Zero\r\n; Patch CDefPolicy::Query\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=4BD09\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17F45\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\n; Hook CSLQuery::Initialize\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=5B02A\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=1ABFC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[SLInit]\r\n; Is server\r\nbServerSku=1\r\n; Enable listener - allow remote connections\r\nbRemoteConnAllowed=1\r\n; Allow fast user switching\r\nbFUSEnabled=1\r\n; Allow RemoteApp server\r\nbAppServerAllowed=1\r\n; Allow multi monitor\r\nbMultimonAllowed=1\r\n; Maximum user sessions (0 - unlimited)\r\nlMaxUserSessions=0\r\n; Maximum debug/glass sessions (0 - unlimited)\r\nulMaxDebugSessions=0\r\n; SLInit function is succeeded\r\nbInitialized=1\r\n\r\n[6.3.9431.0-SLInit]\r\n; HOW TO search SLInit global variables in IDA Pro:\r\n; 1. Search text: The SL policy for ',27h,'Allow Multiple Sessions',27h,' is not defined\r\n; 2. Xref will point to CSLQuery::Initialize function\r\n; 3. Follow xref, look for cmp instruction nearby\r\n; 4. It will be comparsion with CSLQuery::bServerSku constant\r\n; 5. Now it's easy to find other constants\r\n\r\n; Strings to find other values:\r\n; CSLQuery::GetMaxUserSessions\r\n; CSLQuery::IsAppServerInstalled failed: \r\n; CSLQuery::AreRemoteConnectionsAllowed f\r\n; CSLQuery::IsMultimonAllowed\r\n; CSLQuery::GetMaxDebugSessions\r\n; CSLQuery::IsFUSEnabled\r\n\r\nbFUSEnabled.x86       =A22A8\r\nlMaxUserSessions.x86  =A22AC\r\nbAppServerAllowed.x86 =A22B0\r\nbInitialized.x86      =A22B4\r\nbMultimonAllowed.x86  =A22B8\r\nbServerSku.x86        =A22BC\r\nulMaxDebugSessions.x86=A22C0\r\nbRemoteConnAllowed.x86=A22C4\r\n\r\nbFUSEnabled.x64       =C4490\r\nlMaxUserSessions.x64  =C4494\r\nbAppServerAllowed.x64 =C4498\r\nbInitialized.x64      =C449C\r\nbMultimonAllowed.x64  =C44A0\r\nbServerSku.x64        =C44A4\r\nulMaxDebugSessions.x64=C44A8\r\nbRemoteConnAllowed.x64=C44AC\r\n\r\n[6.3.9600.16384-SLInit]\r\nbFUSEnabled.x86       =C02A8\r\nlMaxUserSessions.x86  =C02AC\r\nbAppServerAllowed.x86 =C02B0\r\nbInitialized.x86      =C02B4\r\nbMultimonAllowed.x86  =C02B8\r\nbServerSku.x86        =C02BC\r\nulMaxDebugSessions.x86=C02C0\r\nbRemoteConnAllowed.x86=C02C4\r\n\r\nbServerSku.x64        =E6494\r\nulMaxDebugSessions.x64=E6498\r\nbRemoteConnAllowed.x64=E649C\r\nbFUSEnabled.x64       =E64A0\r\nlMaxUserSessions.x64  =E64A4\r\nbAppServerAllowed.x64 =E64A8\r\nbInitialized.x64      =E64AC\r\nbMultimonAllowed.x64  =E64B0\r\n\r\n[6.3.9600.17095-SLInit]\r\nbFUSEnabled.x86       =C12A8\r\nlMaxUserSessions.x86  =C12AC\r\nbAppServerAllowed.x86 =C12B0\r\nbInitialized.x86      =C12B4\r\nbMultimonAllowed.x86  =C12B8\r\nbServerSku.x86        =C12BC\r\nulMaxDebugSessions.x86=C12C0\r\nbRemoteConnAllowed.x86=C12C4\r\n\r\nbServerSku.x64        =E4494\r\nulMaxDebugSessions.x64=E4498\r\nbRemoteConnAllowed.x64=E449C\r\nbFUSEnabled.x64       =E44A0\r\nlMaxUserSessions.x64  =E44A4\r\nbAppServerAllowed.x64 =E44A8\r\nbInitialized.x64      =E44AC\r\nbMultimonAllowed.x64  =E44B0\r\n\r\n[6.3.9600.17415-SLInit]\r\nbFUSEnabled.x86       =D3068\r\nlMaxUserSessions.x86  =D306C\r\nbAppServerAllowed.x86 =D3070\r\nbInitialized.x86      =D3074\r\nbMultimonAllowed.x86  =D3078\r\nbServerSku.x86        =D307C\r\nulMaxDebugSessions.x86=D3080\r\nbRemoteConnAllowed.x86=D3084\r\n\r\nbFUSEnabled.x64       =F9054\r\nlMaxUserSessions.x64  =F9058\r\nbAppServerAllowed.x64 =F905C\r\nbInitialized.x64      =F9060\r\nbMultimonAllowed.x64  =F9064\r\nbServerSku.x64        =F9068\r\nulMaxDebugSessions.x64=F906C\r\nbRemoteConnAllowed.x64=F9070\r\n\r\n[6.3.9600.18692-SLInit]\r\nbFUSEnabled.x86       =D3068\r\nlMaxUserSessions.x86  =D306C\r\nbAppServerAllowed.x86 =D3070\r\nbInitialized.x86      =D3074\r\nbMultimonAllowed.x86  =D3078\r\nbServerSku.x86        =D307C\r\nulMaxDebugSessions.x86=D3080\r\nbRemoteConnAllowed.x86=D3084\r\n\r\nbFUSEnabled.x64       =F9054\r\nlMaxUserSessions.x64  =F9058\r\nbAppServerAllowed.x64 =F905C\r\nbInitialized.x64      =F9060\r\nbMultimonAllowed.x64  =F9064\r\nbServerSku.x64        =F9068\r\nulMaxDebugSessions.x64=F906C\r\nbRemoteConnAllowed.x64=F9070\r\n\r\n[6.3.9600.18708-SLInit]\r\nbFUSEnabled.x86       =D3068\r\nlMaxUserSessions.x86  =D306C\r\nbAppServerAllowed.x86 =D3070\r\nbInitialized.x86      =D3074\r\nbMultimonAllowed.x86  =D3078\r\nbServerSku.x86        =D307C\r\nulMaxDebugSessions.x86=D3080\r\nbRemoteConnAllowed.x86=D3084\r\n\r\nbFUSEnabled.x64       =FA054\r\nlMaxUserSessions.x64  =FA058\r\nbAppServerAllowed.x64 =FA05C\r\nbInitialized.x64      =FA060\r\nbMultimonAllowed.x64  =FA064\r\nbServerSku.x64        =FA068\r\nulMaxDebugSessions.x64=FA06C\r\nbRemoteConnAllowed.x64=FA070\r\n\r\n[6.3.9600.18928-SLInit]\r\nbFUSEnabled.x86       =D3068\r\nlMaxUserSessions.x86  =D306C\r\nbAppServerAllowed.x86 =D3070\r\nbInitialized.x86      =D3074\r\nbMultimonAllowed.x86  =D3078\r\nbServerSku.x86        =D307C\r\nulMaxDebugSessions.x86=D3080\r\nbRemoteConnAllowed.x86=D3084\r\n\r\nbFUSEnabled.x64       =FA054\r\nlMaxUserSessions.x64  =FA058\r\nbAppServerAllowed.x64 =FA05C\r\nbInitialized.x64      =FA060\r\nbMultimonAllowed.x64  =FA064\r\nbServerSku.x64        =FA068\r\nulMaxDebugSessions.x64=FA06C\r\nbRemoteConnAllowed.x64=FA070\r\n\r\n[6.3.9600.19093-SLInit]\r\nbFUSEnabled.x86       =D3068\r\nlMaxUserSessions.x86  =D306C\r\nbAppServerAllowed.x86 =D3070\r\nbInitialized.x86      =D3074\r\nbMultimonAllowed.x86  =D3078\r\nbServerSku.x86        =D307C\r\nulMaxDebugSessions.x86=D3080\r\nbRemoteConnAllowed.x86=D3084\r\n\r\nbFUSEnabled.x64       =FA054\r\nlMaxUserSessions.x64  =FA058\r\nbAppServerAllowed.x64 =FA05C\r\nbInitialized.x64      =FA060\r\nbMultimonAllowed.x64  =FA064\r\nbServerSku.x64        =FA068\r\nulMaxDebugSessions.x64=FA06C\r\nbRemoteConnAllowed.x64=FA070\r\n\r\n[6.4.9841.0-SLInit]\r\nbFUSEnabled.x86       =BF9F0\r\nlMaxUserSessions.x86  =BF9F4\r\nbAppServerAllowed.x86 =BF9F8\r\nbInitialized.x86      =BF9FC\r\nbMultimonAllowed.x86  =BFA00\r\nbServerSku.x86        =BFA04\r\nulMaxDebugSessions.x86=BFA08\r\nbRemoteConnAllowed.x86=BFA0C\r\n\r\nbFUSEnabled.x64       =ECFF8\r\nlMaxUserSessions.x64  =ECFFC\r\nbAppServerAllowed.x64 =ED000\r\nbInitialized.x64      =ED004\r\nbMultimonAllowed.x64  =ED008\r\nbServerSku.x64        =ED00C\r\nulMaxDebugSessions.x64=ED010\r\nbRemoteConnAllowed.x64=ED014\r\n\r\n[6.4.9860.0-SLInit]\r\nbFUSEnabled.x86       =BF7E0\r\nlMaxUserSessions.x86  =BF7E4\r\nbAppServerAllowed.x86 =BF7E8\r\nbInitialized.x86      =BF7EC\r\nbMultimonAllowed.x86  =BF7F0\r\nbServerSku.x86        =BF7F4\r\nulMaxDebugSessions.x86=BF7F8\r\nbRemoteConnAllowed.x86=BF7FC\r\n\r\nbFUSEnabled.x64       =ECBD8\r\nlMaxUserSessions.x64  =ECBDC\r\nbAppServerAllowed.x64 =ECBE0\r\nbInitialized.x64      =ECBE4\r\nbMultimonAllowed.x64  =ECBE8\r\nbServerSku.x64        =ECBEC\r\nulMaxDebugSessions.x64=ECBF0\r\nbRemoteConnAllowed.x64=ECBF4\r\n\r\n[6.4.9879.0-SLInit]\r\nbFUSEnabled.x86       =C27D8\r\nlMaxUserSessions.x86  =C27DC\r\nbAppServerAllowed.x86 =C27E0\r\nbInitialized.x86      =C27E4\r\nbMultimonAllowed.x86  =C27E8\r\nbServerSku.x86        =C27EC\r\nulMaxDebugSessions.x86=C27F0\r\nbRemoteConnAllowed.x86=C27F4\r\n\r\nbFUSEnabled.x64       =EDBF0\r\nlMaxUserSessions.x64  =EDBF4\r\nbAppServerAllowed.x64 =EDBF8\r\nbInitialized.x64      =EDBFC\r\nbMultimonAllowed.x64  =EDC00\r\nbServerSku.x64        =EDC04\r\nulMaxDebugSessions.x64=EDC08\r\nbRemoteConnAllowed.x64=EDC0C\r\n\r\n[10.0.9926.0-SLInit]\r\nbFUSEnabled.x86       =C17D8\r\nlMaxUserSessions.x86  =C17DC\r\nbAppServerAllowed.x86 =C17E0\r\nbInitialized.x86      =C17E4\r\nbMultimonAllowed.x86  =C17E8\r\nbServerSku.x86        =C17EC\r\nulMaxDebugSessions.x86=C17F0\r\nbRemoteConnAllowed.x86=C17F4\r\n; x64 contributed by v-yadli\r\nbFUSEnabled.x64       =EEBF0\r\nlMaxUserSessions.x64  =EEBF4\r\nbAppServerAllowed.x64 =EEBF8\r\nbInitialized.x64      =EEBFC\r\nbMultimonAllowed.x64  =EEC00\r\nbServerSku.x64        =EEC04\r\nulMaxDebugSessions.x64=EEC08\r\nbRemoteConnAllowed.x64=EEC0C\r\n\r\n[10.0.10041.0-SLInit]\r\nbFUSEnabled.x86       =C5F60\r\nlMaxUserSessions.x86  =C5F64\r\nbAppServerAllowed.x86 =C5F68\r\nbInitialized.x86      =C5F6C\r\nbMultimonAllowed.x86  =C5F70\r\nbServerSku.x86        =C5F74\r\nulMaxDebugSessions.x86=C5F78\r\nbRemoteConnAllowed.x86=C5F7C\r\n\r\nbFUSEnabled.x64       =F3448\r\nlMaxUserSessions.x64  =F344C\r\nbAppServerAllowed.x64 =F3450\r\nbInitialized.x64      =F3454\r\nbMultimonAllowed.x64  =F3458\r\nbServerSku.x64        =F345C\r\nulMaxDebugSessions.x64=F3460\r\nbRemoteConnAllowed.x64=F3464\r\n\r\n[10.0.10240.16384-SLInit]\r\nbFUSEnabled.x86       =C3F60\r\nlMaxUserSessions.x86  =C3F64\r\nbAppServerAllowed.x86 =C3F68\r\nbInitialized.x86      =C3F6C\r\nbMultimonAllowed.x86  =C3F70\r\nbServerSku.x86        =C3F74\r\nulMaxDebugSessions.x86=C3F78\r\nbRemoteConnAllowed.x86=C3F7C\r\n\r\nlMaxUserSessions.x64  =F23B0\r\nbAppServerAllowed.x64 =F23B4\r\nbServerSku.x64        =F23B8\r\nbFUSEnabled.x64       =F3460\r\nbInitialized.x64      =F3464\r\nbMultimonAllowed.x64  =F3468\r\nulMaxDebugSessions.x64=F346C\r\nbRemoteConnAllowed.x64=F3470\r\n\r\n[10.0.10586.0-SLInit]\r\nbFUSEnabled.x86       =C3F60\r\nlMaxUserSessions.x86  =C3F64\r\nbAppServerAllowed.x86 =C3F68\r\nbInitialized.x86      =C3F6C\r\nbMultimonAllowed.x86  =C3F70\r\nbServerSku.x86        =C3F74\r\nulMaxDebugSessions.x86=C3F78\r\nbRemoteConnAllowed.x86=C3F7C\r\n\r\nlMaxUserSessions.x64  =F23B0\r\nbAppServerAllowed.x64 =F23B4\r\nbServerSku.x64        =F23B8\r\nbFUSEnabled.x64       =F3460\r\nbInitialized.x64      =F3464\r\nbMultimonAllowed.x64  =F3468\r\nulMaxDebugSessions.x64=F346C\r\nbRemoteConnAllowed.x64=F3470\r\n\r\n[10.0.10586.589-SLInit]\r\nbFUSEnabled.x86       =C3F60\r\nlMaxUserSessions.x86  =C3F64\r\nbAppServerAllowed.x86 =C3F68\r\nbInitialized.x86      =C3F6C\r\nbMultimonAllowed.x86  =C3F70\r\nbServerSku.x86        =C3F74\r\nulMaxDebugSessions.x86=C3F78\r\nbRemoteConnAllowed.x86=C3F7C\r\n\r\nlMaxUserSessions.x64  =F23B0\r\nbAppServerAllowed.x64 =F23B4\r\nbServerSku.x64        =F23B8\r\nbFUSEnabled.x64       =F3460\r\nbInitialized.x64      =F3464\r\nbMultimonAllowed.x64  =F3468\r\nulMaxDebugSessions.x64=F346C\r\nbRemoteConnAllowed.x64=F3470\r\n\r\n[10.0.11082.1000-SLInit]\r\nbFUSEnabled.x86       =C3F60\r\nlMaxUserSessions.x86  =C3F64\r\nbAppServerAllowed.x86 =C3F68\r\nbInitialized.x86      =C3F6C\r\nbMultimonAllowed.x86  =C3F70\r\nbServerSku.x86        =C3F74\r\nulMaxDebugSessions.x86=C3F78\r\nbRemoteConnAllowed.x86=C3F7C\r\n\r\nlMaxUserSessions.x64  =F23B0\r\nbAppServerAllowed.x64 =F23B4\r\nbServerSku.x64        =F23B8\r\nbFUSEnabled.x64       =F3460\r\nbInitialized.x64      =F3464\r\nbMultimonAllowed.x64  =F3468\r\nulMaxDebugSessions.x64=F346C\r\nbRemoteConnAllowed.x64=F3470\r\n\r\n[10.0.11102.1000-SLInit]\r\nbInitialized.x86      =C1F5C\r\nbServerSku.x86        =C1F60\r\nlMaxUserSessions.x86  =C1F64\r\nbAppServerAllowed.x86 =C1F68\r\nbRemoteConnAllowed.x86=C1F6C\r\nbMultimonAllowed.x86  =C1F70\r\nulMaxDebugSessions.x86=C1F74\r\nbFUSEnabled.x86       =C1F78\r\n\r\nbInitialized.x64      =F2430\r\nbRemoteConnAllowed.x64=F2434\r\nbMultimonAllowed.x64  =F2438\r\nulMaxDebugSessions.x64=F243C\r\nbFUSEnabled.x64       =F2440\r\nbServerSku.x64        =F244C\r\nlMaxUserSessions.x64  =F2450\r\nbAppServerAllowed.x64 =F2454\r\n\r\n[10.0.14251.1000-SLInit]\r\nbInitialized.x86      =C1F5C\r\nbServerSku.x86        =C1F60\r\nlMaxUserSessions.x86  =C1F64\r\nbAppServerAllowed.x86 =C1F68\r\nbRemoteConnAllowed.x86=C1F6C\r\nbMultimonAllowed.x86  =C1F70\r\nulMaxDebugSessions.x86=C1F74\r\nbFUSEnabled.x86       =C1F78\r\n\r\nbInitialized.x64      =F2430\r\nbRemoteConnAllowed.x64=F2434\r\nbMultimonAllowed.x64  =F2438\r\nulMaxDebugSessions.x64=F243C\r\nbFUSEnabled.x64       =F2440\r\nbServerSku.x64        =F244C\r\nlMaxUserSessions.x64  =F2450\r\nbAppServerAllowed.x64 =F2454\r\n\r\n[10.0.14271.1000-SLInit]\r\nbInitialized.x86      =C0F5C\r\nbServerSku.x86        =C0F60\r\nlMaxUserSessions.x86  =C0F64\r\nbAppServerAllowed.x86 =C0F68\r\nbRemoteConnAllowed.x86=C0F6C\r\nbMultimonAllowed.x86  =C0F70\r\nulMaxDebugSessions.x86=C0F74\r\nbFUSEnabled.x86       =C0F78\r\n\r\nbServerSku.x64        =EF3C0\r\nlMaxUserSessions.x64  =EF3C4\r\nbAppServerAllowed.x64 =EF3C8\r\nbInitialized.x64      =F0460\r\nbRemoteConnAllowed.x64=F0464\r\nbMultimonAllowed.x64  =F0468\r\nulMaxDebugSessions.x64=F046C\r\nbFUSEnabled.x64       =F0470\r\n\r\n[10.0.14279.1000-SLInit]\r\nbInitialized.x86      =C0F5C\r\nbServerSku.x86        =C0F60\r\nlMaxUserSessions.x86  =C0F64\r\nbAppServerAllowed.x86 =C0F68\r\nbRemoteConnAllowed.x86=C0F6C\r\nbMultimonAllowed.x86  =C0F70\r\nulMaxDebugSessions.x86=C0F74\r\nbFUSEnabled.x86       =C0F78\r\n\r\nbServerSku.x64        =EF3C0\r\nlMaxUserSessions.x64  =EF3C4\r\nbAppServerAllowed.x64 =EF3C8\r\nbInitialized.x64      =F0460\r\nbRemoteConnAllowed.x64=F0464\r\nbMultimonAllowed.x64  =F0468\r\nulMaxDebugSessions.x64=F046C\r\nbFUSEnabled.x64       =F0470\r\n\r\n[10.0.14295.1000-SLInit]\r\nbInitialized.x86      =C0F5C\r\nbServerSku.x86        =C0F60\r\nlMaxUserSessions.x86  =C0F64\r\nbAppServerAllowed.x86 =C0F68\r\nbRemoteConnAllowed.x86=C0F6C\r\nbMultimonAllowed.x86  =C0F70\r\nulMaxDebugSessions.x86=C0F74\r\nbFUSEnabled.x86       =C0F78\r\n\r\nbServerSku.x64        =E73C0\r\nlMaxUserSessions.x64  =E73C4\r\nbAppServerAllowed.x64 =E73C8\r\nbInitialized.x64      =E8460\r\nbRemoteConnAllowed.x64=E8464\r\nbMultimonAllowed.x64  =E8468\r\nulMaxDebugSessions.x64=E846C\r\nbFUSEnabled.x64       =E8470\r\n\r\n[10.0.14300.1000-SLInit]\r\nbServerSku.x64        =E93C0\r\nlMaxUserSessions.x64  =E93C4\r\nbAppServerAllowed.x64 =E93C8\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\n\r\n[10.0.14316.1000-SLInit]\r\nbInitialized.x86      =C4F58\r\nbServerSku.x86        =C4F5C\r\nlMaxUserSessions.x86  =C4F60\r\nbAppServerAllowed.x86 =C4F64\r\nbRemoteConnAllowed.x86=C4F68\r\nbMultimonAllowed.x86  =C4F6C\r\nulMaxDebugSessions.x86=C4F70\r\nbFUSEnabled.x86       =C4F74\r\n\r\nbServerSku.x64        =E93C0\r\nlMaxUserSessions.x64  =E93C4\r\nbAppServerAllowed.x64 =E93C8\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\n\r\n[10.0.14328.1000-SLInit]\r\nbInitialized.x86      =C4F58\r\nbServerSku.x86        =C4F5C\r\nlMaxUserSessions.x86  =C4F60\r\nbAppServerAllowed.x86 =C4F64\r\nbRemoteConnAllowed.x86=C4F68\r\nbMultimonAllowed.x86  =C4F6C\r\nulMaxDebugSessions.x86=C4F70\r\nbFUSEnabled.x86       =C4F74\r\n\r\nbServerSku.x64        =E93C0\r\nlMaxUserSessions.x64  =E93C4\r\nbAppServerAllowed.x64 =E93C8\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\n\r\n[10.0.14332.1001-SLInit]\r\n; contributed by maxpiva\r\nbInitialized.x86      =C4F58\r\nbServerSku.x86        =C4F5C\r\nlMaxUserSessions.x86  =C4F60\r\nbAppServerAllowed.x86 =C4F64\r\nbRemoteConnAllowed.x86=C4F68\r\nbMultimonAllowed.x86  =C4F6C\r\nulMaxDebugSessions.x86=C4F70\r\nbFUSEnabled.x86       =C4F74\r\n\r\nbServerSku.x64        =E93C0\r\nlMaxUserSessions.x64  =E93C4\r\nbAppServerAllowed.x64 =E93C8\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\n\r\n[10.0.14342.1000-SLInit]\r\nbInitialized.x86      =C4F58\r\nbServerSku.x86        =C4F5C\r\nlMaxUserSessions.x86  =C4F60\r\nbAppServerAllowed.x86 =C4F64\r\nbRemoteConnAllowed.x86=C4F68\r\nbMultimonAllowed.x86  =C4F6C\r\nulMaxDebugSessions.x86=C4F70\r\nbFUSEnabled.x86       =C4F74\r\n\r\nbInitialized.x64      =E9430\r\nbRemoteConnAllowed.x64=E9434\r\nbMultimonAllowed.x64  =E9438\r\nulMaxDebugSessions.x64=E943C\r\nbFUSEnabled.x64       =E9440\r\nbServerSku.x64        =E944C\r\nlMaxUserSessions.x64  =E9450\r\nbAppServerAllowed.x64 =E9454\r\n\r\n[10.0.14352.1002-SLInit]\r\nbInitialized.x86      =C0F5C\r\nbServerSku.x86        =C0F60\r\nlMaxUserSessions.x86  =C0F64\r\nbAppServerAllowed.x86 =C0F68\r\nbRemoteConnAllowed.x86=C0F6C\r\nbMultimonAllowed.x86  =C0F70\r\nulMaxDebugSessions.x86=C0F74\r\nbFUSEnabled.x86       =C0F78\r\n\r\nbServerSku.x64        =E73C0\r\nlMaxUserSessions.x64  =E73C4\r\nbAppServerAllowed.x64 =E73C8\r\nbInitialized.x64      =E8460\r\nbRemoteConnAllowed.x64=E8464\r\nbMultimonAllowed.x64  =E8468\r\nulMaxDebugSessions.x64=E846C\r\nbFUSEnabled.x64       =E8470\r\n\r\n[10.0.14366.0-SLInit]\r\nbInitialized.x86      =C4F68\r\nbServerSku.x86        =C4F6C\r\nlMaxUserSessions.x86  =C4F70\r\nbAppServerAllowed.x86 =C4F74\r\nbRemoteConnAllowed.x86=C4F78\r\nbMultimonAllowed.x86  =C4F7C\r\nulMaxDebugSessions.x86=C4F80\r\nbFUSEnabled.x86       =C4F84\r\n\r\nbServerSku.x64        =E93E0\r\nlMaxUserSessions.x64  =E93E4\r\nbAppServerAllowed.x64 =E93E8\r\nbInitialized.x64      =EA480\r\nbRemoteConnAllowed.x64=EA484\r\nbMultimonAllowed.x64  =EA488\r\nulMaxDebugSessions.x64=EA48C\r\nbFUSEnabled.x64       =EA490\r\n\r\n[10.0.14367.0-SLInit]\r\nbInitialized.x86      =C4F68\r\nbServerSku.x86        =C4F6C\r\nlMaxUserSessions.x86  =C4F70\r\nbAppServerAllowed.x86 =C4F74\r\nbRemoteConnAllowed.x86=C4F78\r\nbMultimonAllowed.x86  =C4F7C\r\nulMaxDebugSessions.x86=C4F80\r\nbFUSEnabled.x86       =C4F84\r\n\r\nbServerSku.x64        =E93E0\r\nlMaxUserSessions.x64  =E93E4\r\nbAppServerAllowed.x64 =E93E8\r\nbInitialized.x64      =EA480\r\nbRemoteConnAllowed.x64=EA484\r\nbMultimonAllowed.x64  =EA488\r\nulMaxDebugSessions.x64=EA48C\r\nbFUSEnabled.x64       =EA490\r\n\r\n[10.0.14372.0-SLInit]\r\nbInitialized.x86      =C3F68\r\nbServerSku.x86        =C3F6C\r\nlMaxUserSessions.x86  =C3F70\r\nbAppServerAllowed.x86 =C3F74\r\nbRemoteConnAllowed.x86=C3F78\r\nbMultimonAllowed.x86  =C3F7C\r\nulMaxDebugSessions.x86=C3F80\r\nbFUSEnabled.x86       =C3F84\r\n; x64 contributed by kbmorris\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\nbServerSku.x64        =EA47C\r\nlMaxUserSessions.x64  =EA480\r\nbAppServerAllowed.x64 =EA484\r\n\r\n[10.0.14379.0-SLInit]\r\nbInitialized.x86      =C3F68\r\nbServerSku.x86        =C3F6C\r\nlMaxUserSessions.x86  =C3F70\r\nbAppServerAllowed.x86 =C3F74\r\nbRemoteConnAllowed.x86=C3F78\r\nbMultimonAllowed.x86  =C3F7C\r\nulMaxDebugSessions.x86=C3F80\r\nbFUSEnabled.x86       =C3F84\r\n\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\nbServerSku.x64        =EA47C\r\nlMaxUserSessions.x64  =EA480\r\nbAppServerAllowed.x64 =EA484\r\n\r\n[10.0.14383.0-SLInit]\r\nbInitialized.x86      =C3F68\r\nbServerSku.x86        =C3F6C\r\nlMaxUserSessions.x86  =C3F70\r\nbAppServerAllowed.x86 =C3F74\r\nbRemoteConnAllowed.x86=C3F78\r\nbMultimonAllowed.x86  =C3F7C\r\nulMaxDebugSessions.x86=C3F80\r\nbFUSEnabled.x86       =C3F84\r\n\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\nbServerSku.x64        =EA47C\r\nlMaxUserSessions.x64  =EA480\r\nbAppServerAllowed.x64 =EA484\r\n\r\n[10.0.14385.0-SLInit]\r\nbInitialized.x86      =C3F68\r\nbServerSku.x86        =C3F6C\r\nlMaxUserSessions.x86  =C3F70\r\nbAppServerAllowed.x86 =C3F74\r\nbRemoteConnAllowed.x86=C3F78\r\nbMultimonAllowed.x86  =C3F7C\r\nulMaxDebugSessions.x86=C3F80\r\nbFUSEnabled.x86       =C3F84\r\n\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\nbServerSku.x64        =EA47C\r\nlMaxUserSessions.x64  =EA480\r\nbAppServerAllowed.x64 =EA484\r\n\r\n[10.0.14388.0-SLInit]\r\nbInitialized.x86      =C1F6C\r\nbServerSku.x86        =C1F70\r\nlMaxUserSessions.x86  =C1F74\r\nbAppServerAllowed.x86 =C1F78\r\nbRemoteConnAllowed.x86=C1F7C\r\nbMultimonAllowed.x86  =C1F80\r\nulMaxDebugSessions.x86=C1F84\r\nbFUSEnabled.x86       =C1F88\r\n\r\nbServerSku.x64        =E73D0\r\nlMaxUserSessions.x64  =E73D4\r\nbAppServerAllowed.x64 =E73D8\r\nbInitialized.x64      =E8470\r\nbRemoteConnAllowed.x64=E8474\r\nbMultimonAllowed.x64  =E8478\r\nulMaxDebugSessions.x64=E847C\r\nbFUSEnabled.x64       =E8480\r\n\r\n[10.0.14393.0-SLInit]\r\nbInitialized.x86      =C1F6C\r\nbServerSku.x86        =C1F70\r\nlMaxUserSessions.x86  =C1F74\r\nbAppServerAllowed.x86 =C1F78\r\nbRemoteConnAllowed.x86=C1F7C\r\nbMultimonAllowed.x86  =C1F80\r\nulMaxDebugSessions.x86=C1F84\r\nbFUSEnabled.x86       =C1F88\r\n\r\nbServerSku.x64        =E73D0\r\nlMaxUserSessions.x64  =E73D4\r\nbAppServerAllowed.x64 =E73D8\r\nbInitialized.x64      =E8470\r\nbRemoteConnAllowed.x64=E8474\r\nbMultimonAllowed.x64  =E8478\r\nulMaxDebugSessions.x64=E847C\r\nbFUSEnabled.x64       =E8480\r\n\r\n[10.0.14393.1198-SLInit]\r\nbInitialized.x86      =C1F6C\r\nbServerSku.x86        =C1F70\r\nlMaxUserSessions.x86  =C1F74\r\nbAppServerAllowed.x86 =C1F78\r\nbRemoteConnAllowed.x86=C1F7C\r\nbMultimonAllowed.x86  =C1F80\r\nulMaxDebugSessions.x86=C1F84\r\nbFUSEnabled.x86       =C1F88\r\n\r\n[10.0.14393.1737-SLInit]\r\nbInitialized.x86      =C1F6C\r\nbServerSku.x86        =C1F70\r\nlMaxUserSessions.x86  =C1F74\r\nbAppServerAllowed.x86 =C1F78\r\nbRemoteConnAllowed.x86=C1F7C\r\nbMultimonAllowed.x86  =C1F80\r\nulMaxDebugSessions.x86=C1F84\r\nbFUSEnabled.x86       =C1F88\r\n\r\nbServerSku.x64        =E73D0\r\nlMaxUserSessions.x64  =E73D4\r\nbAppServerAllowed.x64 =E73D8\r\nbInitialized.x64      =E8470\r\nbRemoteConnAllowed.x64=E8474\r\nbMultimonAllowed.x64  =E8478\r\nulMaxDebugSessions.x64=E847C\r\nbFUSEnabled.x64       =E8480\r\n\r\n[10.0.14393.2457-SLInit]\r\nbInitialized.x86      =C1F94\r\nbServerSku.x86        =C1F98\r\nlMaxUserSessions.x86  =C1F9C\r\nbAppServerAllowed.x86 =C1FA0\r\nbRemoteConnAllowed.x86=C1FA4\r\nbMultimonAllowed.x86  =C1FA8\r\nulMaxDebugSessions.x86=C1FAC\r\nbFUSEnabled.x86       =C1FB0\r\n\r\nbServerSku.x64        =E73D0\r\nlMaxUserSessions.x64  =E73D4\r\nbAppServerAllowed.x64 =E73D8\r\nbInitialized.x64      =E8470\r\nbRemoteConnAllowed.x64=E8474\r\nbMultimonAllowed.x64  =E8478\r\nulMaxDebugSessions.x64=E847C\r\nbFUSEnabled.x64       =E8480\r\n\r\n[10.0.14901.1000-SLInit]\r\nbInitialized.x86      =C1F6C\r\nbServerSku.x86        =C1F70\r\nlMaxUserSessions.x86  =C1F74\r\nbAppServerAllowed.x86 =C1F78\r\nbRemoteConnAllowed.x86=C1F7C\r\nbMultimonAllowed.x86  =C1F80\r\nulMaxDebugSessions.x86=C1F84\r\nbFUSEnabled.x86       =C1F88\r\n\r\nbServerSku.x64        =E73D0\r\nlMaxUserSessions.x64  =E73D4\r\nbAppServerAllowed.x64 =E73D8\r\nbInitialized.x64      =E8470\r\nbRemoteConnAllowed.x64=E8474\r\nbMultimonAllowed.x64  =E8478\r\nulMaxDebugSessions.x64=E847C\r\nbFUSEnabled.x64       =E8480\r\n\r\n[10.0.14905.1000-SLInit]\r\nbInitialized.x86      =C1F6C\r\nbServerSku.x86        =C1F70\r\nlMaxUserSessions.x86  =C1F74\r\nbAppServerAllowed.x86 =C1F78\r\nbRemoteConnAllowed.x86=C1F7C\r\nbMultimonAllowed.x86  =C1F80\r\nulMaxDebugSessions.x86=C1F84\r\nbFUSEnabled.x86       =C1F88\r\n\r\nbServerSku.x64        =E73D0\r\nlMaxUserSessions.x64  =E73D4\r\nbAppServerAllowed.x64 =E73D8\r\nbInitialized.x64      =E8470\r\nbRemoteConnAllowed.x64=E8474\r\nbMultimonAllowed.x64  =E8478\r\nulMaxDebugSessions.x64=E847C\r\nbFUSEnabled.x64       =E8480\r\n\r\n[10.0.14915.1000-SLInit]\r\nbInitialized.x86      =C4F6C\r\nbServerSku.x86        =C4F70\r\nlMaxUserSessions.x86  =C4F74\r\nbAppServerAllowed.x86 =C4F78\r\nbRemoteConnAllowed.x86=C4F7C\r\nbMultimonAllowed.x86  =C4F80\r\nulMaxDebugSessions.x86=C4F84\r\nbFUSEnabled.x86       =C4F88\r\n\r\nbServerSku.x64        =E93D0\r\nlMaxUserSessions.x64  =E93D4\r\nbAppServerAllowed.x64 =E93D8\r\nbInitialized.x64      =EA470\r\nbRemoteConnAllowed.x64=EA474\r\nbMultimonAllowed.x64  =EA478\r\nulMaxDebugSessions.x64=EA47C\r\nbFUSEnabled.x64       =EA480\r\n\r\n[10.0.14926.1000-SLInit]\r\nbInitialized.x86      =C4F6C\r\nbServerSku.x86        =C4F70\r\nlMaxUserSessions.x86  =C4F74\r\nbAppServerAllowed.x86 =C4F78\r\nbRemoteConnAllowed.x86=C4F7C\r\nbMultimonAllowed.x86  =C4F80\r\nulMaxDebugSessions.x86=C4F84\r\nbFUSEnabled.x86       =C4F88\r\n\r\nbServerSku.x64        =E93D0\r\nlMaxUserSessions.x64  =E93D4\r\nbAppServerAllowed.x64 =E93D8\r\nbInitialized.x64      =EA470\r\nbRemoteConnAllowed.x64=EA474\r\nbMultimonAllowed.x64  =EA478\r\nulMaxDebugSessions.x64=EA47C\r\nbFUSEnabled.x64       =EA480\r\n\r\n[10.0.14931.1000-SLInit]\r\nbInitialized.x86      =C1F6C\r\nbServerSku.x86        =C1F70\r\nlMaxUserSessions.x86  =C1F74\r\nbAppServerAllowed.x86 =C1F78\r\nbRemoteConnAllowed.x86=C1F7C\r\nbMultimonAllowed.x86  =C1F80\r\nulMaxDebugSessions.x86=C1F84\r\nbFUSEnabled.x86       =C1F88\r\n\r\nbServerSku.x64        =E63D0\r\nlMaxUserSessions.x64  =E63D4\r\nbAppServerAllowed.x64 =E63D8\r\nbInitialized.x64      =E7470\r\nbRemoteConnAllowed.x64=E7474\r\nbMultimonAllowed.x64  =E7478\r\nulMaxDebugSessions.x64=E747C\r\nbFUSEnabled.x64       =E7480\r\n\r\n[10.0.14936.1000-SLInit]\r\nbInitialized.x86      =C0F6C\r\nbServerSku.x86        =C0F70\r\nlMaxUserSessions.x86  =C0F74\r\nbAppServerAllowed.x86 =C0F78\r\nbRemoteConnAllowed.x86=C0F7C\r\nbMultimonAllowed.x86  =C0F80\r\nulMaxDebugSessions.x86=C0F84\r\nbFUSEnabled.x86       =C0F88\r\n\r\nbInitialized.x64      =E8460\r\nbRemoteConnAllowed.x64=E8464\r\nbMultimonAllowed.x64  =E8468\r\nulMaxDebugSessions.x64=E846C\r\nbFUSEnabled.x64       =E8470\r\nbServerSku.x64        =E847C\r\nlMaxUserSessions.x64  =E8480\r\nbAppServerAllowed.x64 =E8484\r\n\r\n[10.0.14942.1000-SLInit]\r\nbInitialized.x86      =C0F6C\r\nbServerSku.x86        =C0F70\r\nlMaxUserSessions.x86  =C0F74\r\nbAppServerAllowed.x86 =C0F78\r\nbRemoteConnAllowed.x86=C0F7C\r\nbMultimonAllowed.x86  =C0F80\r\nulMaxDebugSessions.x86=C0F84\r\nbFUSEnabled.x86       =C0F88\r\n\r\nbInitialized.x64      =EC460\r\nbRemoteConnAllowed.x64=EC464\r\nbMultimonAllowed.x64  =EC468\r\nulMaxDebugSessions.x64=EC46C\r\nbFUSEnabled.x64       =EC470\r\nbServerSku.x64        =EC47C\r\nlMaxUserSessions.x64  =EC480\r\nbAppServerAllowed.x64 =EC484\r\n\r\n[10.0.14946.1000-SLInit]\r\nbInitialized.x86      =C0F6C\r\nbServerSku.x86        =C0F70\r\nlMaxUserSessions.x86  =C0F74\r\nbAppServerAllowed.x86 =C0F78\r\nbRemoteConnAllowed.x86=C0F7C\r\nbMultimonAllowed.x86  =C0F80\r\nulMaxDebugSessions.x86=C0F84\r\nbFUSEnabled.x86       =C0F88\r\n\r\nbInitialized.x64      =EC460\r\nbRemoteConnAllowed.x64=EC464\r\nbMultimonAllowed.x64  =EC468\r\nulMaxDebugSessions.x64=EC46C\r\nbFUSEnabled.x64       =EC470\r\nbServerSku.x64        =EC47C\r\nlMaxUserSessions.x64  =EC480\r\nbAppServerAllowed.x64 =EC484\r\n\r\n[10.0.14951.1000-SLInit]\r\nbInitialized.x86      =C5F68\r\nbServerSku.x86        =C5F6C\r\nlMaxUserSessions.x86  =C5F70\r\nbAppServerAllowed.x86 =C5F74\r\nbRemoteConnAllowed.x86=C5F78\r\nbMultimonAllowed.x86  =C5F7C\r\nulMaxDebugSessions.x86=C5F80\r\nbFUSEnabled.x86       =C5F84\r\n\r\nbServerSku.x64        =EF3D0\r\nlMaxUserSessions.x64  =EF3D4\r\nbAppServerAllowed.x64 =EF3D8\r\nbInitialized.x64      =F0470\r\nbRemoteConnAllowed.x64=F0474\r\nbMultimonAllowed.x64  =F0478\r\nulMaxDebugSessions.x64=F047C\r\nbFUSEnabled.x64       =F0480\r\n\r\n[10.0.14955.1000-SLInit]\r\nbInitialized.x86      =C5F68\r\nbServerSku.x86        =C5F6C\r\nlMaxUserSessions.x86  =C5F70\r\nbAppServerAllowed.x86 =C5F74\r\nbRemoteConnAllowed.x86=C5F78\r\nbMultimonAllowed.x86  =C5F7C\r\nulMaxDebugSessions.x86=C5F80\r\nbFUSEnabled.x86       =C5F84\r\n\r\nbServerSku.x64        =EF3D0\r\nlMaxUserSessions.x64  =EF3D4\r\nbAppServerAllowed.x64 =EF3D8\r\nbInitialized.x64      =F0470\r\nbRemoteConnAllowed.x64=F0474\r\nbMultimonAllowed.x64  =F0478\r\nulMaxDebugSessions.x64=F047C\r\nbFUSEnabled.x64       =F0480\r\n\r\n[10.0.14959.1000-SLInit]\r\nbInitialized.x86      =C4F68\r\nbServerSku.x86        =C4F6C\r\nlMaxUserSessions.x86  =C4F70\r\nbAppServerAllowed.x86 =C4F74\r\nbRemoteConnAllowed.x86=C4F78\r\nbMultimonAllowed.x86  =C4F7C\r\nulMaxDebugSessions.x86=C4F80\r\nbFUSEnabled.x86       =C4F84\r\n\r\nbServerSku.x64        =EE3D0\r\nlMaxUserSessions.x64  =EE3D4\r\nbAppServerAllowed.x64 =EE3D8\r\nbInitialized.x64      =EF470\r\nbRemoteConnAllowed.x64=EF474\r\nbMultimonAllowed.x64  =EF478\r\nulMaxDebugSessions.x64=EF47C\r\nbFUSEnabled.x64       =EF480\r\n\r\n[10.0.14965.1001-SLInit]\r\nbInitialized.x86      =C5F68\r\nbServerSku.x86        =C5F6C\r\nlMaxUserSessions.x86  =C5F70\r\nbAppServerAllowed.x86 =C5F74\r\nbRemoteConnAllowed.x86=C5F78\r\nbMultimonAllowed.x86  =C5F7C\r\nulMaxDebugSessions.x86=C5F80\r\nbFUSEnabled.x86       =C5F84\r\n\r\nbInitialized.x64      =EF460\r\nbRemoteConnAllowed.x64=EF464\r\nbMultimonAllowed.x64  =EF468\r\nulMaxDebugSessions.x64=EF46C\r\nbFUSEnabled.x64       =EF470\r\nbServerSku.x64        =EF47C\r\nlMaxUserSessions.x64  =EF480\r\nbAppServerAllowed.x64 =EF484\r\n\r\n[10.0.14971.1000-SLInit]\r\nbInitialized.x86      =C5F68\r\nbServerSku.x86        =C5F6C\r\nlMaxUserSessions.x86  =C5F70\r\nbAppServerAllowed.x86 =C5F74\r\nbRemoteConnAllowed.x86=C5F78\r\nbMultimonAllowed.x86  =C5F7C\r\nulMaxDebugSessions.x86=C5F80\r\nbFUSEnabled.x86       =C5F84\r\n\r\nbServerSku.x64        =EE3C0\r\nlMaxUserSessions.x64  =EE3C4\r\nbAppServerAllowed.x64 =EE3C8\r\nbInitialized.x64      =EE470\r\nbRemoteConnAllowed.x64=EE474\r\nbMultimonAllowed.x64  =EE478\r\nulMaxDebugSessions.x64=EE47C\r\nbFUSEnabled.x64       =EE480\r\n\r\n[10.0.14986.1000-SLInit]\r\nbInitialized.x86      =C5F68\r\nbServerSku.x86        =C5F6C\r\nlMaxUserSessions.x86  =C5F70\r\nbAppServerAllowed.x86 =C5F74\r\nbRemoteConnAllowed.x86=C5F78\r\nbMultimonAllowed.x86  =C5F7C\r\nulMaxDebugSessions.x86=C5F80\r\nbFUSEnabled.x86       =C5F84\r\n\r\nbServerSku.x64        =EE3C0\r\nlMaxUserSessions.x64  =EE3C4\r\nbAppServerAllowed.x64 =EE3C8\r\nbInitialized.x64      =EE470\r\nbRemoteConnAllowed.x64=EE474\r\nbMultimonAllowed.x64  =EE478\r\nulMaxDebugSessions.x64=EE47C\r\nbFUSEnabled.x64       =EE480\r\n\r\n[10.0.14997.1001-SLInit]\r\nbServerSku.x64        =F0408\r\nlMaxUserSessions.x64  =F040C\r\nbAppServerAllowed.x64 =F0410\r\nbInitialized.x64      =F0480\r\nbRemoteConnAllowed.x64=F0484\r\nbMultimonAllowed.x64  =F0488\r\nulMaxDebugSessions.x64=F048C\r\nbFUSEnabled.x64       =F0490\r\n\r\n[10.0.15002.1001-SLInit]\r\nbInitialized.x86      =C6F74\r\nbServerSku.x86        =C6F78\r\nlMaxUserSessions.x86  =C6F7C\r\nbAppServerAllowed.x86 =C6F80\r\nbRemoteConnAllowed.x86=C6F84\r\nbMultimonAllowed.x86  =C6F88\r\nulMaxDebugSessions.x86=C6F8C\r\nbFUSEnabled.x86       =C6F90\r\n\r\nbServerSku.x64        =F0408\r\nlMaxUserSessions.x64  =F040C\r\nbAppServerAllowed.x64 =F0410\r\nbInitialized.x64      =F0480\r\nbRemoteConnAllowed.x64=F0484\r\nbMultimonAllowed.x64  =F0488\r\nulMaxDebugSessions.x64=F048C\r\nbFUSEnabled.x64       =F0490\r\n\r\n[10.0.15007.1000-SLInit]\r\nbInitialized.x86      =C6F74\r\nbServerSku.x86        =C6F78\r\nlMaxUserSessions.x86  =C6F7C\r\nbAppServerAllowed.x86 =C6F80\r\nbRemoteConnAllowed.x86=C6F84\r\nbMultimonAllowed.x86  =C6F88\r\nulMaxDebugSessions.x86=C6F8C\r\nbFUSEnabled.x86       =C6F90\r\n\r\nbServerSku.x64        =F0408\r\nlMaxUserSessions.x64  =F040C\r\nbAppServerAllowed.x64 =F0410\r\nbInitialized.x64      =F0480\r\nbRemoteConnAllowed.x64=F0484\r\nbMultimonAllowed.x64  =F0488\r\nulMaxDebugSessions.x64=F048C\r\nbFUSEnabled.x64       =F0490\r\n\r\n[10.0.15014.1000-SLInit]\r\nbInitialized.x86      =C6F74\r\nbServerSku.x86        =C6F78\r\nlMaxUserSessions.x86  =C6F7C\r\nbAppServerAllowed.x86 =C6F80\r\nbRemoteConnAllowed.x86=C6F84\r\nbMultimonAllowed.x86  =C6F88\r\nulMaxDebugSessions.x86=C6F8C\r\nbFUSEnabled.x86       =C6F90\r\n\r\nbServerSku.x64        =F0408\r\nlMaxUserSessions.x64  =F040C\r\nbAppServerAllowed.x64 =F0410\r\nbInitialized.x64      =F0480\r\nbRemoteConnAllowed.x64=F0484\r\nbMultimonAllowed.x64  =F0488\r\nulMaxDebugSessions.x64=F048C\r\nbFUSEnabled.x64       =F0490\r\n\r\n[10.0.15019.1000-SLInit]\r\nbInitialized.x86      =C5F68\r\nbServerSku.x86        =C5F6C\r\nlMaxUserSessions.x86  =C5F70\r\nbAppServerAllowed.x86 =C5F74\r\nbRemoteConnAllowed.x86=C5F78\r\nbMultimonAllowed.x86  =C5F7C\r\nulMaxDebugSessions.x86=C5F80\r\nbFUSEnabled.x86       =C5F84\r\n\r\nbServerSku.x64        =ECBDC\r\nlMaxUserSessions.x64  =ECBE0\r\nbAppServerAllowed.x64 =ECBE4\r\nbInitialized.x64      =F0490\r\nbRemoteConnAllowed.x64=F0494\r\nbMultimonAllowed.x64  =F0498\r\nulMaxDebugSessions.x64=F049C\r\nbFUSEnabled.x64       =F04A0\r\n\r\n[10.0.15025.1000-SLInit]\r\nbServerSku.x64        =EE3E0\r\nlMaxUserSessions.x64  =EE3E4\r\nbAppServerAllowed.x64 =EE3E8\r\nbInitialized.x64      =EF488\r\nbRemoteConnAllowed.x64=EF48C\r\nbMultimonAllowed.x64  =EF490\r\nulMaxDebugSessions.x64=EF494\r\nbFUSEnabled.x64       =EF498\r\n\r\n[10.0.15031.0-SLInit]\r\nbInitialized.x86      =C2F6C\r\nbServerSku.x86        =C2F70\r\nlMaxUserSessions.x86  =C2F74\r\nbAppServerAllowed.x86 =C2F78\r\nbRemoteConnAllowed.x86=C2F7C\r\nbMultimonAllowed.x86  =C2F80\r\nulMaxDebugSessions.x86=C2F84\r\nbFUSEnabled.x86       =C2F88\r\n\r\nbServerSku.x64        =E93E0\r\nlMaxUserSessions.x64  =E93E4\r\nbAppServerAllowed.x64 =E93E8\r\nbInitialized.x64      =EA488\r\nbRemoteConnAllowed.x64=EA48C\r\nbMultimonAllowed.x64  =EA490\r\nulMaxDebugSessions.x64=EA494\r\nbFUSEnabled.x64       =EA498\r\n\r\n[10.0.15042.0-SLInit]\r\nbInitialized.x86      =C2F6C\r\nbServerSku.x86        =C2F70\r\nlMaxUserSessions.x86  =C2F74\r\nbAppServerAllowed.x86 =C2F78\r\nbRemoteConnAllowed.x86=C2F7C\r\nbMultimonAllowed.x86  =C2F80\r\nulMaxDebugSessions.x86=C2F84\r\nbFUSEnabled.x86       =C2F88\r\n\r\nbServerSku.x64        =E93E0\r\nlMaxUserSessions.x64  =E93E4\r\nbAppServerAllowed.x64 =E93E8\r\nbInitialized.x64      =EA488\r\nbRemoteConnAllowed.x64=EA48C\r\nbMultimonAllowed.x64  =EA490\r\nulMaxDebugSessions.x64=EA494\r\nbFUSEnabled.x64       =EA498\r\n\r\n[10.0.15046.0-SLInit]\r\nbInitialized.x86      =C4F18\r\nbServerSku.x86        =C4F1C\r\nlMaxUserSessions.x86  =C4F20\r\nbAppServerAllowed.x86 =C4F24\r\nbRemoteConnAllowed.x86=C4F28\r\nulMaxDebugSessions.x86=C4F2C\r\nbMultimonAllowed.x86  =C5010\r\nbFUSEnabled.x86       =C5014\r\n\r\nbInitialized.x64      =EB468\r\nbRemoteConnAllowed.x64=EB46C\r\nbMultimonAllowed.x64  =EB470\r\nulMaxDebugSessions.x64=EB474\r\nbFUSEnabled.x64       =EB478\r\nbServerSku.x64        =EB484\r\nlMaxUserSessions.x64  =EB488\r\nbAppServerAllowed.x64 =EB48C\r\n\r\n[10.0.15048.0-SLInit]\r\nbInitialized.x86      =C4F18\r\nbServerSku.x86        =C4F1C\r\nlMaxUserSessions.x86  =C4F20\r\nbAppServerAllowed.x86 =C4F24\r\nbRemoteConnAllowed.x86=C4F28\r\nulMaxDebugSessions.x86=C4F2C\r\nbMultimonAllowed.x86  =C5010\r\nbFUSEnabled.x86       =C5014\r\n\r\nbInitialized.x64      =EB468\r\nbRemoteConnAllowed.x64=EB46C\r\nbMultimonAllowed.x64  =EB470\r\nulMaxDebugSessions.x64=EB474\r\nbFUSEnabled.x64       =EB478\r\nbServerSku.x64        =EB484\r\nlMaxUserSessions.x64  =EB488\r\nbAppServerAllowed.x64 =EB48C\r\n\r\n[10.0.15055.0-SLInit]\r\nbInitialized.x86      =C2F70\r\nbServerSku.x86        =C2F74\r\nlMaxUserSessions.x86  =C2F78\r\nbAppServerAllowed.x86 =C2F7C\r\nbRemoteConnAllowed.x86=C2F80\r\nbMultimonAllowed.x86  =C2F84\r\nulMaxDebugSessions.x86=C2F88\r\nbFUSEnabled.x86       =C2F8C\r\n\r\nbServerSku.x64        =E83D8\r\nlMaxUserSessions.x64  =E83DC\r\nbAppServerAllowed.x64 =E83E0\r\nbInitialized.x64      =E9490\r\nbRemoteConnAllowed.x64=E9494\r\nbMultimonAllowed.x64  =E9498\r\nulMaxDebugSessions.x64=E949C\r\nbFUSEnabled.x64       =E94A0\r\n\r\n[10.0.15058.0-SLInit]\r\nbInitialized.x86      =C2F70\r\nbServerSku.x86        =C2F74\r\nlMaxUserSessions.x86  =C2F78\r\nbAppServerAllowed.x86 =C2F7C\r\nbRemoteConnAllowed.x86=C2F80\r\nbMultimonAllowed.x86  =C2F84\r\nulMaxDebugSessions.x86=C2F88\r\nbFUSEnabled.x86       =C2F8C\r\n\r\nbInitialized.x64      =E9468\r\nbRemoteConnAllowed.x64=E946C\r\nbMultimonAllowed.x64  =E9470\r\nulMaxDebugSessions.x64=E9474\r\nbFUSEnabled.x64       =E9478\r\nbServerSku.x64        =E9484\r\nlMaxUserSessions.x64  =E9488\r\nbAppServerAllowed.x64 =E948C\r\n\r\n[10.0.15061.0-SLInit]\r\nbInitialized.x86      =C2F70\r\nbServerSku.x86        =C2F74\r\nlMaxUserSessions.x86  =C2F78\r\nbAppServerAllowed.x86 =C2F7C\r\nbRemoteConnAllowed.x86=C2F80\r\nbMultimonAllowed.x86  =C2F84\r\nulMaxDebugSessions.x86=C2F88\r\nbFUSEnabled.x86       =C2F8C\r\n\r\nbInitialized.x64      =E9468\r\nbRemoteConnAllowed.x64=E946C\r\nbMultimonAllowed.x64  =E9470\r\nulMaxDebugSessions.x64=E9474\r\nbFUSEnabled.x64       =E9478\r\nbServerSku.x64        =E9484\r\nlMaxUserSessions.x64  =E9488\r\nbAppServerAllowed.x64 =E948C\r\n\r\n[10.0.15063.0-SLInit]\r\nbInitialized.x86      =C2F70\r\nbServerSku.x86        =C2F74\r\nlMaxUserSessions.x86  =C2F78\r\nbAppServerAllowed.x86 =C2F7C\r\nbRemoteConnAllowed.x86=C2F80\r\nbMultimonAllowed.x86  =C2F84\r\nulMaxDebugSessions.x86=C2F88\r\nbFUSEnabled.x86       =C2F8C\r\n\r\nbInitialized.x64      =E9468\r\nbRemoteConnAllowed.x64=E946C\r\nbMultimonAllowed.x64  =E9470\r\nulMaxDebugSessions.x64=E9474\r\nbFUSEnabled.x64       =E9478\r\nbServerSku.x64        =E9484\r\nlMaxUserSessions.x64  =E9488\r\nbAppServerAllowed.x64 =E948C\r\n\r\n[10.0.15063.296-SLInit]\r\nbInitialized.x86      =C2F70\r\nbServerSku.x86        =C2F74\r\nlMaxUserSessions.x86  =C2F78\r\nbAppServerAllowed.x86 =C2F7C\r\nbRemoteConnAllowed.x86=C2F80\r\nbMultimonAllowed.x86  =C2F84\r\nulMaxDebugSessions.x86=C2F88\r\nbFUSEnabled.x86       =C2F8C\r\n\r\nbInitialized.x64      =E9468\r\nbRemoteConnAllowed.x64=E946C\r\nbMultimonAllowed.x64  =E9470\r\nulMaxDebugSessions.x64=E9474\r\nbFUSEnabled.x64       =E9478\r\nbServerSku.x64        =E9484\r\nlMaxUserSessions.x64  =E9488\r\nbAppServerAllowed.x64 =E948C\r\n\r\n[10.0.15063.994-SLInit]\r\nbInitialized.x64      =E9468\r\nbRemoteConnAllowed.x64=E946C\r\nbMultimonAllowed.x64  =E9470\r\nulMaxDebugSessions.x64=E9474\r\nbFUSEnabled.x64       =E9478\r\nbServerSku.x64        =E9484\r\nlMaxUserSessions.x64  =E9488\r\nbAppServerAllowed.x64 =E948C\r\n\r\n[10.0.15063.1155-SLInit]\r\nbInitialized.x64      =E9468\r\nbRemoteConnAllowed.x64=E946C\r\nbMultimonAllowed.x64  =E9470\r\nulMaxDebugSessions.x64=E9474\r\nbFUSEnabled.x64       =E9478\r\nbServerSku.x64        =E9484\r\nlMaxUserSessions.x64  =E9488\r\nbAppServerAllowed.x64 =E948C\r\n\r\n[10.0.16179.1000-SLInit]\r\nbInitialized.x86      =C7F6C\r\nbServerSku.x86        =C7F70\r\nlMaxUserSessions.x86  =C7F74\r\nbAppServerAllowed.x86 =C7F78\r\nbRemoteConnAllowed.x86=C7F7C\r\nbMultimonAllowed.x86  =C7F80\r\nulMaxDebugSessions.x86=C7F84\r\nbFUSEnabled.x86       =C7F88\r\n\r\nbServerSku.x64        =E83D8\r\nlMaxUserSessions.x64  =E83DC\r\nbAppServerAllowed.x64 =E83E0\r\nbInitialized.x64      =E9490\r\nbRemoteConnAllowed.x64=E9494\r\nbMultimonAllowed.x64  =E9498\r\nulMaxDebugSessions.x64=E949C\r\nbFUSEnabled.x64       =E94A0\r\n\r\n[10.0.16184.1001-SLInit]\r\nbInitialized.x86      =C7F6C\r\nbServerSku.x86        =C7F70\r\nlMaxUserSessions.x86  =C7F74\r\nbAppServerAllowed.x86 =C7F78\r\nbRemoteConnAllowed.x86=C7F7C\r\nbMultimonAllowed.x86  =C7F80\r\nulMaxDebugSessions.x86=C7F84\r\nbFUSEnabled.x86       =C7F88\r\n\r\nbServerSku.x64        =E83D8\r\nlMaxUserSessions.x64  =E83DC\r\nbAppServerAllowed.x64 =E83E0\r\nbInitialized.x64      =E9490\r\nbRemoteConnAllowed.x64=E9494\r\nbMultimonAllowed.x64  =E9498\r\nulMaxDebugSessions.x64=E949C\r\nbFUSEnabled.x64       =E94A0\r\n\r\n[10.0.16199.1000-SLInit]\r\nbInitialized.x86      =C8F74\r\nbServerSku.x86        =C8F78\r\nlMaxUserSessions.x86  =C8F7C\r\nbAppServerAllowed.x86 =C8F80\r\nbRemoteConnAllowed.x86=C8F84\r\nbMultimonAllowed.x86  =C8F88\r\nulMaxDebugSessions.x86=C8F8C\r\nbFUSEnabled.x86       =C8F90\r\n\r\nbServerSku.x64        =E83E8\r\nlMaxUserSessions.x64  =E83EC\r\nbAppServerAllowed.x64 =E83F0\r\nbInitialized.x64      =E94A0\r\nbRemoteConnAllowed.x64=E94A4\r\nbMultimonAllowed.x64  =E94A8\r\nulMaxDebugSessions.x64=E94AC\r\nbFUSEnabled.x64       =E94B0\r\n\r\n[10.0.16215.1000-SLInit]\r\nbInitialized.x86      =C5F78\r\nbServerSku.x86        =C5F7C\r\nlMaxUserSessions.x86  =C5F80\r\nbAppServerAllowed.x86 =C5F84\r\nbRemoteConnAllowed.x86=C5F88\r\nbMultimonAllowed.x86  =C5F8C\r\nulMaxDebugSessions.x86=C5F90\r\nbFUSEnabled.x86       =C5F94\r\n\r\nbServerSku.x64        =EA3E8\r\nlMaxUserSessions.x64  =EA3EC\r\nbAppServerAllowed.x64 =EA3F0\r\nbInitialized.x64      =EB4A0\r\nbRemoteConnAllowed.x64=EB4A4\r\nbMultimonAllowed.x64  =EB4A8\r\nulMaxDebugSessions.x64=EB4AC\r\nbFUSEnabled.x64       =EB4B0\r\n\r\n[10.0.16232.1000-SLInit]\r\nbInitialized.x86      =C5F78\r\nbServerSku.x86        =C5F7C\r\nlMaxUserSessions.x86  =C5F80\r\nbAppServerAllowed.x86 =C5F84\r\nbRemoteConnAllowed.x86=C5F88\r\nbMultimonAllowed.x86  =C5F8C\r\nulMaxDebugSessions.x86=C5F90\r\nbFUSEnabled.x86       =C5F94\r\n\r\nbServerSku.x64        =EA3E8\r\nlMaxUserSessions.x64  =EA3EC\r\nbAppServerAllowed.x64 =EA3F0\r\nbInitialized.x64      =EB4A0\r\nbRemoteConnAllowed.x64=EB4A4\r\nbMultimonAllowed.x64  =EB4A8\r\nulMaxDebugSessions.x64=EB4AC\r\nbFUSEnabled.x64       =EB4B0\r\n\r\n[10.0.16237.1001-SLInit]\r\nbInitialized.x86      =C5F78\r\nbServerSku.x86        =C5F7C\r\nlMaxUserSessions.x86  =C5F80\r\nbAppServerAllowed.x86 =C5F84\r\nbRemoteConnAllowed.x86=C5F88\r\nbMultimonAllowed.x86  =C5F8C\r\nulMaxDebugSessions.x86=C5F90\r\nbFUSEnabled.x86       =C5F94\r\n\r\nbServerSku.x64        =EB3EC\r\nlMaxUserSessions.x64  =EB3F0\r\nbAppServerAllowed.x64 =EB3F4\r\nbInitialized.x64      =EC4A0\r\nbRemoteConnAllowed.x64=EC4A4\r\nbMultimonAllowed.x64  =EC4A8\r\nulMaxDebugSessions.x64=EC4AC\r\nbFUSEnabled.x64       =EC4B0\r\n\r\n[10.0.16241.1001-SLInit]\r\nbInitialized.x86      =C5F78\r\nbServerSku.x86        =C5F7C\r\nlMaxUserSessions.x86  =C5F80\r\nbAppServerAllowed.x86 =C5F84\r\nbRemoteConnAllowed.x86=C5F88\r\nbMultimonAllowed.x86  =C5F8C\r\nulMaxDebugSessions.x86=C5F90\r\nbFUSEnabled.x86       =C5F94\r\n\r\nbServerSku.x64        =EB3EC\r\nlMaxUserSessions.x64  =EB3F0\r\nbAppServerAllowed.x64 =EB3F4\r\nbInitialized.x64      =EC4A0\r\nbRemoteConnAllowed.x64=EC4A4\r\nbMultimonAllowed.x64  =EC4A8\r\nulMaxDebugSessions.x64=EC4AC\r\nbFUSEnabled.x64       =EC4B0\r\n\r\n[10.0.16251.0-SLInit]\r\nbInitialized.x86      =C9F78\r\nbServerSku.x86        =C9F7C\r\nlMaxUserSessions.x86  =C9F80\r\nbAppServerAllowed.x86 =C9F84\r\nbRemoteConnAllowed.x86=C9F88\r\nbMultimonAllowed.x86  =C9F8C\r\nulMaxDebugSessions.x86=C9F90\r\nbFUSEnabled.x86       =C9F94\r\n\r\nbServerSku.x64        =EB3EC\r\nlMaxUserSessions.x64  =EB3F0\r\nbAppServerAllowed.x64 =EB3F4\r\nbInitialized.x64      =EC4A0\r\nbRemoteConnAllowed.x64=EC4A4\r\nbMultimonAllowed.x64  =EC4A8\r\nulMaxDebugSessions.x64=EC4AC\r\nbFUSEnabled.x64       =EC4B0\r\n\r\n[10.0.16251.1000-SLInit]\r\nbInitialized.x86      =C9F78\r\nbServerSku.x86        =C9F7C\r\nlMaxUserSessions.x86  =C9F80\r\nbAppServerAllowed.x86 =C9F84\r\nbRemoteConnAllowed.x86=C9F88\r\nbMultimonAllowed.x86  =C9F8C\r\nulMaxDebugSessions.x86=C9F90\r\nbFUSEnabled.x86       =C9F94\r\n\r\nbServerSku.x64        =EB3EC\r\nlMaxUserSessions.x64  =EB3F0\r\nbAppServerAllowed.x64 =EB3F4\r\nbInitialized.x64      =EC4A0\r\nbRemoteConnAllowed.x64=EC4A4\r\nbMultimonAllowed.x64  =EC4A8\r\nulMaxDebugSessions.x64=EC4AC\r\nbFUSEnabled.x64       =EC4B0\r\n\r\n[10.0.16257.1-SLInit]\r\nbInitialized.x86      =C9F7C\r\nbServerSku.x86        =C9F80\r\nlMaxUserSessions.x86  =C9F84\r\nbAppServerAllowed.x86 =C9F88\r\nbRemoteConnAllowed.x86=C9F8C\r\nbMultimonAllowed.x86  =C9F90\r\nulMaxDebugSessions.x86=C9F94\r\nbFUSEnabled.x86       =C9F98\r\n\r\nbServerSku.x64        =EB3F0\r\nlMaxUserSessions.x64  =EB3F4\r\nbAppServerAllowed.x64 =EB3F8\r\nbInitialized.x64      =EC4A0\r\nbRemoteConnAllowed.x64=EC4A4\r\nbMultimonAllowed.x64  =EC4A8\r\nulMaxDebugSessions.x64=EC4AC\r\nbFUSEnabled.x64       =EC4B0\r\n\r\n[10.0.16257.1000-SLInit]\r\nbInitialized.x86      =C9F7C\r\nbServerSku.x86        =C9F80\r\nlMaxUserSessions.x86  =C9F84\r\nbAppServerAllowed.x86 =C9F88\r\nbRemoteConnAllowed.x86=C9F8C\r\nbMultimonAllowed.x86  =C9F90\r\nulMaxDebugSessions.x86=C9F94\r\nbFUSEnabled.x86       =C9F98\r\n\r\nbServerSku.x64        =EB3F0\r\nlMaxUserSessions.x64  =EB3F4\r\nbAppServerAllowed.x64 =EB3F8\r\nbInitialized.x64      =EC4A0\r\nbRemoteConnAllowed.x64=EC4A4\r\nbMultimonAllowed.x64  =EC4A8\r\nulMaxDebugSessions.x64=EC4AC\r\nbFUSEnabled.x64       =EC4B0\r\n\r\n[10.0.16273.1000-SLInit]\r\nbInitialized.x86      =C9F7C\r\nbServerSku.x86        =C9F80\r\nlMaxUserSessions.x86  =C9F84\r\nbAppServerAllowed.x86 =C9F88\r\nbRemoteConnAllowed.x86=C9F8C\r\nbMultimonAllowed.x86  =C9F90\r\nulMaxDebugSessions.x86=C9F94\r\nbFUSEnabled.x86       =C9F98\r\n\r\nbServerSku.x64        =EB3F0\r\nlMaxUserSessions.x64  =EB3F4\r\nbAppServerAllowed.x64 =EB3F8\r\nbInitialized.x64      =EC4A0\r\nbRemoteConnAllowed.x64=EC4A4\r\nbMultimonAllowed.x64  =EC4A8\r\nulMaxDebugSessions.x64=EC4AC\r\nbFUSEnabled.x64       =EC4B0\r\n\r\n[10.0.16275.1000-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16278.1000-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16281.1000-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16288.1-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16291.0-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16294.1-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16296.0-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16299.0-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16299.15-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16353.1000-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16362.1000-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.17004.1000-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.17017.1000-SLInit]\r\nbInitialized.x86      =C9EB8\r\nbServerSku.x86        =C9EBC\r\nlMaxUserSessions.x86  =C9EC0\r\nbAppServerAllowed.x86 =C9EC4\r\nbRemoteConnAllowed.x86=C9EC8\r\nbMultimonAllowed.x86  =C9ECC\r\nulMaxDebugSessions.x86=C9ED0\r\nbFUSEnabled.x86       =C9ED4\r\n\r\nbServerSku.x64        =EC2E8\r\nlMaxUserSessions.x64  =EC2EC\r\nbAppServerAllowed.x64 =EC2F0\r\nbInitialized.x64      =ED3A0\r\nbRemoteConnAllowed.x64=ED3A4\r\nbMultimonAllowed.x64  =ED3A8\r\nulMaxDebugSessions.x64=ED3AC\r\nbFUSEnabled.x64       =ED3B0\r\n\r\n[10.0.17025.1000-SLInit]\r\nbInitialized.x86      =C9EB8\r\nbServerSku.x86        =C9EBC\r\nlMaxUserSessions.x86  =C9EC0\r\nbAppServerAllowed.x86 =C9EC4\r\nbRemoteConnAllowed.x86=C9EC8\r\nbMultimonAllowed.x86  =C9ECC\r\nulMaxDebugSessions.x86=C9ED0\r\nbFUSEnabled.x86       =C9ED4\r\n\r\nbServerSku.x64        =EC2E8\r\nlMaxUserSessions.x64  =EC2EC\r\nbAppServerAllowed.x64 =EC2F0\r\nbInitialized.x64      =ED3A0\r\nbRemoteConnAllowed.x64=ED3A4\r\nbMultimonAllowed.x64  =ED3A8\r\nulMaxDebugSessions.x64=ED3AC\r\nbFUSEnabled.x64       =ED3B0\r\n\r\n[10.0.17035.1000-SLInit]\r\nbInitialized.x86      =C9ED8\r\nbServerSku.x86        =C9EDC\r\nlMaxUserSessions.x86  =C9EE0\r\nbAppServerAllowed.x86 =C9EE4\r\nbRemoteConnAllowed.x86=C9EE8\r\nbMultimonAllowed.x86  =C9EEC\r\nulMaxDebugSessions.x86=C9EF0\r\nbFUSEnabled.x86       =C9EF4\r\n\r\nbServerSku.x64        =EC2E8\r\nlMaxUserSessions.x64  =EC2EC\r\nbAppServerAllowed.x64 =EC2F0\r\nbInitialized.x64      =ED3A0\r\nbRemoteConnAllowed.x64=ED3A4\r\nbMultimonAllowed.x64  =ED3A8\r\nulMaxDebugSessions.x64=ED3AC\r\nbFUSEnabled.x64       =ED3B0\r\n\r\n[10.0.17046.1000-SLInit]\r\nbInitialized.x86      =C9ED8\r\nbServerSku.x86        =C9EDC\r\nlMaxUserSessions.x86  =C9EE0\r\nbAppServerAllowed.x86 =C9EE4\r\nbRemoteConnAllowed.x86=C9EE8\r\nbMultimonAllowed.x86  =C9EEC\r\nulMaxDebugSessions.x86=C9EF0\r\nbFUSEnabled.x86       =C9EF4\r\n\r\nbServerSku.x64        =EC2E8\r\nlMaxUserSessions.x64  =EC2EC\r\nbAppServerAllowed.x64 =EC2F0\r\nbInitialized.x64      =ED3A0\r\nbRemoteConnAllowed.x64=ED3A4\r\nbMultimonAllowed.x64  =ED3A8\r\nulMaxDebugSessions.x64=ED3AC\r\nbFUSEnabled.x64       =ED3B0\r\n\r\n[10.0.17063.1000-SLInit]\r\nbInitialized.x86      =CBF38\r\nbServerSku.x86        =CBF3C\r\nlMaxUserSessions.x86  =CBF40\r\nbAppServerAllowed.x86 =CBF44\r\nbRemoteConnAllowed.x86=CBF48\r\nbMultimonAllowed.x86  =CBF4C\r\nulMaxDebugSessions.x86=CBF50\r\nbFUSEnabled.x86       =CBF54\r\n\r\nbServerSku.x64        =F1378\r\nlMaxUserSessions.x64  =F137C\r\nbAppServerAllowed.x64 =F1380\r\nbInitialized.x64      =F2430\r\nbRemoteConnAllowed.x64=F2434\r\nbMultimonAllowed.x64  =F2438\r\nulMaxDebugSessions.x64=F243C\r\nbFUSEnabled.x64       =F2440\r\n\r\n[10.0.17115.1-SLInit]\r\nbInitialized.x86      =CBF38\r\nbServerSku.x86        =CBF3C\r\nlMaxUserSessions.x86  =CBF40\r\nbAppServerAllowed.x86 =CBF44\r\nbRemoteConnAllowed.x86=CBF48\r\nbMultimonAllowed.x86  =CBF4C\r\nulMaxDebugSessions.x86=CBF50\r\nbFUSEnabled.x86       =CBF54\r\n\r\nbServerSku.x64        =F1378\r\nlMaxUserSessions.x64  =F137C\r\nbAppServerAllowed.x64 =F1380\r\nbInitialized.x64      =F2430\r\nbRemoteConnAllowed.x64=F2434\r\nbMultimonAllowed.x64  =F2438\r\nulMaxDebugSessions.x64=F243C\r\nbFUSEnabled.x64       =F2440\r\n\r\n[10.0.17128.1-SLInit]\r\nbInitialized.x86      =CBF38\r\nbServerSku.x86        =CBF3C\r\nlMaxUserSessions.x86  =CBF40\r\nbAppServerAllowed.x86 =CBF44\r\nbRemoteConnAllowed.x86=CBF48\r\nbMultimonAllowed.x86  =CBF4C\r\nulMaxDebugSessions.x86=CBF50\r\nbFUSEnabled.x86       =CBF54\r\n\r\nbServerSku.x64        =F1378\r\nlMaxUserSessions.x64  =F137C\r\nbAppServerAllowed.x64 =F1380\r\nbInitialized.x64      =F2430\r\nbRemoteConnAllowed.x64=F2434\r\nbMultimonAllowed.x64  =F2438\r\nulMaxDebugSessions.x64=F243C\r\nbFUSEnabled.x64       =F2440\r\n\r\n[10.0.17133.1-SLInit]\r\nbInitialized.x86      =CBF38\r\nbServerSku.x86        =CBF3C\r\nlMaxUserSessions.x86  =CBF40\r\nbAppServerAllowed.x86 =CBF44\r\nbRemoteConnAllowed.x86=CBF48\r\nbMultimonAllowed.x86  =CBF4C\r\nulMaxDebugSessions.x86=CBF50\r\nbFUSEnabled.x86       =CBF54\r\n\r\nbServerSku.x64        =F1378\r\nlMaxUserSessions.x64  =F137C\r\nbAppServerAllowed.x64 =F1380\r\nbInitialized.x64      =F2430\r\nbRemoteConnAllowed.x64=F2434\r\nbMultimonAllowed.x64  =F2438\r\nulMaxDebugSessions.x64=F243C\r\nbFUSEnabled.x64       =F2440\r\n\r\n[10.0.17134.1-SLInit]\r\nbInitialized.x86      =CBF38\r\nbServerSku.x86        =CBF3C\r\nlMaxUserSessions.x86  =CBF40\r\nbAppServerAllowed.x86 =CBF44\r\nbRemoteConnAllowed.x86=CBF48\r\nbMultimonAllowed.x86  =CBF4C\r\nulMaxDebugSessions.x86=CBF50\r\nbFUSEnabled.x86       =CBF54\r\n\r\nbServerSku.x64        =F1378\r\nlMaxUserSessions.x64  =F137C\r\nbAppServerAllowed.x64 =F1380\r\nbInitialized.x64      =F2430\r\nbRemoteConnAllowed.x64=F2434\r\nbMultimonAllowed.x64  =F2438\r\nulMaxDebugSessions.x64=F243C\r\nbFUSEnabled.x64       =F2440\r\n\r\n[10.0.17723.1000-SLInit]\r\nbInitialized.x64      =E9AB0\r\nbServerSku.x64        =E9AB4\r\nlMaxUserSessions.x64  =E9AB8\r\nbAppServerAllowed.x64 =E9AC0\r\nbRemoteConnAllowed.x64=E9AC4\r\nbMultimonAllowed.x64  =E9AC8\r\nulMaxDebugSessions.x64=E9ACC\r\nbFUSEnabled.x64       =E9AD0\r\n\r\n[10.0.17763.1-SLInit]\r\nbInitialized.x86      =CD798\r\nbServerSku.x86        =CD79C\r\nlMaxUserSessions.x86  =CD7A0\r\nbAppServerAllowed.x86 =CD7A8\r\nbRemoteConnAllowed.x86=CD7AC\r\nbMultimonAllowed.x86  =CD7B0\r\nulMaxDebugSessions.x86=CD7B4\r\nbFUSEnabled.x86       =CD7B8\r\n\r\nbInitialized.x64      =ECAB0\r\nbServerSku.x64        =ECAB4\r\nlMaxUserSessions.x64  =ECAB8\r\nbAppServerAllowed.x64 =ECAC0\r\nbRemoteConnAllowed.x64=ECAC4\r\nbMultimonAllowed.x64  =ECAC8\r\nulMaxDebugSessions.x64=ECACC\r\nbFUSEnabled.x64       =ECAD0\r\n"
  },
  {
    "path": "res/rdpwrap.ini",
    "content": "; RDP Wrapper Library configuration\r\n; Do not modify without special knowledge\r\n\r\n[Main]\r\nUpdated=2018-10-10\r\nLogFile=\\rdpwrap.txt\r\nSLPolicyHookNT60=1\r\nSLPolicyHookNT61=1\r\n\r\n[SLPolicy]\r\nTerminalServices-RemoteConnectionManager-AllowRemoteConnections=1\r\nTerminalServices-RemoteConnectionManager-AllowMultipleSessions=1\r\nTerminalServices-RemoteConnectionManager-AllowAppServerMode=1\r\nTerminalServices-RemoteConnectionManager-AllowMultimon=1\r\nTerminalServices-RemoteConnectionManager-MaxUserSessions=0\r\nTerminalServices-RemoteConnectionManager-ce0ad219-4670-4988-98fb-89b14c2f072b-MaxSessions=0\r\nTerminalServices-RemoteConnectionManager-45344fe7-00e6-4ac6-9f01-d01fd4ffadfb-MaxSessions=2\r\nTerminalServices-RDP-7-Advanced-Compression-Allowed=1\r\nTerminalServices-RemoteConnectionManager-45344fe7-00e6-4ac6-9f01-d01fd4ffadfb-LocalOnly=0\r\nTerminalServices-RemoteConnectionManager-8dc86f1d-9969-4379-91c1-06fe1dc60575-MaxSessions=1000\r\nTerminalServices-DeviceRedirection-Licenses-TSEasyPrintAllowed=1\r\nTerminalServices-DeviceRedirection-Licenses-PnpRedirectionAllowed=1\r\nTerminalServices-DeviceRedirection-Licenses-TSMFPluginAllowed=1\r\nTerminalServices-RemoteConnectionManager-UiEffects-DWMRemotingAllowed=1\r\n\r\n[PatchCodes]\r\nnop=90\r\nZero=00\r\njmpshort=EB\r\nnopjmp=90E9\r\nCDefPolicy_Query_edx_ecx=BA000100008991200300005E90\r\nCDefPolicy_Query_eax_rcx_jmp=B80001000089813806000090EB\r\nCDefPolicy_Query_eax_esi=B80001000089862003000090\r\nCDefPolicy_Query_eax_rdi=B80001000089873806000090\r\nCDefPolicy_Query_eax_ecx=B80001000089812003000090\r\nCDefPolicy_Query_eax_ecx_jmp=B800010000898120030000EB0E\r\nCDefPolicy_Query_eax_rcx=B80001000089813806000090\r\nCDefPolicy_Query_edi_rcx=BF0001000089B938060000909090\r\n\r\n[6.0.6000.16386]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=160BF\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=65E3E\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=15CD8\r\nDefPolicyCode.x86=CDefPolicy_Query_edx_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=5C88F\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp\r\n\r\n[6.0.6001.18000]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=185E4\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=70DBA\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=17FD8\r\nDefPolicyCode.x86=CDefPolicy_Query_edx_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=65BD7\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp\r\n\r\n[6.0.6002.18005]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=17FA8\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=70FF6\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=179C0\r\nDefPolicyCode.x86=CDefPolicy_Query_edx_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=65E83\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp\r\n\r\n[6.0.6002.19214]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=17FC4\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=712AA\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=179B8\r\nDefPolicyCode.x86=CDefPolicy_Query_edx_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=65FF7\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp\r\n\r\n[6.0.6002.23521]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=17FB4\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=71EAA\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=179CC\r\nDefPolicyCode.x86=CDefPolicy_Query_edx_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=669CB\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx_jmp\r\n\r\n[6.1.7600.16385]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=19E25\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17D96\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=196F3\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17AD2\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7600.20890]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=19E2D\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17DF2\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=196FB\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17B0E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7600.21316]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=19E2D\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17E3E\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=196FB\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17B5E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.17514]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A49D\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=180E2\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19D53\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17D8A\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.18540]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A4E5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=18006\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19D9F\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17C82\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.18637]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A4DD\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=180FA\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19DBB\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17DC6\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.21650]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A49D\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=180BE\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19D53\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17D5A\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.21866]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A49D\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=180BE\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19D53\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17D5A\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.22104]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A49D\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=180C6\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19D53\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17D5E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.22750]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A655\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17E8E\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19E21\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17C92\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.22843]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A655\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17F96\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19E25\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17D6E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.23403]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A65D\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17F62\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19E29\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17CE2\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.1.7601.24234]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1A675\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17F56\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=19E41\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17D2E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\n\r\n[6.2.8102.0]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=F7E9\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=D840\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=E47C\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=D3E6\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\nSLPolicyInternal.x86=1\r\nSLPolicyOffset.x86=1B909\r\nSLPolicyFunc.x86=New_Win8SL\r\nSLPolicyInternal.x64=1\r\nSLPolicyOffset.x64=1A484\r\nSLPolicyFunc.x64=New_Win8SL\r\n\r\n[6.2.8250.0]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=159C9\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=11E74\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=13520\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1187A\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\nSLPolicyInternal.x86=1\r\nSLPolicyOffset.x86=1A0A9\r\nSLPolicyFunc.x86=New_Win8SL_CP\r\nSLPolicyInternal.x64=1\r\nSLPolicyOffset.x64=18FAC\r\nSLPolicyFunc.x64=New_Win8SL\r\n\r\n[6.2.8400.0]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=15482\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=20824\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=13E48\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1F102\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\nSLPolicyInternal.x86=1\r\nSLPolicyOffset.x86=19629\r\nSLPolicyFunc.x86=New_Win8SL\r\nSLPolicyInternal.x64=1\r\nSLPolicyOffset.x64=2492C\r\nSLPolicyFunc.x64=New_Win8SL\r\n\r\n[6.2.9200.16384]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=15552\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2BAA8\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=13F08\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=2A31A\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\nSLPolicyInternal.x86=1\r\nSLPolicyOffset.x86=19559\r\nSLPolicyFunc.x86=New_Win8SL\r\nSLPolicyInternal.x64=1\r\nSLPolicyOffset.x64=21FA8\r\nSLPolicyFunc.x64=New_Win8SL\r\n\r\n[6.2.9200.17048]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=20592\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=20948\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=1F408\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1F206\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\nSLPolicyInternal.x86=1\r\nSLPolicyOffset.x86=17059\r\nSLPolicyFunc.x86=New_Win8SL\r\nSLPolicyInternal.x64=1\r\nSLPolicyOffset.x64=24570\r\nSLPolicyFunc.x64=New_Win8SL\r\n\r\n[6.2.9200.21166]\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=1557A\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2BAF8\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=13F30\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_esi\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=2A3B6\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rdi\r\nSLPolicyInternal.x86=1\r\nSLPolicyOffset.x86=19581\r\nSLPolicyFunc.x86=New_Win8SL\r\nSLPolicyInternal.x64=1\r\nSLPolicyOffset.x64=21FD0\r\nSLPolicyFunc.x64=New_Win8SL\r\n\r\n[6.3.9431.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=8A611\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=9F721\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=306A8\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=367F9\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2EA25\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=350FD\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=196B0\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2F9C0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.16384]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A2729\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=81824\r\nLocalOnlyCode.x64=nopjmp\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=18028\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=20241\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=16115\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=57829\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=1CEB0\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=554C0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.17095]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A36D1\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=B9159\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36BA9\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=21829\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=37529\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1F6A1\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=117F1\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=3B110\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.17415]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=B33F8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8B2D9\r\nLocalOnlyCode.x64=nopjmp\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=37115\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=33CE9\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3CFF9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=45825\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=18478\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=5DBC0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.18692]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=B3458\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8B2E9\r\nLocalOnlyCode.x64=nopjmp\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=37105\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=37039\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3CFE9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=45835\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=18488\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=5DBD0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.18708]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=B35D8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8B376\r\nLocalOnlyCode.x64=nopjmp\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=370F5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=36FE9\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3CFD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=457D5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=18308\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=5DB70\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.18928]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=B39D8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8B25D\r\nLocalOnlyCode.x64=nopjmp\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=37D25\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=36C09\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3D6F9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=45495\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=18328\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=5D830\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.3.9600.19093]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=B3958\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8AE4E\r\nLocalOnlyCode.x64=nopjmp\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3F045\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=36BC9\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3D899\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=45305\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=18288\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=5D660\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.4.9841.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=956A8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=81141\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=30125\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=12159\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3B989\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=C125\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46A68\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=1EA50\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.4.9860.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=962C8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=81091\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=30845\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=11AA9\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3BEC9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=B9F5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46F18\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=1EB00\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[6.4.9879.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9CC8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=95611\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=30C55\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=16A34\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2DAB9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1BDC5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=41132\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=24750\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.9926.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8C28\r\nLocalOnlyCode.x86=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=31725\r\nSingleUserCode.x86=nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3CF99\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=3F140\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=95FF1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=12A34\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=BE05\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=24EC0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.10041.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9D88\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=97141\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=32215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=15C64\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2DFC9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=B795\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46960\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22E40\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.10240.16384]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7D38\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=96901\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=32A95\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=18F74\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2F5B9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=22865\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46581\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=250F0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.10586.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7C18\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=96AA1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=353B5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=190D4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30B69\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=229A5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=469DE\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=25220\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.10586.589]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7BE8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=96A51\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=353B5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=190D4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30B69\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=229A5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=469DE\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=25220\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.11082.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7C98\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=96AB1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35405\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=190D4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30BB9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=229A5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46A3E\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=25220\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.11102.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5D58\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=95CD1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35A85\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2A9C4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30159\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B5D5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=44FD2\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D160\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14251.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5D58\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=95CD1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35A85\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2A9C4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30159\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B5D5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=44FD2\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D160\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14271.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A4CE8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=941E1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35915\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=263F4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF79\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1C185\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=47725\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CE50\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14279.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A4D28\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=94191\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35915\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=263F4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF79\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1C185\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=47725\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CE50\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14295.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A4D28\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D691\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35925\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=25514\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1BA35\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=47748\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C860\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14300.1000]\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F5F1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=26B04\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1D125\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CC60\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14316.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E88\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F5F1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=32B55\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=26B04\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3C1C9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1D295\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46ABD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CC60\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14328.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E88\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F5F1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=32B55\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=26B04\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3C1C9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1D365\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46ABD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CC60\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14332.1001]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E98\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F601\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=357E5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2AE44\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=316A9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1C025\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4755F\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CAD0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14342.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E98\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8EF31\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=357E5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=26774\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=316A9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1CEF5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4755F\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CA20\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14352.1002]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A4478\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D911\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35465\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=24474\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30099\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1AC05\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=44792\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CDB0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14366.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9088\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FB01\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34F65\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=21DE4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=316E9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1A855\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4793E\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CCE0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14367.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9088\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FB01\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34F65\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=21DE4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=316E9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1A855\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4793E\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CCE0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14372.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7698\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F931\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34635\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=295A4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF69\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B295\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=460D2\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CC10\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14379.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7698\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F941\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34635\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=295A4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF69\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B295\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=460D2\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CC10\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14383.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7698\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F941\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34635\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=295A4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF69\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B295\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=460D2\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CC10\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14385.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7698\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F941\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34635\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=295A4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF69\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B295\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=460D2\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CC10\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14388.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6038\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D781\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=359C5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=299A4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF29\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1AFC5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45636\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C930\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14393.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6038\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D781\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=359C5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=299A4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF29\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1AFC5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45636\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C930\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14393.1198]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6088\r\nLocalOnlyCode.x86=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=359C5\r\nSingleUserCode.x86=nop\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF29\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45636\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\n\r\n[10.0.14393.1737]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6198\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D861\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35AD5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=299A4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30039\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1AFC5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45724\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C930\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14393.2457]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6248\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D811\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36CE5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=29CF4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31209\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B545\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45824\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C920\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14901.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6038\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D781\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=359C5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=299A4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF29\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1AFC5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45636\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C930\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14905.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6038\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D781\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=359C5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=299A4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF29\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1AFC5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45636\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C930\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14915.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6D98\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E241\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35E35\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=29EB4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=30399\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B4A5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46092\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CE40\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14926.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A6D18\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E071\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35E55\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=29EB4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=303B9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1B4A5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=460A2\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=CE40\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14931.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A4908\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8B411\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35705\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=29264\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FF69\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1AD05\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=452FD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C7FC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14936.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A3F38\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8B9A1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35355\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=25174\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FCD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1BB55\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=44CFE\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=C62C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14942.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A3F38\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=9115B\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35355\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=199BD\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FCD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1064E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=44CFE\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=258EC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14946.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A4018\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=911AB\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35355\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=199AD\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FCD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1064E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=44CFD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=258DC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14951.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A78D8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=94A6B\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3BA85\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1CEDD\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=32629\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=11E9E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=3F680\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22EE0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14955.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A78D8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=94A6B\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3BA85\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1CEDD\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=32629\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=11E9E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=3F680\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22EE0\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14959.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A79B8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=934AB\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=2EF05\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=16A0D\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2A4E9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10A8E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=448A0\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=26960\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14965.1001]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7868\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=9345B\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3BA85\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17DFD\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=32A59\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1212E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=3F680\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=26610\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14971.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7968\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=925FB\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36FE5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1803D\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3D9A9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=11FBE\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46500\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=26180\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14986.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7878\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=926BB\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36FA5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=17FFD\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3D979\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=11F7E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=464A0\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=26140\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.14997.1001]\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=931EB\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=274ED\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1D95E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=E000\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15002.1001]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9698\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=931EB\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=346B5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=274ED\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3D779\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1D95E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=47D90\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=E000\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15007.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9648\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=931EB\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34665\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=274ED\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3D719\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1D95E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=47D30\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=E000\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15014.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9648\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=931EB\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34685\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=274ED\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3D739\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1D95E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=47D50\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=E000\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15019.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A39F8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=928FB\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=BADF5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=FBDD\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=A8479\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx_jmp\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=20AAE\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=3C240\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=24480\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15025.1000]\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=9259B\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2C08D\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1DD0E\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=E5B8\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15031.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5BA8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E221\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=30A75\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2A114\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2B1D9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1C7B5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4532D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D80C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15042.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5BA8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E221\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=30A75\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=2A114\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2B1D9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1C7B5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4532D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D80C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15046.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=80BB8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E361\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=31E95\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=15E14\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=38A19\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=E745\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=9422D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=21FFC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15048.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=80BB8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E361\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=31E95\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=15E14\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=38A19\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=E745\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=9422D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=21FFC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15055.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5348\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8D2E1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=374C5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=181E4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3BAD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10B65\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=44EFF\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22AEC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15058.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5D68\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8CAA1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35075\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=24E74\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FCD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=2DD65\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4549D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D1EC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15061.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5D68\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8CAA1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35075\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=24E74\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FCD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=2DD65\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4549D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D1EC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15063.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5D68\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8CAA1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35075\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=24E74\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FCD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=2DD65\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4549D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D1EC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15063.296]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A5D68\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8CAA1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=35075\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=24E74\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=2FCD9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=2DD65\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4549D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=D1EC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15063.994]\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8CB01\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=15EA4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=FAE5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=234DC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.15063.1155]\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8CB01\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=15EA4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=FAE5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=234DC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16179.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AA568\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8C141\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34425\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=16F84\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31219\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1E7F5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45F30\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=21700\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16184.1001]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AA568\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8C141\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=34425\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=16F84\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31219\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1E7F5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45F30\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=21700\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16199.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=ABA68\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8CED1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=348C5\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=28C14\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=319B9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=CB25\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=469B0\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=FA30\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16215.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7CE8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8DE21\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39F05\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=28724\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3E019\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=CC15\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=46462\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=FB00\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16232.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7D38\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8DD41\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39F35\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=287B4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3E0C9\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=CC15\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4650F\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=FB00\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16237.1001]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7F38\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E911\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39F85\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1BC84\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3E119\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=DA55\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4655D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2180C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16241.1001]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A7F38\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E911\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39F85\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1BC84\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3E119\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=DA55\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4655D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2180C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16251.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=ABC88\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8EC21\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3A525\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1BCB4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31779\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=DAF5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=447FD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2183C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16251.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=ABC88\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8EC21\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3A525\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1BCB4\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31779\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=DAF5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=447FD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2183C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16257.1]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AB718\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E841\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=33925\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=11364\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3C409\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1EFD5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4504D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2495C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16257.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AB718\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E841\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=33925\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=11364\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3C409\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1EFD5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4504D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2495C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16273.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AB798\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8E871\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=33925\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=11364\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3C409\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=1EFD5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4504D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2495C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16275.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9388\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=90001\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39435\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C724\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DE89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D75\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=463D4\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D0C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16278.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9388\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=90001\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39435\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C724\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DE89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D75\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=463D4\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D0C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16281.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E08\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FD01\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C774\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DC89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=461BD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D5C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16288.1]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E08\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FD01\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C774\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DC89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=461BD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D5C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16291.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E08\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FD01\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C774\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DC89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=461BD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D5C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16294.1]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E08\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FD01\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C774\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DC89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=461BD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D5C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16296.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E08\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FD01\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C774\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DC89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=461BD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D5C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16299.0]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E08\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FD01\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C774\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DC89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=461BD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D5C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16299.15]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E08\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FD01\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39215\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C774\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DC89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=461BD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D5C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16353.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A9388\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=90001\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=39435\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1C724\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DE89\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D75\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=463D4\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D0C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.16362.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8E38\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FBA1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=2F61C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=19D1C\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DE99\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=463D4\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D9C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17004.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=A8EB8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8FB41\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=2F65C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=19D1C\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=3DF09\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=12D85\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=4643F\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22D9C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17017.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AB388\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F291\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3477C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1977C\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31049\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=125A5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45CDD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=227DC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17025.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AB498\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F291\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=3477C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1977C\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31049\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=125A5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45CDD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=227DC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17035.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AB3F8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F271\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=354AC\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=14E7C\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31F19\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10CB5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45C4D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22AEC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17046.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AB3F8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=8F281\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=354AC\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=14E8C\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=31F19\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10CC5\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=45C4D\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22AFC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17063.1000]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AD7F8\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=92671\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36B0C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=153CC\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=33569\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=111CE\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=474AD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=2318C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17115.1]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AD738\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=925D1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36B0C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1511C\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=33569\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10E78\r\nDefPolicyCode.x64=CDefPolicy_Query_edi_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=474AD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22E6C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17128.1]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AD738\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=925D1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36B0C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1511C\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=33569\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10E78\r\nDefPolicyCode.x64=CDefPolicy_Query_edi_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=474AD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22E6C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17133.1]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AD738\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=925D1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36B0C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1511C\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=33569\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10E78\r\nDefPolicyCode.x64=CDefPolicy_Query_edi_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=474AD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22E6C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17134.1]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AD738\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=925D1\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=36B0C\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1511C\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=33569\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=10E78\r\nDefPolicyCode.x64=CDefPolicy_Query_edi_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=474AD\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=22E6C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17723.1000]\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=75D91\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1296C\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17A45\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=1B10C\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[10.0.17763.1]\r\nLocalOnlyPatch.x86=1\r\nLocalOnlyOffset.x86=AF8E4\r\nLocalOnlyCode.x86=jmpshort\r\nLocalOnlyPatch.x64=1\r\nLocalOnlyOffset.x64=77941\r\nLocalOnlyCode.x64=jmpshort\r\nSingleUserPatch.x86=1\r\nSingleUserOffset.x86=4D505\r\nSingleUserCode.x86=nop\r\nSingleUserPatch.x64=1\r\nSingleUserOffset.x64=1322C\r\nSingleUserCode.x64=Zero\r\nDefPolicyPatch.x86=1\r\nDefPolicyOffset.x86=4BD09\r\nDefPolicyCode.x86=CDefPolicy_Query_eax_ecx\r\nDefPolicyPatch.x64=1\r\nDefPolicyOffset.x64=17F45\r\nDefPolicyCode.x64=CDefPolicy_Query_eax_rcx\r\nSLInitHook.x86=1\r\nSLInitOffset.x86=5B02A\r\nSLInitFunc.x86=New_CSLQuery_Initialize\r\nSLInitHook.x64=1\r\nSLInitOffset.x64=1ABFC\r\nSLInitFunc.x64=New_CSLQuery_Initialize\r\n\r\n[SLInit]\r\nbServerSku=1\r\nbRemoteConnAllowed=1\r\nbFUSEnabled=1\r\nbAppServerAllowed=1\r\nbMultimonAllowed=1\r\nlMaxUserSessions=0\r\nulMaxDebugSessions=0\r\nbInitialized=1\r\n\r\n[6.3.9431.0-SLInit]\r\nbFUSEnabled.x86       =A22A8\r\nlMaxUserSessions.x86  =A22AC\r\nbAppServerAllowed.x86 =A22B0\r\nbInitialized.x86      =A22B4\r\nbMultimonAllowed.x86  =A22B8\r\nbServerSku.x86        =A22BC\r\nulMaxDebugSessions.x86=A22C0\r\nbRemoteConnAllowed.x86=A22C4\r\n\r\nbFUSEnabled.x64       =C4490\r\nlMaxUserSessions.x64  =C4494\r\nbAppServerAllowed.x64 =C4498\r\nbInitialized.x64      =C449C\r\nbMultimonAllowed.x64  =C44A0\r\nbServerSku.x64        =C44A4\r\nulMaxDebugSessions.x64=C44A8\r\nbRemoteConnAllowed.x64=C44AC\r\n\r\n[6.3.9600.16384-SLInit]\r\nbFUSEnabled.x86       =C02A8\r\nlMaxUserSessions.x86  =C02AC\r\nbAppServerAllowed.x86 =C02B0\r\nbInitialized.x86      =C02B4\r\nbMultimonAllowed.x86  =C02B8\r\nbServerSku.x86        =C02BC\r\nulMaxDebugSessions.x86=C02C0\r\nbRemoteConnAllowed.x86=C02C4\r\n\r\nbServerSku.x64        =E6494\r\nulMaxDebugSessions.x64=E6498\r\nbRemoteConnAllowed.x64=E649C\r\nbFUSEnabled.x64       =E64A0\r\nlMaxUserSessions.x64  =E64A4\r\nbAppServerAllowed.x64 =E64A8\r\nbInitialized.x64      =E64AC\r\nbMultimonAllowed.x64  =E64B0\r\n\r\n[6.3.9600.17095-SLInit]\r\nbFUSEnabled.x86       =C12A8\r\nlMaxUserSessions.x86  =C12AC\r\nbAppServerAllowed.x86 =C12B0\r\nbInitialized.x86      =C12B4\r\nbMultimonAllowed.x86  =C12B8\r\nbServerSku.x86        =C12BC\r\nulMaxDebugSessions.x86=C12C0\r\nbRemoteConnAllowed.x86=C12C4\r\n\r\nbServerSku.x64        =E4494\r\nulMaxDebugSessions.x64=E4498\r\nbRemoteConnAllowed.x64=E449C\r\nbFUSEnabled.x64       =E44A0\r\nlMaxUserSessions.x64  =E44A4\r\nbAppServerAllowed.x64 =E44A8\r\nbInitialized.x64      =E44AC\r\nbMultimonAllowed.x64  =E44B0\r\n\r\n[6.3.9600.17415-SLInit]\r\nbFUSEnabled.x86       =D3068\r\nlMaxUserSessions.x86  =D306C\r\nbAppServerAllowed.x86 =D3070\r\nbInitialized.x86      =D3074\r\nbMultimonAllowed.x86  =D3078\r\nbServerSku.x86        =D307C\r\nulMaxDebugSessions.x86=D3080\r\nbRemoteConnAllowed.x86=D3084\r\n\r\nbFUSEnabled.x64       =F9054\r\nlMaxUserSessions.x64  =F9058\r\nbAppServerAllowed.x64 =F905C\r\nbInitialized.x64      =F9060\r\nbMultimonAllowed.x64  =F9064\r\nbServerSku.x64        =F9068\r\nulMaxDebugSessions.x64=F906C\r\nbRemoteConnAllowed.x64=F9070\r\n\r\n[6.3.9600.18692-SLInit]\r\nbFUSEnabled.x86       =D3068\r\nlMaxUserSessions.x86  =D306C\r\nbAppServerAllowed.x86 =D3070\r\nbInitialized.x86      =D3074\r\nbMultimonAllowed.x86  =D3078\r\nbServerSku.x86        =D307C\r\nulMaxDebugSessions.x86=D3080\r\nbRemoteConnAllowed.x86=D3084\r\n\r\nbFUSEnabled.x64       =F9054\r\nlMaxUserSessions.x64  =F9058\r\nbAppServerAllowed.x64 =F905C\r\nbInitialized.x64      =F9060\r\nbMultimonAllowed.x64  =F9064\r\nbServerSku.x64        =F9068\r\nulMaxDebugSessions.x64=F906C\r\nbRemoteConnAllowed.x64=F9070\r\n\r\n[6.3.9600.18708-SLInit]\r\nbFUSEnabled.x86       =D3068\r\nlMaxUserSessions.x86  =D306C\r\nbAppServerAllowed.x86 =D3070\r\nbInitialized.x86      =D3074\r\nbMultimonAllowed.x86  =D3078\r\nbServerSku.x86        =D307C\r\nulMaxDebugSessions.x86=D3080\r\nbRemoteConnAllowed.x86=D3084\r\n\r\nbFUSEnabled.x64       =FA054\r\nlMaxUserSessions.x64  =FA058\r\nbAppServerAllowed.x64 =FA05C\r\nbInitialized.x64      =FA060\r\nbMultimonAllowed.x64  =FA064\r\nbServerSku.x64        =FA068\r\nulMaxDebugSessions.x64=FA06C\r\nbRemoteConnAllowed.x64=FA070\r\n\r\n[6.3.9600.18928-SLInit]\r\nbFUSEnabled.x86       =D3068\r\nlMaxUserSessions.x86  =D306C\r\nbAppServerAllowed.x86 =D3070\r\nbInitialized.x86      =D3074\r\nbMultimonAllowed.x86  =D3078\r\nbServerSku.x86        =D307C\r\nulMaxDebugSessions.x86=D3080\r\nbRemoteConnAllowed.x86=D3084\r\n\r\nbFUSEnabled.x64       =FA054\r\nlMaxUserSessions.x64  =FA058\r\nbAppServerAllowed.x64 =FA05C\r\nbInitialized.x64      =FA060\r\nbMultimonAllowed.x64  =FA064\r\nbServerSku.x64        =FA068\r\nulMaxDebugSessions.x64=FA06C\r\nbRemoteConnAllowed.x64=FA070\r\n\r\n[6.3.9600.19093-SLInit]\r\nbFUSEnabled.x86       =D3068\r\nlMaxUserSessions.x86  =D306C\r\nbAppServerAllowed.x86 =D3070\r\nbInitialized.x86      =D3074\r\nbMultimonAllowed.x86  =D3078\r\nbServerSku.x86        =D307C\r\nulMaxDebugSessions.x86=D3080\r\nbRemoteConnAllowed.x86=D3084\r\n\r\nbFUSEnabled.x64       =FA054\r\nlMaxUserSessions.x64  =FA058\r\nbAppServerAllowed.x64 =FA05C\r\nbInitialized.x64      =FA060\r\nbMultimonAllowed.x64  =FA064\r\nbServerSku.x64        =FA068\r\nulMaxDebugSessions.x64=FA06C\r\nbRemoteConnAllowed.x64=FA070\r\n\r\n[6.4.9841.0-SLInit]\r\nbFUSEnabled.x86       =BF9F0\r\nlMaxUserSessions.x86  =BF9F4\r\nbAppServerAllowed.x86 =BF9F8\r\nbInitialized.x86      =BF9FC\r\nbMultimonAllowed.x86  =BFA00\r\nbServerSku.x86        =BFA04\r\nulMaxDebugSessions.x86=BFA08\r\nbRemoteConnAllowed.x86=BFA0C\r\n\r\nbFUSEnabled.x64       =ECFF8\r\nlMaxUserSessions.x64  =ECFFC\r\nbAppServerAllowed.x64 =ED000\r\nbInitialized.x64      =ED004\r\nbMultimonAllowed.x64  =ED008\r\nbServerSku.x64        =ED00C\r\nulMaxDebugSessions.x64=ED010\r\nbRemoteConnAllowed.x64=ED014\r\n\r\n[6.4.9860.0-SLInit]\r\nbFUSEnabled.x86       =BF7E0\r\nlMaxUserSessions.x86  =BF7E4\r\nbAppServerAllowed.x86 =BF7E8\r\nbInitialized.x86      =BF7EC\r\nbMultimonAllowed.x86  =BF7F0\r\nbServerSku.x86        =BF7F4\r\nulMaxDebugSessions.x86=BF7F8\r\nbRemoteConnAllowed.x86=BF7FC\r\n\r\nbFUSEnabled.x64       =ECBD8\r\nlMaxUserSessions.x64  =ECBDC\r\nbAppServerAllowed.x64 =ECBE0\r\nbInitialized.x64      =ECBE4\r\nbMultimonAllowed.x64  =ECBE8\r\nbServerSku.x64        =ECBEC\r\nulMaxDebugSessions.x64=ECBF0\r\nbRemoteConnAllowed.x64=ECBF4\r\n\r\n[6.4.9879.0-SLInit]\r\nbFUSEnabled.x86       =C27D8\r\nlMaxUserSessions.x86  =C27DC\r\nbAppServerAllowed.x86 =C27E0\r\nbInitialized.x86      =C27E4\r\nbMultimonAllowed.x86  =C27E8\r\nbServerSku.x86        =C27EC\r\nulMaxDebugSessions.x86=C27F0\r\nbRemoteConnAllowed.x86=C27F4\r\n\r\nbFUSEnabled.x64       =EDBF0\r\nlMaxUserSessions.x64  =EDBF4\r\nbAppServerAllowed.x64 =EDBF8\r\nbInitialized.x64      =EDBFC\r\nbMultimonAllowed.x64  =EDC00\r\nbServerSku.x64        =EDC04\r\nulMaxDebugSessions.x64=EDC08\r\nbRemoteConnAllowed.x64=EDC0C\r\n\r\n[10.0.9926.0-SLInit]\r\nbFUSEnabled.x86       =C17D8\r\nlMaxUserSessions.x86  =C17DC\r\nbAppServerAllowed.x86 =C17E0\r\nbInitialized.x86      =C17E4\r\nbMultimonAllowed.x86  =C17E8\r\nbServerSku.x86        =C17EC\r\nulMaxDebugSessions.x86=C17F0\r\nbRemoteConnAllowed.x86=C17F4\r\n\r\nbFUSEnabled.x64       =EEBF0\r\nlMaxUserSessions.x64  =EEBF4\r\nbAppServerAllowed.x64 =EEBF8\r\nbInitialized.x64      =EEBFC\r\nbMultimonAllowed.x64  =EEC00\r\nbServerSku.x64        =EEC04\r\nulMaxDebugSessions.x64=EEC08\r\nbRemoteConnAllowed.x64=EEC0C\r\n\r\n[10.0.10041.0-SLInit]\r\nbFUSEnabled.x86       =C5F60\r\nlMaxUserSessions.x86  =C5F64\r\nbAppServerAllowed.x86 =C5F68\r\nbInitialized.x86      =C5F6C\r\nbMultimonAllowed.x86  =C5F70\r\nbServerSku.x86        =C5F74\r\nulMaxDebugSessions.x86=C5F78\r\nbRemoteConnAllowed.x86=C5F7C\r\n\r\nbFUSEnabled.x64       =F3448\r\nlMaxUserSessions.x64  =F344C\r\nbAppServerAllowed.x64 =F3450\r\nbInitialized.x64      =F3454\r\nbMultimonAllowed.x64  =F3458\r\nbServerSku.x64        =F345C\r\nulMaxDebugSessions.x64=F3460\r\nbRemoteConnAllowed.x64=F3464\r\n\r\n[10.0.10240.16384-SLInit]\r\nbFUSEnabled.x86       =C3F60\r\nlMaxUserSessions.x86  =C3F64\r\nbAppServerAllowed.x86 =C3F68\r\nbInitialized.x86      =C3F6C\r\nbMultimonAllowed.x86  =C3F70\r\nbServerSku.x86        =C3F74\r\nulMaxDebugSessions.x86=C3F78\r\nbRemoteConnAllowed.x86=C3F7C\r\n\r\nlMaxUserSessions.x64  =F23B0\r\nbAppServerAllowed.x64 =F23B4\r\nbServerSku.x64        =F23B8\r\nbFUSEnabled.x64       =F3460\r\nbInitialized.x64      =F3464\r\nbMultimonAllowed.x64  =F3468\r\nulMaxDebugSessions.x64=F346C\r\nbRemoteConnAllowed.x64=F3470\r\n\r\n[10.0.10586.0-SLInit]\r\nbFUSEnabled.x86       =C3F60\r\nlMaxUserSessions.x86  =C3F64\r\nbAppServerAllowed.x86 =C3F68\r\nbInitialized.x86      =C3F6C\r\nbMultimonAllowed.x86  =C3F70\r\nbServerSku.x86        =C3F74\r\nulMaxDebugSessions.x86=C3F78\r\nbRemoteConnAllowed.x86=C3F7C\r\n\r\nlMaxUserSessions.x64  =F23B0\r\nbAppServerAllowed.x64 =F23B4\r\nbServerSku.x64        =F23B8\r\nbFUSEnabled.x64       =F3460\r\nbInitialized.x64      =F3464\r\nbMultimonAllowed.x64  =F3468\r\nulMaxDebugSessions.x64=F346C\r\nbRemoteConnAllowed.x64=F3470\r\n\r\n[10.0.10586.589-SLInit]\r\nbFUSEnabled.x86       =C3F60\r\nlMaxUserSessions.x86  =C3F64\r\nbAppServerAllowed.x86 =C3F68\r\nbInitialized.x86      =C3F6C\r\nbMultimonAllowed.x86  =C3F70\r\nbServerSku.x86        =C3F74\r\nulMaxDebugSessions.x86=C3F78\r\nbRemoteConnAllowed.x86=C3F7C\r\n\r\nlMaxUserSessions.x64  =F23B0\r\nbAppServerAllowed.x64 =F23B4\r\nbServerSku.x64        =F23B8\r\nbFUSEnabled.x64       =F3460\r\nbInitialized.x64      =F3464\r\nbMultimonAllowed.x64  =F3468\r\nulMaxDebugSessions.x64=F346C\r\nbRemoteConnAllowed.x64=F3470\r\n\r\n[10.0.11082.1000-SLInit]\r\nbFUSEnabled.x86       =C3F60\r\nlMaxUserSessions.x86  =C3F64\r\nbAppServerAllowed.x86 =C3F68\r\nbInitialized.x86      =C3F6C\r\nbMultimonAllowed.x86  =C3F70\r\nbServerSku.x86        =C3F74\r\nulMaxDebugSessions.x86=C3F78\r\nbRemoteConnAllowed.x86=C3F7C\r\n\r\nlMaxUserSessions.x64  =F23B0\r\nbAppServerAllowed.x64 =F23B4\r\nbServerSku.x64        =F23B8\r\nbFUSEnabled.x64       =F3460\r\nbInitialized.x64      =F3464\r\nbMultimonAllowed.x64  =F3468\r\nulMaxDebugSessions.x64=F346C\r\nbRemoteConnAllowed.x64=F3470\r\n\r\n[10.0.11102.1000-SLInit]\r\nbInitialized.x86      =C1F5C\r\nbServerSku.x86        =C1F60\r\nlMaxUserSessions.x86  =C1F64\r\nbAppServerAllowed.x86 =C1F68\r\nbRemoteConnAllowed.x86=C1F6C\r\nbMultimonAllowed.x86  =C1F70\r\nulMaxDebugSessions.x86=C1F74\r\nbFUSEnabled.x86       =C1F78\r\n\r\nbInitialized.x64      =F2430\r\nbRemoteConnAllowed.x64=F2434\r\nbMultimonAllowed.x64  =F2438\r\nulMaxDebugSessions.x64=F243C\r\nbFUSEnabled.x64       =F2440\r\nbServerSku.x64        =F244C\r\nlMaxUserSessions.x64  =F2450\r\nbAppServerAllowed.x64 =F2454\r\n\r\n[10.0.14251.1000-SLInit]\r\nbInitialized.x86      =C1F5C\r\nbServerSku.x86        =C1F60\r\nlMaxUserSessions.x86  =C1F64\r\nbAppServerAllowed.x86 =C1F68\r\nbRemoteConnAllowed.x86=C1F6C\r\nbMultimonAllowed.x86  =C1F70\r\nulMaxDebugSessions.x86=C1F74\r\nbFUSEnabled.x86       =C1F78\r\n\r\nbInitialized.x64      =F2430\r\nbRemoteConnAllowed.x64=F2434\r\nbMultimonAllowed.x64  =F2438\r\nulMaxDebugSessions.x64=F243C\r\nbFUSEnabled.x64       =F2440\r\nbServerSku.x64        =F244C\r\nlMaxUserSessions.x64  =F2450\r\nbAppServerAllowed.x64 =F2454\r\n\r\n[10.0.14271.1000-SLInit]\r\nbInitialized.x86      =C0F5C\r\nbServerSku.x86        =C0F60\r\nlMaxUserSessions.x86  =C0F64\r\nbAppServerAllowed.x86 =C0F68\r\nbRemoteConnAllowed.x86=C0F6C\r\nbMultimonAllowed.x86  =C0F70\r\nulMaxDebugSessions.x86=C0F74\r\nbFUSEnabled.x86       =C0F78\r\n\r\nbServerSku.x64        =EF3C0\r\nlMaxUserSessions.x64  =EF3C4\r\nbAppServerAllowed.x64 =EF3C8\r\nbInitialized.x64      =F0460\r\nbRemoteConnAllowed.x64=F0464\r\nbMultimonAllowed.x64  =F0468\r\nulMaxDebugSessions.x64=F046C\r\nbFUSEnabled.x64       =F0470\r\n\r\n[10.0.14279.1000-SLInit]\r\nbInitialized.x86      =C0F5C\r\nbServerSku.x86        =C0F60\r\nlMaxUserSessions.x86  =C0F64\r\nbAppServerAllowed.x86 =C0F68\r\nbRemoteConnAllowed.x86=C0F6C\r\nbMultimonAllowed.x86  =C0F70\r\nulMaxDebugSessions.x86=C0F74\r\nbFUSEnabled.x86       =C0F78\r\n\r\nbServerSku.x64        =EF3C0\r\nlMaxUserSessions.x64  =EF3C4\r\nbAppServerAllowed.x64 =EF3C8\r\nbInitialized.x64      =F0460\r\nbRemoteConnAllowed.x64=F0464\r\nbMultimonAllowed.x64  =F0468\r\nulMaxDebugSessions.x64=F046C\r\nbFUSEnabled.x64       =F0470\r\n\r\n[10.0.14295.1000-SLInit]\r\nbInitialized.x86      =C0F5C\r\nbServerSku.x86        =C0F60\r\nlMaxUserSessions.x86  =C0F64\r\nbAppServerAllowed.x86 =C0F68\r\nbRemoteConnAllowed.x86=C0F6C\r\nbMultimonAllowed.x86  =C0F70\r\nulMaxDebugSessions.x86=C0F74\r\nbFUSEnabled.x86       =C0F78\r\n\r\nbServerSku.x64        =E73C0\r\nlMaxUserSessions.x64  =E73C4\r\nbAppServerAllowed.x64 =E73C8\r\nbInitialized.x64      =E8460\r\nbRemoteConnAllowed.x64=E8464\r\nbMultimonAllowed.x64  =E8468\r\nulMaxDebugSessions.x64=E846C\r\nbFUSEnabled.x64       =E8470\r\n\r\n[10.0.14300.1000-SLInit]\r\nbServerSku.x64        =E93C0\r\nlMaxUserSessions.x64  =E93C4\r\nbAppServerAllowed.x64 =E93C8\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\n\r\n[10.0.14316.1000-SLInit]\r\nbInitialized.x86      =C4F58\r\nbServerSku.x86        =C4F5C\r\nlMaxUserSessions.x86  =C4F60\r\nbAppServerAllowed.x86 =C4F64\r\nbRemoteConnAllowed.x86=C4F68\r\nbMultimonAllowed.x86  =C4F6C\r\nulMaxDebugSessions.x86=C4F70\r\nbFUSEnabled.x86       =C4F74\r\n\r\nbServerSku.x64        =E93C0\r\nlMaxUserSessions.x64  =E93C4\r\nbAppServerAllowed.x64 =E93C8\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\n\r\n[10.0.14328.1000-SLInit]\r\nbInitialized.x86      =C4F58\r\nbServerSku.x86        =C4F5C\r\nlMaxUserSessions.x86  =C4F60\r\nbAppServerAllowed.x86 =C4F64\r\nbRemoteConnAllowed.x86=C4F68\r\nbMultimonAllowed.x86  =C4F6C\r\nulMaxDebugSessions.x86=C4F70\r\nbFUSEnabled.x86       =C4F74\r\n\r\nbServerSku.x64        =E93C0\r\nlMaxUserSessions.x64  =E93C4\r\nbAppServerAllowed.x64 =E93C8\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\n\r\n[10.0.14332.1001-SLInit]\r\nbInitialized.x86      =C4F58\r\nbServerSku.x86        =C4F5C\r\nlMaxUserSessions.x86  =C4F60\r\nbAppServerAllowed.x86 =C4F64\r\nbRemoteConnAllowed.x86=C4F68\r\nbMultimonAllowed.x86  =C4F6C\r\nulMaxDebugSessions.x86=C4F70\r\nbFUSEnabled.x86       =C4F74\r\n\r\nbServerSku.x64        =E93C0\r\nlMaxUserSessions.x64  =E93C4\r\nbAppServerAllowed.x64 =E93C8\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\n\r\n[10.0.14342.1000-SLInit]\r\nbInitialized.x86      =C4F58\r\nbServerSku.x86        =C4F5C\r\nlMaxUserSessions.x86  =C4F60\r\nbAppServerAllowed.x86 =C4F64\r\nbRemoteConnAllowed.x86=C4F68\r\nbMultimonAllowed.x86  =C4F6C\r\nulMaxDebugSessions.x86=C4F70\r\nbFUSEnabled.x86       =C4F74\r\n\r\nbInitialized.x64      =E9430\r\nbRemoteConnAllowed.x64=E9434\r\nbMultimonAllowed.x64  =E9438\r\nulMaxDebugSessions.x64=E943C\r\nbFUSEnabled.x64       =E9440\r\nbServerSku.x64        =E944C\r\nlMaxUserSessions.x64  =E9450\r\nbAppServerAllowed.x64 =E9454\r\n\r\n[10.0.14352.1002-SLInit]\r\nbInitialized.x86      =C0F5C\r\nbServerSku.x86        =C0F60\r\nlMaxUserSessions.x86  =C0F64\r\nbAppServerAllowed.x86 =C0F68\r\nbRemoteConnAllowed.x86=C0F6C\r\nbMultimonAllowed.x86  =C0F70\r\nulMaxDebugSessions.x86=C0F74\r\nbFUSEnabled.x86       =C0F78\r\n\r\nbServerSku.x64        =E73C0\r\nlMaxUserSessions.x64  =E73C4\r\nbAppServerAllowed.x64 =E73C8\r\nbInitialized.x64      =E8460\r\nbRemoteConnAllowed.x64=E8464\r\nbMultimonAllowed.x64  =E8468\r\nulMaxDebugSessions.x64=E846C\r\nbFUSEnabled.x64       =E8470\r\n\r\n[10.0.14366.0-SLInit]\r\nbInitialized.x86      =C4F68\r\nbServerSku.x86        =C4F6C\r\nlMaxUserSessions.x86  =C4F70\r\nbAppServerAllowed.x86 =C4F74\r\nbRemoteConnAllowed.x86=C4F78\r\nbMultimonAllowed.x86  =C4F7C\r\nulMaxDebugSessions.x86=C4F80\r\nbFUSEnabled.x86       =C4F84\r\n\r\nbServerSku.x64        =E93E0\r\nlMaxUserSessions.x64  =E93E4\r\nbAppServerAllowed.x64 =E93E8\r\nbInitialized.x64      =EA480\r\nbRemoteConnAllowed.x64=EA484\r\nbMultimonAllowed.x64  =EA488\r\nulMaxDebugSessions.x64=EA48C\r\nbFUSEnabled.x64       =EA490\r\n\r\n[10.0.14367.0-SLInit]\r\nbInitialized.x86      =C4F68\r\nbServerSku.x86        =C4F6C\r\nlMaxUserSessions.x86  =C4F70\r\nbAppServerAllowed.x86 =C4F74\r\nbRemoteConnAllowed.x86=C4F78\r\nbMultimonAllowed.x86  =C4F7C\r\nulMaxDebugSessions.x86=C4F80\r\nbFUSEnabled.x86       =C4F84\r\n\r\nbServerSku.x64        =E93E0\r\nlMaxUserSessions.x64  =E93E4\r\nbAppServerAllowed.x64 =E93E8\r\nbInitialized.x64      =EA480\r\nbRemoteConnAllowed.x64=EA484\r\nbMultimonAllowed.x64  =EA488\r\nulMaxDebugSessions.x64=EA48C\r\nbFUSEnabled.x64       =EA490\r\n\r\n[10.0.14372.0-SLInit]\r\nbInitialized.x86      =C3F68\r\nbServerSku.x86        =C3F6C\r\nlMaxUserSessions.x86  =C3F70\r\nbAppServerAllowed.x86 =C3F74\r\nbRemoteConnAllowed.x86=C3F78\r\nbMultimonAllowed.x86  =C3F7C\r\nulMaxDebugSessions.x86=C3F80\r\nbFUSEnabled.x86       =C3F84\r\n\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\nbServerSku.x64        =EA47C\r\nlMaxUserSessions.x64  =EA480\r\nbAppServerAllowed.x64 =EA484\r\n\r\n[10.0.14379.0-SLInit]\r\nbInitialized.x86      =C3F68\r\nbServerSku.x86        =C3F6C\r\nlMaxUserSessions.x86  =C3F70\r\nbAppServerAllowed.x86 =C3F74\r\nbRemoteConnAllowed.x86=C3F78\r\nbMultimonAllowed.x86  =C3F7C\r\nulMaxDebugSessions.x86=C3F80\r\nbFUSEnabled.x86       =C3F84\r\n\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\nbServerSku.x64        =EA47C\r\nlMaxUserSessions.x64  =EA480\r\nbAppServerAllowed.x64 =EA484\r\n\r\n[10.0.14383.0-SLInit]\r\nbInitialized.x86      =C3F68\r\nbServerSku.x86        =C3F6C\r\nlMaxUserSessions.x86  =C3F70\r\nbAppServerAllowed.x86 =C3F74\r\nbRemoteConnAllowed.x86=C3F78\r\nbMultimonAllowed.x86  =C3F7C\r\nulMaxDebugSessions.x86=C3F80\r\nbFUSEnabled.x86       =C3F84\r\n\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\nbServerSku.x64        =EA47C\r\nlMaxUserSessions.x64  =EA480\r\nbAppServerAllowed.x64 =EA484\r\n\r\n[10.0.14385.0-SLInit]\r\nbInitialized.x86      =C3F68\r\nbServerSku.x86        =C3F6C\r\nlMaxUserSessions.x86  =C3F70\r\nbAppServerAllowed.x86 =C3F74\r\nbRemoteConnAllowed.x86=C3F78\r\nbMultimonAllowed.x86  =C3F7C\r\nulMaxDebugSessions.x86=C3F80\r\nbFUSEnabled.x86       =C3F84\r\n\r\nbInitialized.x64      =EA460\r\nbRemoteConnAllowed.x64=EA464\r\nbMultimonAllowed.x64  =EA468\r\nulMaxDebugSessions.x64=EA46C\r\nbFUSEnabled.x64       =EA470\r\nbServerSku.x64        =EA47C\r\nlMaxUserSessions.x64  =EA480\r\nbAppServerAllowed.x64 =EA484\r\n\r\n[10.0.14388.0-SLInit]\r\nbInitialized.x86      =C1F6C\r\nbServerSku.x86        =C1F70\r\nlMaxUserSessions.x86  =C1F74\r\nbAppServerAllowed.x86 =C1F78\r\nbRemoteConnAllowed.x86=C1F7C\r\nbMultimonAllowed.x86  =C1F80\r\nulMaxDebugSessions.x86=C1F84\r\nbFUSEnabled.x86       =C1F88\r\n\r\nbServerSku.x64        =E73D0\r\nlMaxUserSessions.x64  =E73D4\r\nbAppServerAllowed.x64 =E73D8\r\nbInitialized.x64      =E8470\r\nbRemoteConnAllowed.x64=E8474\r\nbMultimonAllowed.x64  =E8478\r\nulMaxDebugSessions.x64=E847C\r\nbFUSEnabled.x64       =E8480\r\n\r\n[10.0.14393.0-SLInit]\r\nbInitialized.x86      =C1F6C\r\nbServerSku.x86        =C1F70\r\nlMaxUserSessions.x86  =C1F74\r\nbAppServerAllowed.x86 =C1F78\r\nbRemoteConnAllowed.x86=C1F7C\r\nbMultimonAllowed.x86  =C1F80\r\nulMaxDebugSessions.x86=C1F84\r\nbFUSEnabled.x86       =C1F88\r\n\r\nbServerSku.x64        =E73D0\r\nlMaxUserSessions.x64  =E73D4\r\nbAppServerAllowed.x64 =E73D8\r\nbInitialized.x64      =E8470\r\nbRemoteConnAllowed.x64=E8474\r\nbMultimonAllowed.x64  =E8478\r\nulMaxDebugSessions.x64=E847C\r\nbFUSEnabled.x64       =E8480\r\n\r\n[10.0.14393.1198-SLInit]\r\nbInitialized.x86      =C1F6C\r\nbServerSku.x86        =C1F70\r\nlMaxUserSessions.x86  =C1F74\r\nbAppServerAllowed.x86 =C1F78\r\nbRemoteConnAllowed.x86=C1F7C\r\nbMultimonAllowed.x86  =C1F80\r\nulMaxDebugSessions.x86=C1F84\r\nbFUSEnabled.x86       =C1F88\r\n\r\n[10.0.14393.1737-SLInit]\r\nbInitialized.x86      =C1F6C\r\nbServerSku.x86        =C1F70\r\nlMaxUserSessions.x86  =C1F74\r\nbAppServerAllowed.x86 =C1F78\r\nbRemoteConnAllowed.x86=C1F7C\r\nbMultimonAllowed.x86  =C1F80\r\nulMaxDebugSessions.x86=C1F84\r\nbFUSEnabled.x86       =C1F88\r\n\r\nbServerSku.x64        =E73D0\r\nlMaxUserSessions.x64  =E73D4\r\nbAppServerAllowed.x64 =E73D8\r\nbInitialized.x64      =E8470\r\nbRemoteConnAllowed.x64=E8474\r\nbMultimonAllowed.x64  =E8478\r\nulMaxDebugSessions.x64=E847C\r\nbFUSEnabled.x64       =E8480\r\n\r\n[10.0.14393.2457-SLInit]\r\nbInitialized.x86      =C1F94\r\nbServerSku.x86        =C1F98\r\nlMaxUserSessions.x86  =C1F9C\r\nbAppServerAllowed.x86 =C1FA0\r\nbRemoteConnAllowed.x86=C1FA4\r\nbMultimonAllowed.x86  =C1FA8\r\nulMaxDebugSessions.x86=C1FAC\r\nbFUSEnabled.x86       =C1FB0\r\n\r\nbServerSku.x64        =E73D0\r\nlMaxUserSessions.x64  =E73D4\r\nbAppServerAllowed.x64 =E73D8\r\nbInitialized.x64      =E8470\r\nbRemoteConnAllowed.x64=E8474\r\nbMultimonAllowed.x64  =E8478\r\nulMaxDebugSessions.x64=E847C\r\nbFUSEnabled.x64       =E8480\r\n\r\n[10.0.14901.1000-SLInit]\r\nbInitialized.x86      =C1F6C\r\nbServerSku.x86        =C1F70\r\nlMaxUserSessions.x86  =C1F74\r\nbAppServerAllowed.x86 =C1F78\r\nbRemoteConnAllowed.x86=C1F7C\r\nbMultimonAllowed.x86  =C1F80\r\nulMaxDebugSessions.x86=C1F84\r\nbFUSEnabled.x86       =C1F88\r\n\r\nbServerSku.x64        =E73D0\r\nlMaxUserSessions.x64  =E73D4\r\nbAppServerAllowed.x64 =E73D8\r\nbInitialized.x64      =E8470\r\nbRemoteConnAllowed.x64=E8474\r\nbMultimonAllowed.x64  =E8478\r\nulMaxDebugSessions.x64=E847C\r\nbFUSEnabled.x64       =E8480\r\n\r\n[10.0.14905.1000-SLInit]\r\nbInitialized.x86      =C1F6C\r\nbServerSku.x86        =C1F70\r\nlMaxUserSessions.x86  =C1F74\r\nbAppServerAllowed.x86 =C1F78\r\nbRemoteConnAllowed.x86=C1F7C\r\nbMultimonAllowed.x86  =C1F80\r\nulMaxDebugSessions.x86=C1F84\r\nbFUSEnabled.x86       =C1F88\r\n\r\nbServerSku.x64        =E73D0\r\nlMaxUserSessions.x64  =E73D4\r\nbAppServerAllowed.x64 =E73D8\r\nbInitialized.x64      =E8470\r\nbRemoteConnAllowed.x64=E8474\r\nbMultimonAllowed.x64  =E8478\r\nulMaxDebugSessions.x64=E847C\r\nbFUSEnabled.x64       =E8480\r\n\r\n[10.0.14915.1000-SLInit]\r\nbInitialized.x86      =C4F6C\r\nbServerSku.x86        =C4F70\r\nlMaxUserSessions.x86  =C4F74\r\nbAppServerAllowed.x86 =C4F78\r\nbRemoteConnAllowed.x86=C4F7C\r\nbMultimonAllowed.x86  =C4F80\r\nulMaxDebugSessions.x86=C4F84\r\nbFUSEnabled.x86       =C4F88\r\n\r\nbServerSku.x64        =E93D0\r\nlMaxUserSessions.x64  =E93D4\r\nbAppServerAllowed.x64 =E93D8\r\nbInitialized.x64      =EA470\r\nbRemoteConnAllowed.x64=EA474\r\nbMultimonAllowed.x64  =EA478\r\nulMaxDebugSessions.x64=EA47C\r\nbFUSEnabled.x64       =EA480\r\n\r\n[10.0.14926.1000-SLInit]\r\nbInitialized.x86      =C4F6C\r\nbServerSku.x86        =C4F70\r\nlMaxUserSessions.x86  =C4F74\r\nbAppServerAllowed.x86 =C4F78\r\nbRemoteConnAllowed.x86=C4F7C\r\nbMultimonAllowed.x86  =C4F80\r\nulMaxDebugSessions.x86=C4F84\r\nbFUSEnabled.x86       =C4F88\r\n\r\nbServerSku.x64        =E93D0\r\nlMaxUserSessions.x64  =E93D4\r\nbAppServerAllowed.x64 =E93D8\r\nbInitialized.x64      =EA470\r\nbRemoteConnAllowed.x64=EA474\r\nbMultimonAllowed.x64  =EA478\r\nulMaxDebugSessions.x64=EA47C\r\nbFUSEnabled.x64       =EA480\r\n\r\n[10.0.14931.1000-SLInit]\r\nbInitialized.x86      =C1F6C\r\nbServerSku.x86        =C1F70\r\nlMaxUserSessions.x86  =C1F74\r\nbAppServerAllowed.x86 =C1F78\r\nbRemoteConnAllowed.x86=C1F7C\r\nbMultimonAllowed.x86  =C1F80\r\nulMaxDebugSessions.x86=C1F84\r\nbFUSEnabled.x86       =C1F88\r\n\r\nbServerSku.x64        =E63D0\r\nlMaxUserSessions.x64  =E63D4\r\nbAppServerAllowed.x64 =E63D8\r\nbInitialized.x64      =E7470\r\nbRemoteConnAllowed.x64=E7474\r\nbMultimonAllowed.x64  =E7478\r\nulMaxDebugSessions.x64=E747C\r\nbFUSEnabled.x64       =E7480\r\n\r\n[10.0.14936.1000-SLInit]\r\nbInitialized.x86      =C0F6C\r\nbServerSku.x86        =C0F70\r\nlMaxUserSessions.x86  =C0F74\r\nbAppServerAllowed.x86 =C0F78\r\nbRemoteConnAllowed.x86=C0F7C\r\nbMultimonAllowed.x86  =C0F80\r\nulMaxDebugSessions.x86=C0F84\r\nbFUSEnabled.x86       =C0F88\r\n\r\nbInitialized.x64      =E8460\r\nbRemoteConnAllowed.x64=E8464\r\nbMultimonAllowed.x64  =E8468\r\nulMaxDebugSessions.x64=E846C\r\nbFUSEnabled.x64       =E8470\r\nbServerSku.x64        =E847C\r\nlMaxUserSessions.x64  =E8480\r\nbAppServerAllowed.x64 =E8484\r\n\r\n[10.0.14942.1000-SLInit]\r\nbInitialized.x86      =C0F6C\r\nbServerSku.x86        =C0F70\r\nlMaxUserSessions.x86  =C0F74\r\nbAppServerAllowed.x86 =C0F78\r\nbRemoteConnAllowed.x86=C0F7C\r\nbMultimonAllowed.x86  =C0F80\r\nulMaxDebugSessions.x86=C0F84\r\nbFUSEnabled.x86       =C0F88\r\n\r\nbInitialized.x64      =EC460\r\nbRemoteConnAllowed.x64=EC464\r\nbMultimonAllowed.x64  =EC468\r\nulMaxDebugSessions.x64=EC46C\r\nbFUSEnabled.x64       =EC470\r\nbServerSku.x64        =EC47C\r\nlMaxUserSessions.x64  =EC480\r\nbAppServerAllowed.x64 =EC484\r\n\r\n[10.0.14946.1000-SLInit]\r\nbInitialized.x86      =C0F6C\r\nbServerSku.x86        =C0F70\r\nlMaxUserSessions.x86  =C0F74\r\nbAppServerAllowed.x86 =C0F78\r\nbRemoteConnAllowed.x86=C0F7C\r\nbMultimonAllowed.x86  =C0F80\r\nulMaxDebugSessions.x86=C0F84\r\nbFUSEnabled.x86       =C0F88\r\n\r\nbInitialized.x64      =EC460\r\nbRemoteConnAllowed.x64=EC464\r\nbMultimonAllowed.x64  =EC468\r\nulMaxDebugSessions.x64=EC46C\r\nbFUSEnabled.x64       =EC470\r\nbServerSku.x64        =EC47C\r\nlMaxUserSessions.x64  =EC480\r\nbAppServerAllowed.x64 =EC484\r\n\r\n[10.0.14951.1000-SLInit]\r\nbInitialized.x86      =C5F68\r\nbServerSku.x86        =C5F6C\r\nlMaxUserSessions.x86  =C5F70\r\nbAppServerAllowed.x86 =C5F74\r\nbRemoteConnAllowed.x86=C5F78\r\nbMultimonAllowed.x86  =C5F7C\r\nulMaxDebugSessions.x86=C5F80\r\nbFUSEnabled.x86       =C5F84\r\n\r\nbServerSku.x64        =EF3D0\r\nlMaxUserSessions.x64  =EF3D4\r\nbAppServerAllowed.x64 =EF3D8\r\nbInitialized.x64      =F0470\r\nbRemoteConnAllowed.x64=F0474\r\nbMultimonAllowed.x64  =F0478\r\nulMaxDebugSessions.x64=F047C\r\nbFUSEnabled.x64       =F0480\r\n\r\n[10.0.14955.1000-SLInit]\r\nbInitialized.x86      =C5F68\r\nbServerSku.x86        =C5F6C\r\nlMaxUserSessions.x86  =C5F70\r\nbAppServerAllowed.x86 =C5F74\r\nbRemoteConnAllowed.x86=C5F78\r\nbMultimonAllowed.x86  =C5F7C\r\nulMaxDebugSessions.x86=C5F80\r\nbFUSEnabled.x86       =C5F84\r\n\r\nbServerSku.x64        =EF3D0\r\nlMaxUserSessions.x64  =EF3D4\r\nbAppServerAllowed.x64 =EF3D8\r\nbInitialized.x64      =F0470\r\nbRemoteConnAllowed.x64=F0474\r\nbMultimonAllowed.x64  =F0478\r\nulMaxDebugSessions.x64=F047C\r\nbFUSEnabled.x64       =F0480\r\n\r\n[10.0.14959.1000-SLInit]\r\nbInitialized.x86      =C4F68\r\nbServerSku.x86        =C4F6C\r\nlMaxUserSessions.x86  =C4F70\r\nbAppServerAllowed.x86 =C4F74\r\nbRemoteConnAllowed.x86=C4F78\r\nbMultimonAllowed.x86  =C4F7C\r\nulMaxDebugSessions.x86=C4F80\r\nbFUSEnabled.x86       =C4F84\r\n\r\nbServerSku.x64        =EE3D0\r\nlMaxUserSessions.x64  =EE3D4\r\nbAppServerAllowed.x64 =EE3D8\r\nbInitialized.x64      =EF470\r\nbRemoteConnAllowed.x64=EF474\r\nbMultimonAllowed.x64  =EF478\r\nulMaxDebugSessions.x64=EF47C\r\nbFUSEnabled.x64       =EF480\r\n\r\n[10.0.14965.1001-SLInit]\r\nbInitialized.x86      =C5F68\r\nbServerSku.x86        =C5F6C\r\nlMaxUserSessions.x86  =C5F70\r\nbAppServerAllowed.x86 =C5F74\r\nbRemoteConnAllowed.x86=C5F78\r\nbMultimonAllowed.x86  =C5F7C\r\nulMaxDebugSessions.x86=C5F80\r\nbFUSEnabled.x86       =C5F84\r\n\r\nbInitialized.x64      =EF460\r\nbRemoteConnAllowed.x64=EF464\r\nbMultimonAllowed.x64  =EF468\r\nulMaxDebugSessions.x64=EF46C\r\nbFUSEnabled.x64       =EF470\r\nbServerSku.x64        =EF47C\r\nlMaxUserSessions.x64  =EF480\r\nbAppServerAllowed.x64 =EF484\r\n\r\n[10.0.14971.1000-SLInit]\r\nbInitialized.x86      =C5F68\r\nbServerSku.x86        =C5F6C\r\nlMaxUserSessions.x86  =C5F70\r\nbAppServerAllowed.x86 =C5F74\r\nbRemoteConnAllowed.x86=C5F78\r\nbMultimonAllowed.x86  =C5F7C\r\nulMaxDebugSessions.x86=C5F80\r\nbFUSEnabled.x86       =C5F84\r\n\r\nbServerSku.x64        =EE3C0\r\nlMaxUserSessions.x64  =EE3C4\r\nbAppServerAllowed.x64 =EE3C8\r\nbInitialized.x64      =EE470\r\nbRemoteConnAllowed.x64=EE474\r\nbMultimonAllowed.x64  =EE478\r\nulMaxDebugSessions.x64=EE47C\r\nbFUSEnabled.x64       =EE480\r\n\r\n[10.0.14986.1000-SLInit]\r\nbInitialized.x86      =C5F68\r\nbServerSku.x86        =C5F6C\r\nlMaxUserSessions.x86  =C5F70\r\nbAppServerAllowed.x86 =C5F74\r\nbRemoteConnAllowed.x86=C5F78\r\nbMultimonAllowed.x86  =C5F7C\r\nulMaxDebugSessions.x86=C5F80\r\nbFUSEnabled.x86       =C5F84\r\n\r\nbServerSku.x64        =EE3C0\r\nlMaxUserSessions.x64  =EE3C4\r\nbAppServerAllowed.x64 =EE3C8\r\nbInitialized.x64      =EE470\r\nbRemoteConnAllowed.x64=EE474\r\nbMultimonAllowed.x64  =EE478\r\nulMaxDebugSessions.x64=EE47C\r\nbFUSEnabled.x64       =EE480\r\n\r\n[10.0.14997.1001-SLInit]\r\nbServerSku.x64        =F0408\r\nlMaxUserSessions.x64  =F040C\r\nbAppServerAllowed.x64 =F0410\r\nbInitialized.x64      =F0480\r\nbRemoteConnAllowed.x64=F0484\r\nbMultimonAllowed.x64  =F0488\r\nulMaxDebugSessions.x64=F048C\r\nbFUSEnabled.x64       =F0490\r\n\r\n[10.0.15002.1001-SLInit]\r\nbInitialized.x86      =C6F74\r\nbServerSku.x86        =C6F78\r\nlMaxUserSessions.x86  =C6F7C\r\nbAppServerAllowed.x86 =C6F80\r\nbRemoteConnAllowed.x86=C6F84\r\nbMultimonAllowed.x86  =C6F88\r\nulMaxDebugSessions.x86=C6F8C\r\nbFUSEnabled.x86       =C6F90\r\n\r\nbServerSku.x64        =F0408\r\nlMaxUserSessions.x64  =F040C\r\nbAppServerAllowed.x64 =F0410\r\nbInitialized.x64      =F0480\r\nbRemoteConnAllowed.x64=F0484\r\nbMultimonAllowed.x64  =F0488\r\nulMaxDebugSessions.x64=F048C\r\nbFUSEnabled.x64       =F0490\r\n\r\n[10.0.15007.1000-SLInit]\r\nbInitialized.x86      =C6F74\r\nbServerSku.x86        =C6F78\r\nlMaxUserSessions.x86  =C6F7C\r\nbAppServerAllowed.x86 =C6F80\r\nbRemoteConnAllowed.x86=C6F84\r\nbMultimonAllowed.x86  =C6F88\r\nulMaxDebugSessions.x86=C6F8C\r\nbFUSEnabled.x86       =C6F90\r\n\r\nbServerSku.x64        =F0408\r\nlMaxUserSessions.x64  =F040C\r\nbAppServerAllowed.x64 =F0410\r\nbInitialized.x64      =F0480\r\nbRemoteConnAllowed.x64=F0484\r\nbMultimonAllowed.x64  =F0488\r\nulMaxDebugSessions.x64=F048C\r\nbFUSEnabled.x64       =F0490\r\n\r\n[10.0.15014.1000-SLInit]\r\nbInitialized.x86      =C6F74\r\nbServerSku.x86        =C6F78\r\nlMaxUserSessions.x86  =C6F7C\r\nbAppServerAllowed.x86 =C6F80\r\nbRemoteConnAllowed.x86=C6F84\r\nbMultimonAllowed.x86  =C6F88\r\nulMaxDebugSessions.x86=C6F8C\r\nbFUSEnabled.x86       =C6F90\r\n\r\nbServerSku.x64        =F0408\r\nlMaxUserSessions.x64  =F040C\r\nbAppServerAllowed.x64 =F0410\r\nbInitialized.x64      =F0480\r\nbRemoteConnAllowed.x64=F0484\r\nbMultimonAllowed.x64  =F0488\r\nulMaxDebugSessions.x64=F048C\r\nbFUSEnabled.x64       =F0490\r\n\r\n[10.0.15019.1000-SLInit]\r\nbInitialized.x86      =C5F68\r\nbServerSku.x86        =C5F6C\r\nlMaxUserSessions.x86  =C5F70\r\nbAppServerAllowed.x86 =C5F74\r\nbRemoteConnAllowed.x86=C5F78\r\nbMultimonAllowed.x86  =C5F7C\r\nulMaxDebugSessions.x86=C5F80\r\nbFUSEnabled.x86       =C5F84\r\n\r\nbServerSku.x64        =ECBDC\r\nlMaxUserSessions.x64  =ECBE0\r\nbAppServerAllowed.x64 =ECBE4\r\nbInitialized.x64      =F0490\r\nbRemoteConnAllowed.x64=F0494\r\nbMultimonAllowed.x64  =F0498\r\nulMaxDebugSessions.x64=F049C\r\nbFUSEnabled.x64       =F04A0\r\n\r\n[10.0.15025.1000-SLInit]\r\nbServerSku.x64        =EE3E0\r\nlMaxUserSessions.x64  =EE3E4\r\nbAppServerAllowed.x64 =EE3E8\r\nbInitialized.x64      =EF488\r\nbRemoteConnAllowed.x64=EF48C\r\nbMultimonAllowed.x64  =EF490\r\nulMaxDebugSessions.x64=EF494\r\nbFUSEnabled.x64       =EF498\r\n\r\n[10.0.15031.0-SLInit]\r\nbInitialized.x86      =C2F6C\r\nbServerSku.x86        =C2F70\r\nlMaxUserSessions.x86  =C2F74\r\nbAppServerAllowed.x86 =C2F78\r\nbRemoteConnAllowed.x86=C2F7C\r\nbMultimonAllowed.x86  =C2F80\r\nulMaxDebugSessions.x86=C2F84\r\nbFUSEnabled.x86       =C2F88\r\n\r\nbServerSku.x64        =E93E0\r\nlMaxUserSessions.x64  =E93E4\r\nbAppServerAllowed.x64 =E93E8\r\nbInitialized.x64      =EA488\r\nbRemoteConnAllowed.x64=EA48C\r\nbMultimonAllowed.x64  =EA490\r\nulMaxDebugSessions.x64=EA494\r\nbFUSEnabled.x64       =EA498\r\n\r\n[10.0.15042.0-SLInit]\r\nbInitialized.x86      =C2F6C\r\nbServerSku.x86        =C2F70\r\nlMaxUserSessions.x86  =C2F74\r\nbAppServerAllowed.x86 =C2F78\r\nbRemoteConnAllowed.x86=C2F7C\r\nbMultimonAllowed.x86  =C2F80\r\nulMaxDebugSessions.x86=C2F84\r\nbFUSEnabled.x86       =C2F88\r\n\r\nbServerSku.x64        =E93E0\r\nlMaxUserSessions.x64  =E93E4\r\nbAppServerAllowed.x64 =E93E8\r\nbInitialized.x64      =EA488\r\nbRemoteConnAllowed.x64=EA48C\r\nbMultimonAllowed.x64  =EA490\r\nulMaxDebugSessions.x64=EA494\r\nbFUSEnabled.x64       =EA498\r\n\r\n[10.0.15046.0-SLInit]\r\nbInitialized.x86      =C4F18\r\nbServerSku.x86        =C4F1C\r\nlMaxUserSessions.x86  =C4F20\r\nbAppServerAllowed.x86 =C4F24\r\nbRemoteConnAllowed.x86=C4F28\r\nulMaxDebugSessions.x86=C4F2C\r\nbMultimonAllowed.x86  =C5010\r\nbFUSEnabled.x86       =C5014\r\n\r\nbInitialized.x64      =EB468\r\nbRemoteConnAllowed.x64=EB46C\r\nbMultimonAllowed.x64  =EB470\r\nulMaxDebugSessions.x64=EB474\r\nbFUSEnabled.x64       =EB478\r\nbServerSku.x64        =EB484\r\nlMaxUserSessions.x64  =EB488\r\nbAppServerAllowed.x64 =EB48C\r\n\r\n[10.0.15048.0-SLInit]\r\nbInitialized.x86      =C4F18\r\nbServerSku.x86        =C4F1C\r\nlMaxUserSessions.x86  =C4F20\r\nbAppServerAllowed.x86 =C4F24\r\nbRemoteConnAllowed.x86=C4F28\r\nulMaxDebugSessions.x86=C4F2C\r\nbMultimonAllowed.x86  =C5010\r\nbFUSEnabled.x86       =C5014\r\n\r\nbInitialized.x64      =EB468\r\nbRemoteConnAllowed.x64=EB46C\r\nbMultimonAllowed.x64  =EB470\r\nulMaxDebugSessions.x64=EB474\r\nbFUSEnabled.x64       =EB478\r\nbServerSku.x64        =EB484\r\nlMaxUserSessions.x64  =EB488\r\nbAppServerAllowed.x64 =EB48C\r\n\r\n[10.0.15055.0-SLInit]\r\nbInitialized.x86      =C2F70\r\nbServerSku.x86        =C2F74\r\nlMaxUserSessions.x86  =C2F78\r\nbAppServerAllowed.x86 =C2F7C\r\nbRemoteConnAllowed.x86=C2F80\r\nbMultimonAllowed.x86  =C2F84\r\nulMaxDebugSessions.x86=C2F88\r\nbFUSEnabled.x86       =C2F8C\r\n\r\nbServerSku.x64        =E83D8\r\nlMaxUserSessions.x64  =E83DC\r\nbAppServerAllowed.x64 =E83E0\r\nbInitialized.x64      =E9490\r\nbRemoteConnAllowed.x64=E9494\r\nbMultimonAllowed.x64  =E9498\r\nulMaxDebugSessions.x64=E949C\r\nbFUSEnabled.x64       =E94A0\r\n\r\n[10.0.15058.0-SLInit]\r\nbInitialized.x86      =C2F70\r\nbServerSku.x86        =C2F74\r\nlMaxUserSessions.x86  =C2F78\r\nbAppServerAllowed.x86 =C2F7C\r\nbRemoteConnAllowed.x86=C2F80\r\nbMultimonAllowed.x86  =C2F84\r\nulMaxDebugSessions.x86=C2F88\r\nbFUSEnabled.x86       =C2F8C\r\n\r\nbInitialized.x64      =E9468\r\nbRemoteConnAllowed.x64=E946C\r\nbMultimonAllowed.x64  =E9470\r\nulMaxDebugSessions.x64=E9474\r\nbFUSEnabled.x64       =E9478\r\nbServerSku.x64        =E9484\r\nlMaxUserSessions.x64  =E9488\r\nbAppServerAllowed.x64 =E948C\r\n\r\n[10.0.15061.0-SLInit]\r\nbInitialized.x86      =C2F70\r\nbServerSku.x86        =C2F74\r\nlMaxUserSessions.x86  =C2F78\r\nbAppServerAllowed.x86 =C2F7C\r\nbRemoteConnAllowed.x86=C2F80\r\nbMultimonAllowed.x86  =C2F84\r\nulMaxDebugSessions.x86=C2F88\r\nbFUSEnabled.x86       =C2F8C\r\n\r\nbInitialized.x64      =E9468\r\nbRemoteConnAllowed.x64=E946C\r\nbMultimonAllowed.x64  =E9470\r\nulMaxDebugSessions.x64=E9474\r\nbFUSEnabled.x64       =E9478\r\nbServerSku.x64        =E9484\r\nlMaxUserSessions.x64  =E9488\r\nbAppServerAllowed.x64 =E948C\r\n\r\n[10.0.15063.0-SLInit]\r\nbInitialized.x86      =C2F70\r\nbServerSku.x86        =C2F74\r\nlMaxUserSessions.x86  =C2F78\r\nbAppServerAllowed.x86 =C2F7C\r\nbRemoteConnAllowed.x86=C2F80\r\nbMultimonAllowed.x86  =C2F84\r\nulMaxDebugSessions.x86=C2F88\r\nbFUSEnabled.x86       =C2F8C\r\n\r\nbInitialized.x64      =E9468\r\nbRemoteConnAllowed.x64=E946C\r\nbMultimonAllowed.x64  =E9470\r\nulMaxDebugSessions.x64=E9474\r\nbFUSEnabled.x64       =E9478\r\nbServerSku.x64        =E9484\r\nlMaxUserSessions.x64  =E9488\r\nbAppServerAllowed.x64 =E948C\r\n\r\n[10.0.15063.296-SLInit]\r\nbInitialized.x86      =C2F70\r\nbServerSku.x86        =C2F74\r\nlMaxUserSessions.x86  =C2F78\r\nbAppServerAllowed.x86 =C2F7C\r\nbRemoteConnAllowed.x86=C2F80\r\nbMultimonAllowed.x86  =C2F84\r\nulMaxDebugSessions.x86=C2F88\r\nbFUSEnabled.x86       =C2F8C\r\n\r\nbInitialized.x64      =E9468\r\nbRemoteConnAllowed.x64=E946C\r\nbMultimonAllowed.x64  =E9470\r\nulMaxDebugSessions.x64=E9474\r\nbFUSEnabled.x64       =E9478\r\nbServerSku.x64        =E9484\r\nlMaxUserSessions.x64  =E9488\r\nbAppServerAllowed.x64 =E948C\r\n\r\n[10.0.15063.994-SLInit]\r\nbInitialized.x64      =E9468\r\nbRemoteConnAllowed.x64=E946C\r\nbMultimonAllowed.x64  =E9470\r\nulMaxDebugSessions.x64=E9474\r\nbFUSEnabled.x64       =E9478\r\nbServerSku.x64        =E9484\r\nlMaxUserSessions.x64  =E9488\r\nbAppServerAllowed.x64 =E948C\r\n\r\n[10.0.15063.1155-SLInit]\r\nbInitialized.x64      =E9468\r\nbRemoteConnAllowed.x64=E946C\r\nbMultimonAllowed.x64  =E9470\r\nulMaxDebugSessions.x64=E9474\r\nbFUSEnabled.x64       =E9478\r\nbServerSku.x64        =E9484\r\nlMaxUserSessions.x64  =E9488\r\nbAppServerAllowed.x64 =E948C\r\n\r\n[10.0.16179.1000-SLInit]\r\nbInitialized.x86      =C7F6C\r\nbServerSku.x86        =C7F70\r\nlMaxUserSessions.x86  =C7F74\r\nbAppServerAllowed.x86 =C7F78\r\nbRemoteConnAllowed.x86=C7F7C\r\nbMultimonAllowed.x86  =C7F80\r\nulMaxDebugSessions.x86=C7F84\r\nbFUSEnabled.x86       =C7F88\r\n\r\nbServerSku.x64        =E83D8\r\nlMaxUserSessions.x64  =E83DC\r\nbAppServerAllowed.x64 =E83E0\r\nbInitialized.x64      =E9490\r\nbRemoteConnAllowed.x64=E9494\r\nbMultimonAllowed.x64  =E9498\r\nulMaxDebugSessions.x64=E949C\r\nbFUSEnabled.x64       =E94A0\r\n\r\n[10.0.16184.1001-SLInit]\r\nbInitialized.x86      =C7F6C\r\nbServerSku.x86        =C7F70\r\nlMaxUserSessions.x86  =C7F74\r\nbAppServerAllowed.x86 =C7F78\r\nbRemoteConnAllowed.x86=C7F7C\r\nbMultimonAllowed.x86  =C7F80\r\nulMaxDebugSessions.x86=C7F84\r\nbFUSEnabled.x86       =C7F88\r\n\r\nbServerSku.x64        =E83D8\r\nlMaxUserSessions.x64  =E83DC\r\nbAppServerAllowed.x64 =E83E0\r\nbInitialized.x64      =E9490\r\nbRemoteConnAllowed.x64=E9494\r\nbMultimonAllowed.x64  =E9498\r\nulMaxDebugSessions.x64=E949C\r\nbFUSEnabled.x64       =E94A0\r\n\r\n[10.0.16199.1000-SLInit]\r\nbInitialized.x86      =C8F74\r\nbServerSku.x86        =C8F78\r\nlMaxUserSessions.x86  =C8F7C\r\nbAppServerAllowed.x86 =C8F80\r\nbRemoteConnAllowed.x86=C8F84\r\nbMultimonAllowed.x86  =C8F88\r\nulMaxDebugSessions.x86=C8F8C\r\nbFUSEnabled.x86       =C8F90\r\n\r\nbServerSku.x64        =E83E8\r\nlMaxUserSessions.x64  =E83EC\r\nbAppServerAllowed.x64 =E83F0\r\nbInitialized.x64      =E94A0\r\nbRemoteConnAllowed.x64=E94A4\r\nbMultimonAllowed.x64  =E94A8\r\nulMaxDebugSessions.x64=E94AC\r\nbFUSEnabled.x64       =E94B0\r\n\r\n[10.0.16215.1000-SLInit]\r\nbInitialized.x86      =C5F78\r\nbServerSku.x86        =C5F7C\r\nlMaxUserSessions.x86  =C5F80\r\nbAppServerAllowed.x86 =C5F84\r\nbRemoteConnAllowed.x86=C5F88\r\nbMultimonAllowed.x86  =C5F8C\r\nulMaxDebugSessions.x86=C5F90\r\nbFUSEnabled.x86       =C5F94\r\n\r\nbServerSku.x64        =EA3E8\r\nlMaxUserSessions.x64  =EA3EC\r\nbAppServerAllowed.x64 =EA3F0\r\nbInitialized.x64      =EB4A0\r\nbRemoteConnAllowed.x64=EB4A4\r\nbMultimonAllowed.x64  =EB4A8\r\nulMaxDebugSessions.x64=EB4AC\r\nbFUSEnabled.x64       =EB4B0\r\n\r\n[10.0.16232.1000-SLInit]\r\nbInitialized.x86      =C5F78\r\nbServerSku.x86        =C5F7C\r\nlMaxUserSessions.x86  =C5F80\r\nbAppServerAllowed.x86 =C5F84\r\nbRemoteConnAllowed.x86=C5F88\r\nbMultimonAllowed.x86  =C5F8C\r\nulMaxDebugSessions.x86=C5F90\r\nbFUSEnabled.x86       =C5F94\r\n\r\nbServerSku.x64        =EA3E8\r\nlMaxUserSessions.x64  =EA3EC\r\nbAppServerAllowed.x64 =EA3F0\r\nbInitialized.x64      =EB4A0\r\nbRemoteConnAllowed.x64=EB4A4\r\nbMultimonAllowed.x64  =EB4A8\r\nulMaxDebugSessions.x64=EB4AC\r\nbFUSEnabled.x64       =EB4B0\r\n\r\n[10.0.16237.1001-SLInit]\r\nbInitialized.x86      =C5F78\r\nbServerSku.x86        =C5F7C\r\nlMaxUserSessions.x86  =C5F80\r\nbAppServerAllowed.x86 =C5F84\r\nbRemoteConnAllowed.x86=C5F88\r\nbMultimonAllowed.x86  =C5F8C\r\nulMaxDebugSessions.x86=C5F90\r\nbFUSEnabled.x86       =C5F94\r\n\r\nbServerSku.x64        =EB3EC\r\nlMaxUserSessions.x64  =EB3F0\r\nbAppServerAllowed.x64 =EB3F4\r\nbInitialized.x64      =EC4A0\r\nbRemoteConnAllowed.x64=EC4A4\r\nbMultimonAllowed.x64  =EC4A8\r\nulMaxDebugSessions.x64=EC4AC\r\nbFUSEnabled.x64       =EC4B0\r\n\r\n[10.0.16241.1001-SLInit]\r\nbInitialized.x86      =C5F78\r\nbServerSku.x86        =C5F7C\r\nlMaxUserSessions.x86  =C5F80\r\nbAppServerAllowed.x86 =C5F84\r\nbRemoteConnAllowed.x86=C5F88\r\nbMultimonAllowed.x86  =C5F8C\r\nulMaxDebugSessions.x86=C5F90\r\nbFUSEnabled.x86       =C5F94\r\n\r\nbServerSku.x64        =EB3EC\r\nlMaxUserSessions.x64  =EB3F0\r\nbAppServerAllowed.x64 =EB3F4\r\nbInitialized.x64      =EC4A0\r\nbRemoteConnAllowed.x64=EC4A4\r\nbMultimonAllowed.x64  =EC4A8\r\nulMaxDebugSessions.x64=EC4AC\r\nbFUSEnabled.x64       =EC4B0\r\n\r\n[10.0.16251.0-SLInit]\r\nbInitialized.x86      =C9F78\r\nbServerSku.x86        =C9F7C\r\nlMaxUserSessions.x86  =C9F80\r\nbAppServerAllowed.x86 =C9F84\r\nbRemoteConnAllowed.x86=C9F88\r\nbMultimonAllowed.x86  =C9F8C\r\nulMaxDebugSessions.x86=C9F90\r\nbFUSEnabled.x86       =C9F94\r\n\r\nbServerSku.x64        =EB3EC\r\nlMaxUserSessions.x64  =EB3F0\r\nbAppServerAllowed.x64 =EB3F4\r\nbInitialized.x64      =EC4A0\r\nbRemoteConnAllowed.x64=EC4A4\r\nbMultimonAllowed.x64  =EC4A8\r\nulMaxDebugSessions.x64=EC4AC\r\nbFUSEnabled.x64       =EC4B0\r\n\r\n[10.0.16251.1000-SLInit]\r\nbInitialized.x86      =C9F78\r\nbServerSku.x86        =C9F7C\r\nlMaxUserSessions.x86  =C9F80\r\nbAppServerAllowed.x86 =C9F84\r\nbRemoteConnAllowed.x86=C9F88\r\nbMultimonAllowed.x86  =C9F8C\r\nulMaxDebugSessions.x86=C9F90\r\nbFUSEnabled.x86       =C9F94\r\n\r\nbServerSku.x64        =EB3EC\r\nlMaxUserSessions.x64  =EB3F0\r\nbAppServerAllowed.x64 =EB3F4\r\nbInitialized.x64      =EC4A0\r\nbRemoteConnAllowed.x64=EC4A4\r\nbMultimonAllowed.x64  =EC4A8\r\nulMaxDebugSessions.x64=EC4AC\r\nbFUSEnabled.x64       =EC4B0\r\n\r\n[10.0.16257.1-SLInit]\r\nbInitialized.x86      =C9F7C\r\nbServerSku.x86        =C9F80\r\nlMaxUserSessions.x86  =C9F84\r\nbAppServerAllowed.x86 =C9F88\r\nbRemoteConnAllowed.x86=C9F8C\r\nbMultimonAllowed.x86  =C9F90\r\nulMaxDebugSessions.x86=C9F94\r\nbFUSEnabled.x86       =C9F98\r\n\r\nbServerSku.x64        =EB3F0\r\nlMaxUserSessions.x64  =EB3F4\r\nbAppServerAllowed.x64 =EB3F8\r\nbInitialized.x64      =EC4A0\r\nbRemoteConnAllowed.x64=EC4A4\r\nbMultimonAllowed.x64  =EC4A8\r\nulMaxDebugSessions.x64=EC4AC\r\nbFUSEnabled.x64       =EC4B0\r\n\r\n[10.0.16257.1000-SLInit]\r\nbInitialized.x86      =C9F7C\r\nbServerSku.x86        =C9F80\r\nlMaxUserSessions.x86  =C9F84\r\nbAppServerAllowed.x86 =C9F88\r\nbRemoteConnAllowed.x86=C9F8C\r\nbMultimonAllowed.x86  =C9F90\r\nulMaxDebugSessions.x86=C9F94\r\nbFUSEnabled.x86       =C9F98\r\n\r\nbServerSku.x64        =EB3F0\r\nlMaxUserSessions.x64  =EB3F4\r\nbAppServerAllowed.x64 =EB3F8\r\nbInitialized.x64      =EC4A0\r\nbRemoteConnAllowed.x64=EC4A4\r\nbMultimonAllowed.x64  =EC4A8\r\nulMaxDebugSessions.x64=EC4AC\r\nbFUSEnabled.x64       =EC4B0\r\n\r\n[10.0.16273.1000-SLInit]\r\nbInitialized.x86      =C9F7C\r\nbServerSku.x86        =C9F80\r\nlMaxUserSessions.x86  =C9F84\r\nbAppServerAllowed.x86 =C9F88\r\nbRemoteConnAllowed.x86=C9F8C\r\nbMultimonAllowed.x86  =C9F90\r\nulMaxDebugSessions.x86=C9F94\r\nbFUSEnabled.x86       =C9F98\r\n\r\nbServerSku.x64        =EB3F0\r\nlMaxUserSessions.x64  =EB3F4\r\nbAppServerAllowed.x64 =EB3F8\r\nbInitialized.x64      =EC4A0\r\nbRemoteConnAllowed.x64=EC4A4\r\nbMultimonAllowed.x64  =EC4A8\r\nulMaxDebugSessions.x64=EC4AC\r\nbFUSEnabled.x64       =EC4B0\r\n\r\n[10.0.16275.1000-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16278.1000-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16281.1000-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16288.1-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16291.0-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16294.1-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16296.0-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16299.0-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16299.15-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16353.1000-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.16362.1000-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.17004.1000-SLInit]\r\nbInitialized.x86      =C6F7C\r\nbServerSku.x86        =C6F80\r\nlMaxUserSessions.x86  =C6F84\r\nbAppServerAllowed.x86 =C6F88\r\nbRemoteConnAllowed.x86=C6F8C\r\nbMultimonAllowed.x86  =C6F90\r\nulMaxDebugSessions.x86=C6F94\r\nbFUSEnabled.x86       =C6F98\r\n\r\nbServerSku.x64        =ED3E8\r\nlMaxUserSessions.x64  =ED3EC\r\nbAppServerAllowed.x64 =ED3F0\r\nbInitialized.x64      =EE4A0\r\nbRemoteConnAllowed.x64=EE4A4\r\nbMultimonAllowed.x64  =EE4A8\r\nulMaxDebugSessions.x64=EE4AC\r\nbFUSEnabled.x64       =EE4B0\r\n\r\n[10.0.17017.1000-SLInit]\r\nbInitialized.x86      =C9EB8\r\nbServerSku.x86        =C9EBC\r\nlMaxUserSessions.x86  =C9EC0\r\nbAppServerAllowed.x86 =C9EC4\r\nbRemoteConnAllowed.x86=C9EC8\r\nbMultimonAllowed.x86  =C9ECC\r\nulMaxDebugSessions.x86=C9ED0\r\nbFUSEnabled.x86       =C9ED4\r\n\r\nbServerSku.x64        =EC2E8\r\nlMaxUserSessions.x64  =EC2EC\r\nbAppServerAllowed.x64 =EC2F0\r\nbInitialized.x64      =ED3A0\r\nbRemoteConnAllowed.x64=ED3A4\r\nbMultimonAllowed.x64  =ED3A8\r\nulMaxDebugSessions.x64=ED3AC\r\nbFUSEnabled.x64       =ED3B0\r\n\r\n[10.0.17025.1000-SLInit]\r\nbInitialized.x86      =C9EB8\r\nbServerSku.x86        =C9EBC\r\nlMaxUserSessions.x86  =C9EC0\r\nbAppServerAllowed.x86 =C9EC4\r\nbRemoteConnAllowed.x86=C9EC8\r\nbMultimonAllowed.x86  =C9ECC\r\nulMaxDebugSessions.x86=C9ED0\r\nbFUSEnabled.x86       =C9ED4\r\n\r\nbServerSku.x64        =EC2E8\r\nlMaxUserSessions.x64  =EC2EC\r\nbAppServerAllowed.x64 =EC2F0\r\nbInitialized.x64      =ED3A0\r\nbRemoteConnAllowed.x64=ED3A4\r\nbMultimonAllowed.x64  =ED3A8\r\nulMaxDebugSessions.x64=ED3AC\r\nbFUSEnabled.x64       =ED3B0\r\n\r\n[10.0.17035.1000-SLInit]\r\nbInitialized.x86      =C9ED8\r\nbServerSku.x86        =C9EDC\r\nlMaxUserSessions.x86  =C9EE0\r\nbAppServerAllowed.x86 =C9EE4\r\nbRemoteConnAllowed.x86=C9EE8\r\nbMultimonAllowed.x86  =C9EEC\r\nulMaxDebugSessions.x86=C9EF0\r\nbFUSEnabled.x86       =C9EF4\r\n\r\nbServerSku.x64        =EC2E8\r\nlMaxUserSessions.x64  =EC2EC\r\nbAppServerAllowed.x64 =EC2F0\r\nbInitialized.x64      =ED3A0\r\nbRemoteConnAllowed.x64=ED3A4\r\nbMultimonAllowed.x64  =ED3A8\r\nulMaxDebugSessions.x64=ED3AC\r\nbFUSEnabled.x64       =ED3B0\r\n\r\n[10.0.17046.1000-SLInit]\r\nbInitialized.x86      =C9ED8\r\nbServerSku.x86        =C9EDC\r\nlMaxUserSessions.x86  =C9EE0\r\nbAppServerAllowed.x86 =C9EE4\r\nbRemoteConnAllowed.x86=C9EE8\r\nbMultimonAllowed.x86  =C9EEC\r\nulMaxDebugSessions.x86=C9EF0\r\nbFUSEnabled.x86       =C9EF4\r\n\r\nbServerSku.x64        =EC2E8\r\nlMaxUserSessions.x64  =EC2EC\r\nbAppServerAllowed.x64 =EC2F0\r\nbInitialized.x64      =ED3A0\r\nbRemoteConnAllowed.x64=ED3A4\r\nbMultimonAllowed.x64  =ED3A8\r\nulMaxDebugSessions.x64=ED3AC\r\nbFUSEnabled.x64       =ED3B0\r\n\r\n[10.0.17063.1000-SLInit]\r\nbInitialized.x86      =CBF38\r\nbServerSku.x86        =CBF3C\r\nlMaxUserSessions.x86  =CBF40\r\nbAppServerAllowed.x86 =CBF44\r\nbRemoteConnAllowed.x86=CBF48\r\nbMultimonAllowed.x86  =CBF4C\r\nulMaxDebugSessions.x86=CBF50\r\nbFUSEnabled.x86       =CBF54\r\n\r\nbServerSku.x64        =F1378\r\nlMaxUserSessions.x64  =F137C\r\nbAppServerAllowed.x64 =F1380\r\nbInitialized.x64      =F2430\r\nbRemoteConnAllowed.x64=F2434\r\nbMultimonAllowed.x64  =F2438\r\nulMaxDebugSessions.x64=F243C\r\nbFUSEnabled.x64       =F2440\r\n\r\n[10.0.17115.1-SLInit]\r\nbInitialized.x86      =CBF38\r\nbServerSku.x86        =CBF3C\r\nlMaxUserSessions.x86  =CBF40\r\nbAppServerAllowed.x86 =CBF44\r\nbRemoteConnAllowed.x86=CBF48\r\nbMultimonAllowed.x86  =CBF4C\r\nulMaxDebugSessions.x86=CBF50\r\nbFUSEnabled.x86       =CBF54\r\n\r\nbServerSku.x64        =F1378\r\nlMaxUserSessions.x64  =F137C\r\nbAppServerAllowed.x64 =F1380\r\nbInitialized.x64      =F2430\r\nbRemoteConnAllowed.x64=F2434\r\nbMultimonAllowed.x64  =F2438\r\nulMaxDebugSessions.x64=F243C\r\nbFUSEnabled.x64       =F2440\r\n\r\n[10.0.17128.1-SLInit]\r\nbInitialized.x86      =CBF38\r\nbServerSku.x86        =CBF3C\r\nlMaxUserSessions.x86  =CBF40\r\nbAppServerAllowed.x86 =CBF44\r\nbRemoteConnAllowed.x86=CBF48\r\nbMultimonAllowed.x86  =CBF4C\r\nulMaxDebugSessions.x86=CBF50\r\nbFUSEnabled.x86       =CBF54\r\n\r\nbServerSku.x64        =F1378\r\nlMaxUserSessions.x64  =F137C\r\nbAppServerAllowed.x64 =F1380\r\nbInitialized.x64      =F2430\r\nbRemoteConnAllowed.x64=F2434\r\nbMultimonAllowed.x64  =F2438\r\nulMaxDebugSessions.x64=F243C\r\nbFUSEnabled.x64       =F2440\r\n\r\n[10.0.17133.1-SLInit]\r\nbInitialized.x86      =CBF38\r\nbServerSku.x86        =CBF3C\r\nlMaxUserSessions.x86  =CBF40\r\nbAppServerAllowed.x86 =CBF44\r\nbRemoteConnAllowed.x86=CBF48\r\nbMultimonAllowed.x86  =CBF4C\r\nulMaxDebugSessions.x86=CBF50\r\nbFUSEnabled.x86       =CBF54\r\n\r\nbServerSku.x64        =F1378\r\nlMaxUserSessions.x64  =F137C\r\nbAppServerAllowed.x64 =F1380\r\nbInitialized.x64      =F2430\r\nbRemoteConnAllowed.x64=F2434\r\nbMultimonAllowed.x64  =F2438\r\nulMaxDebugSessions.x64=F243C\r\nbFUSEnabled.x64       =F2440\r\n\r\n[10.0.17134.1-SLInit]\r\nbInitialized.x86      =CBF38\r\nbServerSku.x86        =CBF3C\r\nlMaxUserSessions.x86  =CBF40\r\nbAppServerAllowed.x86 =CBF44\r\nbRemoteConnAllowed.x86=CBF48\r\nbMultimonAllowed.x86  =CBF4C\r\nulMaxDebugSessions.x86=CBF50\r\nbFUSEnabled.x86       =CBF54\r\n\r\nbServerSku.x64        =F1378\r\nlMaxUserSessions.x64  =F137C\r\nbAppServerAllowed.x64 =F1380\r\nbInitialized.x64      =F2430\r\nbRemoteConnAllowed.x64=F2434\r\nbMultimonAllowed.x64  =F2438\r\nulMaxDebugSessions.x64=F243C\r\nbFUSEnabled.x64       =F2440\r\n\r\n[10.0.17723.1000-SLInit]\r\nbInitialized.x64      =E9AB0\r\nbServerSku.x64        =E9AB4\r\nlMaxUserSessions.x64  =E9AB8\r\nbAppServerAllowed.x64 =E9AC0\r\nbRemoteConnAllowed.x64=E9AC4\r\nbMultimonAllowed.x64  =E9AC8\r\nulMaxDebugSessions.x64=E9ACC\r\nbFUSEnabled.x64       =E9AD0\r\n\r\n[10.0.17763.1-SLInit]\r\nbInitialized.x86      =CD798\r\nbServerSku.x86        =CD79C\r\nlMaxUserSessions.x86  =CD7A0\r\nbAppServerAllowed.x86 =CD7A8\r\nbRemoteConnAllowed.x86=CD7AC\r\nbMultimonAllowed.x86  =CD7B0\r\nulMaxDebugSessions.x86=CD7B4\r\nbFUSEnabled.x86       =CD7B8\r\n\r\nbInitialized.x64      =ECAB0\r\nbServerSku.x64        =ECAB4\r\nlMaxUserSessions.x64  =ECAB8\r\nbAppServerAllowed.x64 =ECAC0\r\nbRemoteConnAllowed.x64=ECAC4\r\nbMultimonAllowed.x64  =ECAC8\r\nulMaxDebugSessions.x64=ECACC\r\nbFUSEnabled.x64       =ECAD0\r\n"
  },
  {
    "path": "src-installer/RDPWInst.dpr",
    "content": "{\n  Copyright 2018 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n}\n\nprogram RDPWInst;\n\n{$APPTYPE CONSOLE}\n\n{$R resource.res}\n\nuses\n  SysUtils,\n  Windows,\n  Classes,\n  WinSvc,\n  Registry,\n  WinInet,\n  AccCtrl,\n  AclAPI;\n\nfunction EnumServicesStatusEx(\n  hSCManager: SC_HANDLE;\n  InfoLevel,\n  dwServiceType,\n  dwServiceState: DWORD;\n  lpServices: PByte;\n  cbBufSize: DWORD;\n  var pcbBytesNeeded,\n  lpServicesReturned,\n  lpResumeHandle: DWORD;\n  pszGroupName: PWideChar): BOOL; stdcall;\n  external advapi32 name 'EnumServicesStatusExW';\n\nfunction ConvertStringSidToSid(\n  StringSid: PWideChar;\n  var Sid: PSID): BOOL; stdcall;\n  external advapi32 name 'ConvertStringSidToSidW';\n\ntype\n  FILE_VERSION = record\n    Version: record case Boolean of\n      True: (dw: DWORD);\n      False: (w: record\n        Minor, Major: Word;\n      end;)\n    end;\n    Release, Build: Word;\n    bDebug, bPrerelease, bPrivate, bSpecial: Boolean;\n  end;\n  SERVICE_STATUS_PROCESS = packed record\n    dwServiceType,\n    dwCurrentState,\n    dwControlsAccepted,\n    dwWin32ExitCode,\n    dwServiceSpecificExitCode,\n    dwCheckPoint,\n    dwWaitHint,\n    dwProcessId,\n    dwServiceFlags: DWORD;\n  end;\n  PSERVICE_STATUS_PROCESS = ^SERVICE_STATUS_PROCESS;\n  ENUM_SERVICE_STATUS_PROCESS = packed record\n    lpServiceName,\n    lpDisplayName: PWideChar;\n    ServiceStatusProcess: SERVICE_STATUS_PROCESS;\n  end;\n  PENUM_SERVICE_STATUS_PROCESS = ^ENUM_SERVICE_STATUS_PROCESS;\n\nconst\n  SC_ENUM_PROCESS_INFO = 0;\n  TermService = 'TermService';\nvar\n  Installed: Boolean;\n  Online: Boolean;\n  WrapPath: String;\n  Arch: Byte;\n  OldWow64RedirectionValue: LongBool;\n\n  TermServicePath: String;\n  FV: FILE_VERSION;\n  TermServicePID: DWORD;\n  ShareSvc: Array of String;\n  sShareSvc: String;\n\nfunction SupportedArchitecture: Boolean;\nvar\n  SI: TSystemInfo;\nbegin\n  GetNativeSystemInfo(SI);\n  case SI.wProcessorArchitecture of\n    0:\n    begin\n      Arch := 32;\n      Result := True; // Intel x86\n    end;\n    6: Result := False; // Itanium-based x64\n    9: begin\n      Arch := 64;\n      Result := True; // Intel/AMD x64\n    end;\n    else Result := False;\n  end;\nend;\n\nfunction DisableWowRedirection: Boolean;\ntype\n  TFunc = function(var Wow64FsEnableRedirection: LongBool): LongBool; stdcall;\nvar\n  hModule: THandle;\n  Wow64DisableWow64FsRedirection: TFunc;\nbegin\n  Result := False;\n  hModule := GetModuleHandle(kernel32);\n  if hModule <> 0 then\n    Wow64DisableWow64FsRedirection := GetProcAddress(hModule, 'Wow64DisableWow64FsRedirection')\n  else\n    Exit;\n  if @Wow64DisableWow64FsRedirection <> nil then\n    Result := Wow64DisableWow64FsRedirection(OldWow64RedirectionValue);\nend;\n\nfunction RevertWowRedirection: Boolean;\ntype\n  TFunc = function(var Wow64RevertWow64FsRedirection: LongBool): LongBool; stdcall;\nvar\n  hModule: THandle;\n  Wow64RevertWow64FsRedirection: TFunc;\nbegin\n  Result := False;\n  hModule := GetModuleHandle(kernel32);\n  if hModule <> 0 then\n    Wow64RevertWow64FsRedirection := GetProcAddress(hModule, 'Wow64RevertWow64FsRedirection')\n  else\n    Exit;\n  if @Wow64RevertWow64FsRedirection <> nil then\n    Result := Wow64RevertWow64FsRedirection(OldWow64RedirectionValue);\nend;\n\nprocedure CheckInstall;\nvar\n  Code: DWORD;\n  TermServiceHost: String;\n  Reg: TRegistry;\nbegin\n  if Arch = 64 then\n    Reg := TRegistry.Create(KEY_WOW64_64KEY)\n  else\n    Reg := TRegistry.Create;\n  Reg.RootKey := HKEY_LOCAL_MACHINE;\n  if not Reg.OpenKeyReadOnly('\\SYSTEM\\CurrentControlSet\\Services\\TermService') then\n  begin\n    Reg.Free;\n    Code := GetLastError;\n    Writeln('[-] OpenKeyReadOnly error (code ', Code, ').');\n    Halt(Code);\n  end;\n  TermServiceHost := Reg.ReadString('ImagePath');\n  Reg.CloseKey;\n  if (Pos('svchost.exe', LowerCase(TermServiceHost)) = 0)\n  and (Pos('svchost -k', LowerCase(TermServiceHost)) = 0) then\n  begin\n    Reg.Free;\n    Writeln('[-] TermService is hosted in a custom application (BeTwin, etc.) - unsupported.');\n    Writeln('[*] ImagePath: \"', TermServiceHost, '\".');\n    Halt(ERROR_NOT_SUPPORTED);\n  end;\n  if not Reg.OpenKeyReadOnly('\\SYSTEM\\CurrentControlSet\\Services\\TermService\\Parameters') then\n  begin\n    Reg.Free;\n    Code := GetLastError;\n    Writeln('[-] OpenKeyReadOnly error (code ', Code, ').');\n    Halt(Code);\n  end;\n  TermServicePath := Reg.ReadString('ServiceDll');\n  Reg.CloseKey;\n  if (Pos('termsrv.dll', LowerCase(TermServicePath)) = 0)\n  and (Pos('rdpwrap.dll', LowerCase(TermServicePath)) = 0) then\n  begin\n    Reg.Free;\n    Writeln('[-] Another third-party TermService library is installed.');\n    Writeln('[*] ServiceDll: \"', TermServicePath, '\".');\n    Halt(ERROR_NOT_SUPPORTED);\n  end;\n  Reg.Free;\n\n  Installed := Pos('rdpwrap.dll', LowerCase(TermServicePath)) > 0;\nend;\n\nfunction SvcGetStart(SvcName: String): Integer;\nvar\n  hSC: SC_HANDLE;\n  hSvc: THandle;\n  Code: DWORD;\n  lpServiceConfig: PQueryServiceConfig;\n  Buf: Pointer;\n  cbBufSize, pcbBytesNeeded: Cardinal;\nbegin\n  Result := -1;\n  Writeln('[*] Checking ', SvcName, '...');\n  hSC := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT);\n  if hSC = 0 then\n  begin\n    Code := GetLastError;\n    Writeln('[-] OpenSCManager error (code ', Code, ').');\n    Exit;\n  end;\n\n  hSvc := OpenService(hSC, PWideChar(SvcName), SERVICE_QUERY_CONFIG);\n  if hSvc = 0 then\n  begin\n    CloseServiceHandle(hSC);\n    Code := GetLastError;\n    Writeln('[-] OpenService error (code ', Code, ').');\n    Exit;\n  end;\n\n  if QueryServiceConfig(hSvc, nil, 0, pcbBytesNeeded) then begin\n    Writeln('[-] QueryServiceConfig failed.');\n    Exit;\n  end;\n\n  cbBufSize := pcbBytesNeeded;\n  GetMem(Buf, cbBufSize);\n\n  if not QueryServiceConfig(hSvc, Buf, cbBufSize, pcbBytesNeeded) then begin\n    FreeMem(Buf, cbBufSize);\n    CloseServiceHandle(hSvc);\n    CloseServiceHandle(hSC);\n    Code := GetLastError;\n    Writeln('[-] QueryServiceConfig error (code ', Code, ').');\n    Exit;\n  end else begin\n    lpServiceConfig := Buf;\n    Result := Integer(lpServiceConfig^.dwStartType);\n  end;\n  FreeMem(Buf, cbBufSize);\n  CloseServiceHandle(hSvc);\n  CloseServiceHandle(hSC);\nend;\n\nprocedure SvcConfigStart(SvcName: String; dwStartType: Cardinal);\nvar\n  hSC: SC_HANDLE;\n  hSvc: THandle;\n  Code: DWORD;\nbegin\n  Writeln('[*] Configuring ', SvcName, '...');\n  hSC := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT);\n  if hSC = 0 then\n  begin\n    Code := GetLastError;\n    Writeln('[-] OpenSCManager error (code ', Code, ').');\n    Exit;\n  end;\n\n  hSvc := OpenService(hSC, PWideChar(SvcName), SERVICE_CHANGE_CONFIG);\n  if hSvc = 0 then\n  begin\n    CloseServiceHandle(hSC);\n    Code := GetLastError;\n    Writeln('[-] OpenService error (code ', Code, ').');\n    Exit;\n  end;\n\n  if not ChangeServiceConfig(hSvc, SERVICE_NO_CHANGE, dwStartType,\n  SERVICE_NO_CHANGE, nil, nil, nil, nil, nil, nil, nil) then begin\n    CloseServiceHandle(hSvc);\n    CloseServiceHandle(hSC);\n    Code := GetLastError;\n    Writeln('[-] ChangeServiceConfig error (code ', Code, ').');\n    Exit;\n  end;\n  CloseServiceHandle(hSvc);\n  CloseServiceHandle(hSC);\nend;\n\nprocedure SvcStart(SvcName: String);\nvar\n  hSC: SC_HANDLE;\n  hSvc: THandle;\n  Code: DWORD;\n  pch: PWideChar;\n  procedure ExitError(Func: String; ErrorCode: DWORD);\n  begin\n    if hSC > 0 then\n      CloseServiceHandle(hSC);\n    if hSvc > 0 then\n      CloseServiceHandle(hSvc);\n    Writeln('[-] ', Func, ' error (code ', ErrorCode, ').');\n  end;\nbegin\n  hSC := 0;\n  hSvc := 0;\n  Writeln('[*] Starting ', SvcName, '...');\n  hSC := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT);\n  if hSC = 0 then\n  begin\n    ExitError('OpenSCManager', GetLastError);\n    Exit;\n  end;\n\n  hSvc := OpenService(hSC, PWideChar(SvcName), SERVICE_START);\n  if hSvc = 0 then\n  begin\n    ExitError('OpenService', GetLastError);\n    Exit;\n  end;\n\n  pch := nil;\n  if not StartService(hSvc, 0, pch) then begin\n    Code := GetLastError;\n    if Code = 1056 then begin // Service already started\n      Sleep(2000);            // or SCM hasn't registered killed process\n      if not StartService(hSvc, 0, pch) then begin\n        ExitError('StartService', Code);\n        Exit;\n      end;\n    end else begin\n      ExitError('StartService', Code);\n      Exit;\n    end;\n  end;\n  CloseServiceHandle(hSvc);\n  CloseServiceHandle(hSC);\nend;\n\nprocedure CheckTermsrvProcess;\nlabel\n  back;\nvar\n  hSC: SC_HANDLE;\n  dwNeedBytes, dwReturnBytes, dwResumeHandle, Code: DWORD;\n  Svc: Array of ENUM_SERVICE_STATUS_PROCESS;\n  I: Integer;\n  Found, Started: Boolean;\n  TermServiceName: String;\nbegin\n  Started := False;\n  back:\n  hSC := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT or SC_MANAGER_ENUMERATE_SERVICE);\n  if hSC = 0 then\n  begin\n    Code := GetLastError;\n    Writeln('[-] OpenSCManager error (code ', Code, ').');\n    Halt(Code);\n  end;\n\n  dwResumeHandle := 0;\n\n  SetLength(Svc, 1489);\n  FillChar(Svc[0], sizeof(Svc[0])*Length(Svc), 0);\n  if not EnumServicesStatusEx(hSC, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL,\n  @Svc[0], sizeof(Svc[0])*Length(Svc), dwNeedBytes, dwReturnBytes, dwResumeHandle, nil) then begin\n    Code := GetLastError;\n    if Code <> ERROR_MORE_DATA then\n    begin\n      CloseServiceHandle(hSC);\n      Writeln('[-] EnumServicesStatusEx error (code ', Code, ').');\n      Halt(Code);\n    end\n    else\n    begin\n      SetLength(Svc, 5957);\n      FillChar(Svc[0], sizeof(Svc[0])*Length(Svc), 0);\n      if not EnumServicesStatusEx(hSC, SC_ENUM_PROCESS_INFO, SERVICE_WIN32, SERVICE_STATE_ALL,\n      @Svc[0], sizeof(Svc[0])*Length(Svc), dwNeedBytes, dwReturnBytes, dwResumeHandle, nil) then begin\n        CloseServiceHandle(hSC);\n        Code := GetLastError;\n        Writeln('[-] EnumServicesStatusEx error (code ', Code, ').');\n        Halt(Code);\n      end;\n    end;\n  end;\n  CloseServiceHandle(hSC);\n\n  Found := False;\n  for I := 0 to Length(Svc) - 1 do\n  begin\n    if Svc[I].lpServiceName = nil then\n      Break;\n    if LowerCase(Svc[I].lpServiceName) = LowerCase(TermService) then\n    begin\n      Found := True;\n      TermServiceName := Svc[I].lpServiceName;\n      TermServicePID := Svc[I].ServiceStatusProcess.dwProcessId;\n      Break;\n    end;\n  end;\n  if not Found then\n  begin\n    Writeln('[-] TermService not found.');\n    Halt(ERROR_SERVICE_DOES_NOT_EXIST);\n  end;\n  if TermServicePID = 0 then\n  begin\n    if Started then begin\n      Writeln('[-] Failed to set up TermService. Unknown error.');\n      Halt(ERROR_SERVICE_NOT_ACTIVE);\n    end;\n    SvcConfigStart(TermService, SERVICE_AUTO_START);\n    SvcStart(TermService);\n    Started := True;\n    goto back;\n  end\n  else\n    Writeln('[+] TermService found (pid ', TermServicePID, ').');\n\n  SetLength(ShareSvc, 0);\n  for I := 0 to Length(Svc) - 1 do\n  begin\n    if Svc[I].lpServiceName = nil then\n      Break;\n    if Svc[I].ServiceStatusProcess.dwProcessId = TermServicePID then\n      if Svc[I].lpServiceName <> TermServiceName then\n      begin\n        SetLength(ShareSvc, Length(ShareSvc)+1);\n        ShareSvc[Length(ShareSvc)-1] := Svc[I].lpServiceName;\n      end;\n  end;\n  sShareSvc := '';\n  for I := 0 to Length(ShareSvc) - 1 do\n    if sShareSvc = '' then\n      sShareSvc := ShareSvc[I]\n    else\n      sShareSvc := sShareSvc + ', ' + ShareSvc[I];\n  if sShareSvc <> '' then\n    Writeln('[*] Shared services found: ', sShareSvc)\n  else\n    Writeln('[*] No shared services found.');\nend;\n\nfunction AddPrivilege(SePriv: String): Boolean;\nvar\n  hToken: THandle;\n  SeNameValue: Int64;\n  tkp: TOKEN_PRIVILEGES;\n  ReturnLength: Cardinal;\n  ErrorCode: Cardinal;\nbegin\n  Result := False;\n  if not OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES\n  or TOKEN_QUERY, hToken) then begin\n    ErrorCode := GetLastError;\n    Writeln('[-] OpenProcessToken error (code ' + IntToStr(ErrorCode) + ').');\n    Exit;\n  end;\n  if not LookupPrivilegeValue(nil, PWideChar(SePriv), SeNameValue) then begin\n    ErrorCode := GetLastError;\n    Writeln('[-] LookupPrivilegeValue error (code ' + IntToStr(ErrorCode) + ').');\n    Exit;\n  end;\n  tkp.PrivilegeCount := 1;\n  tkp.Privileges[0].Luid := SeNameValue;\n  tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;\n  if not AdjustTokenPrivileges(hToken, False, tkp, SizeOf(tkp), tkp, ReturnLength) then begin\n    ErrorCode := GetLastError;\n    Writeln('[-] AdjustTokenPrivileges error (code ' + IntToStr(ErrorCode) + ').');\n    Exit;\n  end;\n  Result := True;\nend;\n\nprocedure KillProcess(PID: DWORD);\nvar\n  hProc: THandle;\n  Code: DWORD;\nbegin\n  hProc := OpenProcess(PROCESS_TERMINATE, False, PID);\n  if hProc = 0 then\n  begin\n    Code := GetLastError;\n    Writeln('[-] OpenProcess error (code ', Code, ').');\n    Halt(Code);\n  end;\n  if not TerminateProcess(hProc, 0) then\n  begin\n    CloseHandle(hProc);\n    Code := GetLastError;\n    Writeln('[-] TerminateProcess error (code ', Code, ').');\n    Halt(Code);\n  end;\n  CloseHandle(hProc);\nend;\n\nfunction ExecWait(Cmdline: String): Boolean;\nvar\n  si: STARTUPINFO;\n  pi: PROCESS_INFORMATION;\nbegin\n  Result := False;\n  ZeroMemory(@si, sizeof(si));\n  si.cb := sizeof(si);\n  UniqueString(Cmdline);\n  if not CreateProcess(nil, PWideChar(Cmdline), nil, nil, True, 0, nil, nil, si, pi) then begin\n    Writeln('[-] CreateProcess error (code: ', GetLastError, ').');\n    Exit;\n  end;\n  CloseHandle(pi.hThread);\n  WaitForSingleObject(pi.hProcess, INFINITE);\n  CloseHandle(pi.hProcess);\n  Result := True;\nend;\n\nfunction ExpandPath(Path: String): String;\nvar\n  Str: Array[0..511] of Char;\nbegin\n  Result := '';\n  FillChar(Str, 512, 0);\n  if Arch = 64 then\n    Path := StringReplace(Path, '%ProgramFiles%', '%ProgramW6432%', [rfReplaceAll, rfIgnoreCase]);\n  if ExpandEnvironmentStrings(PWideChar(Path), Str, 512) > 0 then\n    Result := Str;\nend;\n\nprocedure SetWrapperDll;\nvar\n  Reg: TRegistry;\n  Code: DWORD;\nbegin\n  if Arch = 64 then\n    Reg := TRegistry.Create(KEY_WRITE or KEY_WOW64_64KEY)\n  else\n    Reg := TRegistry.Create;\n  Reg.RootKey := HKEY_LOCAL_MACHINE;\n  if not Reg.OpenKey('\\SYSTEM\\CurrentControlSet\\Services\\TermService\\Parameters', True) then\n  begin\n    Code := GetLastError;\n    Writeln('[-] OpenKey error (code ', Code, ').');\n    Halt(Code);\n  end;\n  try\n    Reg.WriteExpandString('ServiceDll', WrapPath);\n    if (Arch = 64) and (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 0) then\n      ExecWait('\"'+ExpandPath('%SystemRoot%')+'\\system32\\reg.exe\" add HKLM\\SYSTEM\\CurrentControlSet\\Services\\TermService\\Parameters /v ServiceDll /t REG_EXPAND_SZ /d \"'+WrapPath+'\" /f');\n  except\n    Writeln('[-] WriteExpandString error.');\n    Halt(ERROR_ACCESS_DENIED);\n  end;\n\n  Reg.CloseKey;\n  Reg.Free;\nend;\n\nprocedure ResetServiceDll;\nvar\n  Reg: TRegistry;\n  Code: DWORD;\nbegin\n  if Arch = 64 then\n    Reg := TRegistry.Create(KEY_WRITE or KEY_WOW64_64KEY)\n  else\n    Reg := TRegistry.Create;\n  Reg.RootKey := HKEY_LOCAL_MACHINE;\n  if not Reg.OpenKey('\\SYSTEM\\CurrentControlSet\\Services\\TermService\\Parameters', True) then\n  begin\n    Code := GetLastError;\n    Writeln('[-] OpenKey error (code ', Code, ').');\n    Halt(Code);\n  end;\n  try\n    Reg.WriteExpandString('ServiceDll', '%SystemRoot%\\System32\\termsrv.dll');\n  except\n    Writeln('[-] WriteExpandString error.');\n    Halt(ERROR_ACCESS_DENIED);\n  end;\n  Reg.CloseKey;\n  Reg.Free;\nend;\n\nprocedure ExtractRes(ResName, Path: String);\nvar\n  ResStream: TResourceStream;\nbegin\n  ResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);\n  try\n    ResStream.SaveToFile(Path);\n  except\n    Writeln('[-] Failed to extract file.');\n    Writeln('[*] Resource name: ' + ResName);\n    Writeln('[*] Destination path: ' + Path);\n    ResStream.Free;\n    Exit;\n  end;\n  Writeln('[+] Extracted ', ResName, ' -> ', Path);\n  ResStream.Free;\nend;\n\nfunction ExtractResText(ResName: String): String;\nvar\n  ResStream: TResourceStream;\n  Str: TStringList;\nbegin\n  ResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);\n  Str := TStringList.Create;\n  try\n    Str.LoadFromStream(ResStream);\n  except\n\n  end;\n  ResStream.Free;\n  Result := Str.Text;\n  Str.Free;\nend;\n\nfunction GitINIFile(var Content: String): Boolean;\nconst\n  URL = 'https://raw.githubusercontent.com/stascorp/rdpwrap/master/res/rdpwrap.ini';\nvar\n  NetHandle: HINTERNET;\n  UrlHandle: HINTERNET;\n  Str: String;\n  Buf: Array[0..1023] of Byte;\n  BytesRead: DWORD;\nbegin\n  Result := False;\n  Content := '';\n  NetHandle := InternetOpen('RDP Wrapper Update', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);\n  if not Assigned(NetHandle) then\n    Exit;\n  UrlHandle := InternetOpenUrl(NetHandle, PChar(URL), nil, 0, INTERNET_FLAG_RELOAD, 0);\n  if not Assigned(UrlHandle) then\n  begin\n    InternetCloseHandle(NetHandle);\n    Exit;\n  end;\n  repeat\n    InternetReadFile(UrlHandle, @Buf[0], SizeOf(Buf), BytesRead);\n    SetString(Str, PAnsiChar(@Buf[0]), BytesRead);\n    Content := Content + Str;\n  until BytesRead = 0;\n  InternetCloseHandle(UrlHandle);\n  InternetCloseHandle(NetHandle);\n  Result := True;\nend;\n\nprocedure GrantSidFullAccess(Path, SID: String);\nvar\n  p_SID: PSID;\n  pDACL: PACL;\n  EA: EXPLICIT_ACCESS;\n  Code, Result: DWORD;\nbegin\n  p_SID := nil;\n  if not ConvertStringSidToSid(PChar(SID), p_SID) then\n  begin\n    Code := GetLastError;\n    Writeln('[-] ConvertStringSidToSid error (code ', Code, ').');\n    Exit;\n  end;\n  EA.grfAccessPermissions := GENERIC_ALL;\n  EA.grfAccessMode := GRANT_ACCESS;\n  EA.grfInheritance := SUB_CONTAINERS_AND_OBJECTS_INHERIT;\n  EA.Trustee.pMultipleTrustee := nil;\n  EA.Trustee.MultipleTrusteeOperation := NO_MULTIPLE_TRUSTEE;\n  EA.Trustee.TrusteeForm := TRUSTEE_IS_SID;\n  EA.Trustee.TrusteeType := TRUSTEE_IS_WELL_KNOWN_GROUP;\n  EA.Trustee.ptstrName := p_SID;\n\n  Result := SetEntriesInAcl(1, @EA, nil, pDACL);\n  if Result = ERROR_SUCCESS then\n  begin\n    if SetNamedSecurityInfo(pchar(Path), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, nil, nil, pDACL, nil) <> ERROR_SUCCESS then\n    begin\n      Code := GetLastError;\n      Writeln('[-] SetNamedSecurityInfo error (code ', Code, ').');\n    end;\n    LocalFree(Cardinal(pDACL));\n  end\n  else begin\n    Code := GetLastError;\n    Writeln('[-] SetEntriesInAcl error (code ', Code, ').');\n  end;\nend;\n\nprocedure ExtractFiles;\nvar\n  RDPClipRes, RfxvmtRes, S: String;\n  OnlineINI: TStringList;\nbegin\n  if not DirectoryExists(ExtractFilePath(ExpandPath(WrapPath))) then\n    if ForceDirectories(ExtractFilePath(ExpandPath(WrapPath))) then begin\n      S := ExtractFilePath(ExpandPath(WrapPath));\n      Writeln('[+] Folder created: ', S);\n      GrantSidFullAccess(S, 'S-1-5-18'); // Local System account\n      GrantSidFullAccess(S, 'S-1-5-6'); // Service group\n    end\n    else begin\n      Writeln('[-] ForceDirectories error.');\n      Writeln('[*] Path: ', ExtractFilePath(ExpandPath(WrapPath)));\n      Halt(0);\n    end;\n  if Online then\n  begin\n    Writeln('[*] Downloading latest INI file...');\n    OnlineINI := TStringList.Create;\n    if GitINIFile(S) then begin\n      OnlineINI.Text := S;\n      S := ExtractFilePath(ExpandPath(WrapPath)) + 'rdpwrap.ini';\n      OnlineINI.SaveToFile(S);\n      Writeln('[+] Latest INI file -> ', S);\n    end\n    else\n    begin\n      Writeln('[-] Failed to get online INI file, using built-in.');\n      Online := False;\n    end;\n    OnlineINI.Free;\n  end;\n  if not Online then\n  begin\n    S := ExtractFilePath(ParamStr(0)) + 'rdpwrap.ini';\n    if FileExists(S) then\n    begin\n      OnlineINI := TStringList.Create;\n      OnlineINI.LoadFromFile(S);\n      S := ExtractFilePath(ExpandPath(WrapPath)) + 'rdpwrap.ini';\n      OnlineINI.SaveToFile(S);\n      Writeln('[+] Current INI file -> ', S);\n      OnlineINI.Free;\n    end else\n      ExtractRes('config', ExtractFilePath(ExpandPath(WrapPath)) + 'rdpwrap.ini');\n  end;\n\n  RDPClipRes := '';\n  RfxvmtRes := '';\n  case Arch of\n    32: begin\n      ExtractRes('rdpw32', ExpandPath(WrapPath));\n      if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 0) then\n        RDPClipRes := 'rdpclip6032';\n      if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 1) then\n        RDPClipRes := 'rdpclip6132';\n      if (FV.Version.w.Major = 10) and (FV.Version.w.Minor = 0) then\n        RfxvmtRes := 'rfxvmt32';\n    end;\n    64: begin\n      ExtractRes('rdpw64', ExpandPath(WrapPath));\n      if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 0) then\n        RDPClipRes := 'rdpclip6064';\n      if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 1) then\n        RDPClipRes := 'rdpclip6164';\n      if (FV.Version.w.Major = 10) and (FV.Version.w.Minor = 0) then\n        RfxvmtRes := 'rfxvmt64';\n    end;\n  end;\n  if RDPClipRes <> '' then\n    if not FileExists(ExpandPath('%SystemRoot%\\System32\\rdpclip.exe')) then\n      ExtractRes(RDPClipRes, ExpandPath('%SystemRoot%\\System32\\rdpclip.exe'));\n  if RfxvmtRes <> '' then\n    if not FileExists(ExpandPath('%SystemRoot%\\System32\\rfxvmt.dll')) then\n      ExtractRes(RfxvmtRes, ExpandPath('%SystemRoot%\\System32\\rfxvmt.dll'));\nend;\n\nprocedure DeleteFiles;\nvar\n  Code: DWORD;\n  FullPath, Path: String;\nbegin\n  FullPath := ExpandPath(TermServicePath);\n  Path := ExtractFilePath(FullPath);\n\n  if not DeleteFile(PWideChar(Path + 'rdpwrap.ini')) then\n  begin\n    Code := GetLastError;\n    Writeln('[-] DeleteFile error (code ', Code, ').');\n    Exit;\n  end;\n  Writeln('[+] Removed file: ', Path + 'rdpwrap.ini');\n\n  if not DeleteFile(PWideChar(FullPath)) then\n  begin\n    Code := GetLastError;\n    Writeln('[-] DeleteFile error (code ', Code, ').');\n    Exit;\n  end;\n  Writeln('[+] Removed file: ', FullPath);\n\n  if not RemoveDirectory(PWideChar(ExtractFilePath(ExpandPath(TermServicePath)))) then\n  begin\n    Code := GetLastError;\n    Writeln('[-] RemoveDirectory error (code ', Code, ').');\n    Exit;\n  end;\n  Writeln('[+] Removed folder: ', ExtractFilePath(ExpandPath(TermServicePath)));\nend;\n\nfunction GetFileVersion(const FileName: TFileName; var FileVersion: FILE_VERSION): Boolean;\ntype\n  VS_VERSIONINFO = record\n    wLength, wValueLength, wType: Word;\n    szKey: Array[1..16] of WideChar;\n    Padding1: Word;\n    Value: VS_FIXEDFILEINFO;\n    Padding2, Children: Word;\n  end;\n  PVS_VERSIONINFO = ^VS_VERSIONINFO;\nconst\n  VFF_DEBUG = 1;\n  VFF_PRERELEASE = 2;\n  VFF_PRIVATE = 8;\n  VFF_SPECIAL = 32;\nvar\n  hFile: HMODULE;\n  hResourceInfo: HRSRC;\n  VersionInfo: PVS_VERSIONINFO;\nbegin\n  Result := False;\n\n  hFile := LoadLibraryEx(PWideChar(FileName), 0, LOAD_LIBRARY_AS_DATAFILE);\n  if hFile = 0 then\n    Exit;\n\n  hResourceInfo := FindResource(hFile, PWideChar(1), PWideChar($10));\n  if hResourceInfo = 0 then\n    Exit;\n\n  VersionInfo := Pointer(LoadResource(hFile, hResourceInfo));\n  if VersionInfo = nil then\n    Exit;\n\n  FileVersion.Version.dw := VersionInfo.Value.dwFileVersionMS;\n  FileVersion.Release := Word(VersionInfo.Value.dwFileVersionLS shr 16);\n  FileVersion.Build := Word(VersionInfo.Value.dwFileVersionLS);\n  FileVersion.bDebug := (VersionInfo.Value.dwFileFlags and VFF_DEBUG) = VFF_DEBUG;\n  FileVersion.bPrerelease := (VersionInfo.Value.dwFileFlags and VFF_PRERELEASE) = VFF_PRERELEASE;\n  FileVersion.bPrivate := (VersionInfo.Value.dwFileFlags and VFF_PRIVATE) = VFF_PRIVATE;\n  FileVersion.bSpecial := (VersionInfo.Value.dwFileFlags and VFF_SPECIAL) = VFF_SPECIAL;\n\n  FreeLibrary(hFile);\n  Result := True;\nend;\n\nprocedure CheckTermsrvVersion;\nvar\n  SuppLvl: Byte;\n  VerTxt: String;\n\n  procedure UpdateMsg;\n  begin\n    Writeln('Try running \"update.bat\" or \"RDPWInst -w\" to download latest INI file.');\n    Writeln('If it doesn''t help, send your termsrv.dll to project developer for support.');\n  end;\nbegin\n  GetFileVersion(ExpandPath(TermServicePath), FV);\n  VerTxt := Format('%d.%d.%d.%d',\n  [FV.Version.w.Major, FV.Version.w.Minor, FV.Release, FV.Build]);\n  Writeln('[*] Terminal Services version: ', VerTxt);\n\n  if (FV.Version.w.Major = 5) and (FV.Version.w.Minor = 1) then\n  begin\n    if Arch = 32 then\n    begin\n      Writeln('[!] Windows XP is not supported.');\n      Writeln('You may take a look at RDP Realtime Patch by Stas''M for Windows XP');\n      Writeln('Link: http://stascorp.com/load/1-1-0-62');\n    end;\n    if Arch = 64 then\n      Writeln('[!] Windows XP 64-bit Edition is not supported.');\n    Exit;\n  end;\n  if (FV.Version.w.Major = 5) and (FV.Version.w.Minor = 2) then\n  begin\n    if Arch = 32 then\n      Writeln('[!] Windows Server 2003 is not supported.');\n    if Arch = 64 then\n      Writeln('[!] Windows Server 2003 or XP 64-bit Edition is not supported.');\n    Exit;\n  end;\n  SuppLvl := 0;\n  if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 0) then begin\n    SuppLvl := 1;\n    if (Arch = 32) and (FV.Release = 6000) and (FV.Build = 16386) then begin\n      Writeln('[!] This version of Terminal Services may crash on logon attempt.');\n      Writeln('It''s recommended to upgrade to Service Pack 1 or higher.');\n    end;\n  end;\n  if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 1) then\n    SuppLvl := 1;\n  if Pos('[' + VerTxt + ']', ExtractResText('config')) > 0 then\n    SuppLvl := 2;\n  case SuppLvl of\n    0: begin\n      Writeln('[-] This version of Terminal Services is not supported.');\n      UpdateMsg;\n    end;\n    1: begin\n      Writeln('[!] This version of Terminal Services is supported partially.');\n      Writeln('It means you may have some limitations such as only 2 concurrent sessions.');\n      UpdateMsg;\n    end;\n    2: begin\n      Writeln('[+] This version of Terminal Services is fully supported.');\n    end;\n  end;\nend;\n\nprocedure CheckTermsrvDependencies;\nconst\n  CertPropSvc = 'CertPropSvc';\n  SessionEnv = 'SessionEnv';\nbegin\n  if SvcGetStart(CertPropSvc) = SERVICE_DISABLED then\n    SvcConfigStart(CertPropSvc, SERVICE_DEMAND_START);\n  if SvcGetStart(SessionEnv) = SERVICE_DISABLED then\n    SvcConfigStart(SessionEnv, SERVICE_DEMAND_START);\nend;\n\nprocedure TSConfigRegistry(Enable: Boolean);\nvar\n  Reg: TRegistry;\n  Code: DWORD;\nbegin\n  if Arch = 64 then\n    Reg := TRegistry.Create(KEY_WRITE or KEY_WOW64_64KEY)\n  else\n    Reg := TRegistry.Create;\n  Reg.RootKey := HKEY_LOCAL_MACHINE;\n  if not Reg.OpenKey('\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server', True) then\n  begin\n    Code := GetLastError;\n    Writeln('[-] OpenKey error (code ', Code, ').');\n    Halt(Code);\n  end;\n  try\n    Reg.WriteBool('fDenyTSConnections', not Enable);\n  except\n    Writeln('[-] WriteBool error.');\n    Halt(ERROR_ACCESS_DENIED);\n  end;\n  Reg.CloseKey;\n  if Enable then\n  begin\n    if not Reg.OpenKey('\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\Licensing Core', True) then\n    begin\n      Code := GetLastError;\n      Writeln('[-] OpenKey error (code ', Code, ').');\n      Halt(Code);\n    end;\n    try\n      Reg.WriteBool('EnableConcurrentSessions', True);\n    except\n      Writeln('[-] WriteBool error.');\n      Halt(ERROR_ACCESS_DENIED);\n    end;\n    Reg.CloseKey;\n\n    if not Reg.OpenKey('\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon', True) then\n    begin\n      Code := GetLastError;\n      Writeln('[-] OpenKey error (code ', Code, ').');\n      Halt(Code);\n    end;\n    try\n      Reg.WriteBool('AllowMultipleTSSessions', True);\n    except\n      Writeln('[-] WriteBool error.');\n      Halt(ERROR_ACCESS_DENIED);\n    end;\n    Reg.CloseKey;\n\n    if not Reg.KeyExists('\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\AddIns') then begin\n      if not Reg.OpenKey('\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\AddIns', True) then\n      begin\n        Code := GetLastError;\n        Writeln('[-] OpenKey error (code ', Code, ').');\n        Halt(Code);\n      end;\n      Reg.CloseKey;\n      if not Reg.OpenKey('\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\AddIns\\Clip Redirector', True) then\n      begin\n        Code := GetLastError;\n        Writeln('[-] OpenKey error (code ', Code, ').');\n        Halt(Code);\n      end;\n      try\n        Reg.WriteString('Name', 'RDPClip');\n        Reg.WriteInteger('Type', 3);\n      except\n        Writeln('[-] WriteInteger error.');\n        Halt(ERROR_ACCESS_DENIED);\n      end;\n      Reg.CloseKey;\n      if not Reg.OpenKey('\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\AddIns\\DND Redirector', True) then\n      begin\n        Code := GetLastError;\n        Writeln('[-] OpenKey error (code ', Code, ').');\n        Halt(Code);\n      end;\n      try\n        Reg.WriteString('Name', 'RDPDND');\n        Reg.WriteInteger('Type', 3);\n      except\n        Writeln('[-] WriteInteger error.');\n        Halt(ERROR_ACCESS_DENIED);\n      end;\n      Reg.CloseKey;\n      if not Reg.OpenKey('\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\AddIns\\Dynamic VC', True) then\n      begin\n        Code := GetLastError;\n        Writeln('[-] OpenKey error (code ', Code, ').');\n        Halt(Code);\n      end;\n      try\n        Reg.WriteInteger('Type', -1);\n      except\n        Writeln('[-] WriteInteger error.');\n        Halt(ERROR_ACCESS_DENIED);\n      end;\n      Reg.CloseKey;\n    end;\n  end;\n  Reg.Free;\nend;\n\nprocedure TSConfigFirewall(Enable: Boolean);\nbegin\n  if Enable then\n  begin\n    ExecWait('netsh advfirewall firewall add rule name=\"Remote Desktop\" dir=in protocol=tcp localport=3389 profile=any action=allow');\n    ExecWait('netsh advfirewall firewall add rule name=\"Remote Desktop\" dir=in protocol=udp localport=3389 profile=any action=allow');\n  end else\n    ExecWait('netsh advfirewall firewall delete rule name=\"Remote Desktop\"');\nend;\n\nfunction CheckINIDate(Filename, Content: String; var Date: Integer): Boolean;\nvar\n  Str: TStringList;\n  I: Integer;\nbegin\n  Result := False;\n  Str := TStringList.Create;\n  if Filename <> '' then begin\n    try\n      Str.LoadFromFile(Filename);\n    except\n      Writeln('[-] Failed to read INI file.');\n      Exit;\n    end;\n  end else\n    Str.Text := Content;\n  for I := 0 to Str.Count - 1 do\n    if Pos('Updated=', Str[I]) = 1 then\n      Break;\n  if I >= Str.Count then begin\n    Writeln('[-] Failed to check INI date.');\n    Exit;\n  end;\n  Content := StringReplace(Str[I], 'Updated=', '', []);\n  Content := StringReplace(Content, '-', '', [rfReplaceAll]);\n  Str.Free;\n  try\n    Date := StrToInt(Content);\n  except\n    Writeln('[-] Wrong INI date format.');\n    Exit;\n  end;\n  Result := True;\nend;\n\nprocedure CheckUpdate;\nvar\n  INIPath, S: String;\n  Str: TStringList;\n  I, OldDate, NewDate: Integer;\nbegin\n  INIPath := ExtractFilePath(ExpandPath(TermServicePath)) + 'rdpwrap.ini';\n  if not CheckINIDate(INIPath, '', OldDate) then\n    Halt(ERROR_ACCESS_DENIED);\n  Writeln('[*] Current update date: ',\n    Format('%d.%.2d.%.2d', [OldDate div 10000, OldDate div 100 mod 100, OldDate mod 100]));\n\n  if not GitINIFile(S) then begin\n    Writeln('[-] Failed to download latest INI from GitHub.');\n    Halt(ERROR_ACCESS_DENIED);\n  end;\n  if not CheckINIDate('', S, NewDate) then\n    Halt(ERROR_ACCESS_DENIED);\n  Writeln('[*] Latest update date:  ',\n    Format('%d.%.2d.%.2d', [NewDate div 10000, NewDate div 100 mod 100, NewDate mod 100]));\n\n  if NewDate = OldDate then\n    Writeln('[*] Everything is up to date.')\n  else\n    if NewDate > OldDate then begin\n      Writeln('[+] New update is available, updating...');\n\n      CheckTermsrvProcess;\n\n      Writeln('[*] Terminating service...');\n      AddPrivilege('SeDebugPrivilege');\n      KillProcess(TermServicePID);\n      Sleep(1000);\n\n      if Length(ShareSvc) > 0 then\n        for I := 0 to Length(ShareSvc) - 1 do\n          SvcStart(ShareSvc[I]);\n      Sleep(500);\n\n      Str := TStringList.Create;\n      Str.Text := S;\n      try\n        Str.SaveToFile(INIPath);\n      except\n        Writeln('[-] Failed to write INI file.');\n        Halt(ERROR_ACCESS_DENIED);\n      end;\n      Str.Free;\n\n      SvcStart(TermService);\n\n      Writeln('[+] Update completed.');\n    end else\n      Writeln('[*] Your INI file is newer than public file. Are you a developer? :)');\nend;\n\nvar\n  I: Integer;\nbegin\n  Writeln('RDP Wrapper Library v1.6.2');\n  Writeln('Installer v2.6');\n  Writeln('Copyright (C) Stas''M Corp. 2018');\n  Writeln('');\n\n  if (ParamCount < 1)\n  or (\n    (ParamStr(1) <> '-l')\n    and (ParamStr(1) <> '-i')\n    and (ParamStr(1) <> '-w')\n    and (ParamStr(1) <> '-u')\n    and (ParamStr(1) <> '-r')\n  ) then\n  begin\n    Writeln('USAGE:');\n    Writeln('RDPWInst.exe [-l|-i[-s][-o]|-w|-u[-k]|-r]');\n    Writeln('');\n    Writeln('-l          display the license agreement');\n    Writeln('-i          install wrapper to Program Files folder (default)');\n    Writeln('-i -s       install wrapper to System32 folder');\n    Writeln('-i -o       online install mode (loads latest INI file)');\n    Writeln('-w          get latest update for INI file');\n    Writeln('-u          uninstall wrapper');\n    Writeln('-u -k       uninstall wrapper and keep settings');\n    Writeln('-r          force restart Terminal Services');\n    Exit;\n  end;\n\n  if ParamStr(1) = '-l' then\n  begin\n    Writeln(ExtractResText('license'));\n    Exit;\n  end;\n\n  if not CheckWin32Version(6,0) then\n  begin\n    Writeln('[-] Unsupported Windows version:');\n    Writeln('  only >= 6.0 (Vista, Server 2008 and newer) are supported.');\n    Exit;\n  end;\n\n  if not SupportedArchitecture then\n  begin\n    Writeln('[-] Unsupported processor architecture.');\n    Exit;\n  end;\n\n  CheckInstall;\n\n  if ParamStr(1) = '-i' then\n  begin\n    if Installed then\n    begin\n      Writeln('[*] RDP Wrapper Library is already installed.');\n      Halt(ERROR_INVALID_FUNCTION);\n    end;\n    Writeln('[*] Notice to user:');\n    Writeln('  - By using all or any portion of this software, you are agreeing');\n    Writeln('  to be bound by all the terms and conditions of the license agreement.');\n    Writeln('  - To read the license agreement, run the installer with -l parameter.');\n    Writeln('  - If you do not agree to any terms of the license agreement,');\n    Writeln('  do not use the software.');\n\n    Writeln('[*] Installing...');\n    if ParamStr(2) = '-s' then\n      WrapPath := '%SystemRoot%\\system32\\rdpwrap.dll'\n    else\n      WrapPath := '%ProgramFiles%\\RDP Wrapper\\rdpwrap.dll';\n\n    if Arch = 64 then\n      DisableWowRedirection;\n\n    CheckTermsrvVersion;\n    CheckTermsrvProcess;\n\n    Writeln('[*] Extracting files...');\n    Online := (ParamStr(2) = '-o') or (ParamStr(3) = '-o');\n    ExtractFiles;\n\n    Writeln('[*] Configuring service library...');\n    SetWrapperDll;\n\n    Writeln('[*] Checking dependencies...');\n    CheckTermsrvDependencies;\n\n    Writeln('[*] Terminating service...');\n    AddPrivilege('SeDebugPrivilege');\n    KillProcess(TermServicePID);\n    Sleep(1000);\n\n    if Length(ShareSvc) > 0 then\n      for I := 0 to Length(ShareSvc) - 1 do\n        SvcStart(ShareSvc[I]);\n    Sleep(500);\n    SvcStart(TermService);\n    Sleep(500);\n\n    Writeln('[*] Configuring registry...');\n    TSConfigRegistry(True);\n    Writeln('[*] Configuring firewall...');\n    TSConfigFirewall(True);\n\n    Writeln('[+] Successfully installed.');\n\n    if Arch = 64 then\n      RevertWowRedirection;\n  end;\n  if ParamStr(1) = '-u' then\n  begin\n    if not Installed then\n    begin\n      Writeln('[*] RDP Wrapper Library is not installed.');\n      Halt(ERROR_INVALID_FUNCTION);\n    end;\n    Writeln('[*] Uninstalling...');\n\n    if Arch = 64 then\n      DisableWowRedirection;\n\n    CheckTermsrvProcess;\n\n    Writeln('[*] Resetting service library...');\n    ResetServiceDll;\n\n    Writeln('[*] Terminating service...');\n    AddPrivilege('SeDebugPrivilege');\n    KillProcess(TermServicePID);\n    Sleep(1000);\n\n    Writeln('[*] Removing files...');\n    DeleteFiles;\n\n    if Length(ShareSvc) > 0 then\n      for I := 0 to Length(ShareSvc) - 1 do\n        SvcStart(ShareSvc[I]);\n    Sleep(500);\n    SvcStart(TermService);\n    Sleep(500);\n\n    if ParamStr(2) <> '-k' then\n    begin\n      Writeln('[*] Configuring registry...');\n      TSConfigRegistry(False);\n      Writeln('[*] Configuring firewall...');\n      TSConfigFirewall(False);\n    end;\n\n    if Arch = 64 then\n      RevertWowRedirection;\n\n    Writeln('[+] Successfully uninstalled.');\n  end;\n\n  if ParamStr(1) = '-w' then\n  begin\n    if not Installed then\n    begin\n      Writeln('[*] RDP Wrapper Library is not installed.');\n      Halt(ERROR_INVALID_FUNCTION);\n    end;\n    Writeln('[*] Checking for updates...');\n    CheckUpdate;\n  end;\n\n  if ParamStr(1) = '-r' then\n  begin\n    Writeln('[*] Restarting...');\n\n    CheckTermsrvProcess;\n\n    Writeln('[*] Terminating service...');\n    AddPrivilege('SeDebugPrivilege');\n    KillProcess(TermServicePID);\n    Sleep(1000);\n\n    if Length(ShareSvc) > 0 then\n      for I := 0 to Length(ShareSvc) - 1 do\n        SvcStart(ShareSvc[I]);\n    Sleep(500);\n    SvcStart(TermService);\n\n    Writeln('[+] Done.');\n  end;\nend.\n"
  },
  {
    "path": "src-installer/RDPWInst.dproj",
    "content": "﻿\t<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n\t\t<PropertyGroup>\n\t\t\t<ProjectGuid>{AF9BEAA3-99CD-4B2E-BE67-3F3BD27B961A}</ProjectGuid>\n\t\t\t<ProjectVersion>12.0</ProjectVersion>\n\t\t\t<MainSource>RDPWInst.dpr</MainSource>\n\t\t\t<Config Condition=\"'$(Config)'==''\">Release</Config>\n\t\t\t<DCC_DCCCompiler>DCC32</DCC_DCCCompiler>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Config)'=='Base' or '$(Base)'!=''\">\n\t\t\t<Base>true</Base>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Config)'=='Release' or '$(Cfg_1)'!=''\">\n\t\t\t<Cfg_1>true</Cfg_1>\n\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t<Base>true</Base>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Config)'=='Debug' or '$(Cfg_2)'!=''\">\n\t\t\t<Cfg_2>true</Cfg_2>\n\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t<Base>true</Base>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Base)'!=''\">\n\t\t\t<DCC_ExeOutput>..\\bin\\</DCC_ExeOutput>\n\t\t\t<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>\n\t\t\t<DCC_DependencyCheckOutputName>..\\bin\\RDPWInst.exe</DCC_DependencyCheckOutputName>\n\t\t\t<DCC_ImageBase>00400000</DCC_ImageBase>\n\t\t\t<DCC_Platform>x86</DCC_Platform>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Cfg_1)'!=''\">\n\t\t\t<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>\n\t\t\t<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>\n\t\t\t<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>\n\t\t\t<DCC_DebugInformation>false</DCC_DebugInformation>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Cfg_2)'!=''\">\n\t\t\t<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>\n\t\t</PropertyGroup>\n\t\t<ItemGroup>\n\t\t\t<DelphiCompile Include=\"RDPWInst.dpr\">\n\t\t\t\t<MainSource>MainSource</MainSource>\n\t\t\t</DelphiCompile>\n\t\t\t<BuildConfiguration Include=\"Base\">\n\t\t\t\t<Key>Base</Key>\n\t\t\t</BuildConfiguration>\n\t\t\t<BuildConfiguration Include=\"Release\">\n\t\t\t\t<Key>Cfg_1</Key>\n\t\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t</BuildConfiguration>\n\t\t\t<BuildConfiguration Include=\"Debug\">\n\t\t\t\t<Key>Cfg_2</Key>\n\t\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t</BuildConfiguration>\n\t\t</ItemGroup>\n\t\t<Import Project=\"$(BDS)\\Bin\\CodeGear.Delphi.Targets\" Condition=\"Exists('$(BDS)\\Bin\\CodeGear.Delphi.Targets')\"/>\n\t\t<ProjectExtensions>\n\t\t\t<Borland.Personality>Delphi.Personality.12</Borland.Personality>\n\t\t\t<Borland.ProjectType/>\n\t\t\t<BorlandProject>\n\t\t\t\t<Delphi.Personality>\n\t\t\t\t\t<Parameters>\n\t\t\t\t\t\t<Parameters Name=\"UseLauncher\">False</Parameters>\n\t\t\t\t\t\t<Parameters Name=\"LoadAllSymbols\">True</Parameters>\n\t\t\t\t\t\t<Parameters Name=\"LoadUnspecifiedSymbols\">False</Parameters>\n\t\t\t\t\t\t<Parameters Name=\"RunParams\">-w</Parameters>\n\t\t\t\t\t</Parameters>\n\t\t\t\t\t<VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"IncludeVerInfo\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"AutoIncBuild\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"MajorVer\">1</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"MinorVer\">0</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Release\">0</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Build\">0</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Debug\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"PreRelease\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Special\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Private\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"DLL\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Locale\">1049</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"CodePage\">1251</VersionInfo>\n\t\t\t\t\t</VersionInfo>\n\t\t\t\t\t<VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"CompanyName\"/>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"FileDescription\"/>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"FileVersion\">1.0.0.0</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"InternalName\"/>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"LegalCopyright\"/>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"LegalTrademarks\"/>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"OriginalFilename\"/>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"ProductName\"/>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"ProductVersion\">1.0.0.0</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"Comments\"/>\n\t\t\t\t\t</VersionInfoKeys>\n\t\t\t\t\t<Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\bcboffice2k140.bpl\">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\bcbofficexp140.bpl\">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\dcloffice2k140.bpl\">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\dclofficexp140.bpl\">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>\n\t\t\t\t\t</Excluded_Packages>\n\t\t\t\t\t<Source>\n\t\t\t\t\t\t<Source Name=\"MainSource\">RDPWInst.dpr</Source>\n\t\t\t\t\t</Source>\n\t\t\t\t</Delphi.Personality>\n\t\t\t</BorlandProject>\n\t\t\t<ProjectFileVersion>12</ProjectFileVersion>\n\t\t</ProjectExtensions>\n\t</Project>\n"
  },
  {
    "path": "src-rdpcheck/MainUnit.dfm",
    "content": "object Frm: TFrm\n  Left = 0\n  Top = 0\n  BorderIcons = [biSystemMenu, biMinimize]\n  BorderStyle = bsSingle\n  Caption = 'Local RDP Checker'\n  ClientHeight = 480\n  ClientWidth = 640\n  Color = clBtnFace\n  Font.Charset = DEFAULT_CHARSET\n  Font.Color = clWindowText\n  Font.Height = -11\n  Font.Name = 'Tahoma'\n  Font.Style = []\n  OldCreateOrder = False\n  Position = poDesktopCenter\n  OnCreate = FormCreate\n  PixelsPerInch = 96\n  TextHeight = 13\n  object RDP: TMsRdpClient2\n    Left = 0\n    Top = 0\n    Width = 640\n    Height = 480\n    TabOrder = 0\n    OnDisconnected = RDPDisconnected\n    ControlData = {0003000008000200000000000B0000000B000000}\n  end\nend\n"
  },
  {
    "path": "src-rdpcheck/MainUnit.pas",
    "content": "{\n  Copyright 2015 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n}\n\nunit MainUnit;\n\ninterface\n\nuses\n  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,\n  Dialogs, OleServer, MSTSCLib_TLB, OleCtrls, Registry;\n\ntype\n  TFrm = class(TForm)\n    RDP: TMsRdpClient2;\n    procedure RDPDisconnected(ASender: TObject; discReason: Integer);\n    procedure FormCreate(Sender: TObject);\n  private\n    { Private declarations }\n  public\n    { Public declarations }\n  end;\n\nvar\n  Frm: TFrm;\n  SecurityLayer, UserAuthentication: DWORD;\n\nimplementation\n\n{$R *.dfm}\n\nprocedure TFrm.FormCreate(Sender: TObject);\nvar\n  Reg: TRegistry;\nbegin\n  RDP.DisconnectedText := 'Disconnected.';\n  RDP.ConnectingText := 'Connecting...';\n  RDP.ConnectedStatusText := 'Connected.';\n  RDP.UserName := '';\n  RDP.Server := '127.0.0.2';\n  Reg := TRegistry.Create;\n  Reg.RootKey := HKEY_LOCAL_MACHINE;\n\n  if Reg.OpenKey('\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp', True) then\n  begin\n    try\n      SecurityLayer := Reg.ReadInteger('SecurityLayer');\n      UserAuthentication := Reg.ReadInteger('UserAuthentication');\n      Reg.WriteInteger('SecurityLayer', 0);\n      Reg.WriteInteger('UserAuthentication', 0);\n    except\n\n    end;\n    Reg.CloseKey;\n  end;\n\n  if Reg.OpenKeyReadOnly('\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp') then begin\n    try\n      RDP.AdvancedSettings2.RDPPort := Reg.ReadInteger('PortNumber');\n    except\n\n    end;\n    Reg.CloseKey;\n  end;\n  Reg.Free;\n  Sleep(1000);\n  RDP.Connect;\nend;\n\nprocedure TFrm.RDPDisconnected(ASender: TObject; discReason: Integer);\nvar\n  ErrStr: String;\n  Reg: TRegistry;\nbegin\n  case discReason of\n    1: ErrStr := 'Local disconnection.';\n    2: ErrStr := 'Disconnected by user.';\n    3: ErrStr := 'Disconnected by server.';\n    $904: ErrStr := 'Socket closed.';\n    $C08: ErrStr := 'Decompress error.';\n    $108: ErrStr := 'Connection timed out.';\n    $C06: ErrStr := 'Decryption error.';\n    $104: ErrStr := 'DNS name lookup failure.';\n    $508: ErrStr := 'DNS lookup failed.';\n    $B06: ErrStr := 'Encryption error.';\n    $604: ErrStr := 'Windows Sockets gethostbyname() call failed.';\n    $208: ErrStr := 'Host not found error.';\n    $408: ErrStr := 'Internal error.';\n    $906: ErrStr := 'Internal security error.';\n    $A06: ErrStr := 'Internal security error.';\n    $506: ErrStr := 'The encryption method specified is not valid.';\n    $804: ErrStr := 'Bad IP address specified.';\n    $606: ErrStr := 'Server security data is not valid.';\n    $406: ErrStr := 'Security data is not valid.';\n    $308: ErrStr := 'The IP address specified is not valid.';\n    $808: ErrStr := 'License negotiation failed.';\n    $908: ErrStr := 'Licensing time-out.';\n    $106: ErrStr := 'Out of memory.';\n    $206: ErrStr := 'Out of memory.';\n    $306: ErrStr := 'Out of memory.';\n    $706: ErrStr := 'Failed to unpack server certificate.';\n    $204: ErrStr := 'Socket connection failed.';\n    $404: ErrStr := 'Windows Sockets recv() call failed.';\n    $704: ErrStr := 'Time-out occurred.';\n    $608: ErrStr := 'Internal timer error.';\n    $304: ErrStr := 'Windows Sockets send() call failed.';\n    $B07: ErrStr := 'The account is disabled.';\n    $E07: ErrStr := 'The account is expired.';\n    $D07: ErrStr := 'The account is locked out.';\n    $C07: ErrStr := 'The account is restricted.';\n    $1B07: ErrStr := 'The received certificate is expired.';\n    $1607: ErrStr := 'The policy does not support delegation of credentials to the target server.';\n    $2107: ErrStr := 'The server authentication policy does not allow connection requests using saved credentials. The user must enter new credentials.';\n    $807: ErrStr := 'Login failed.';\n    $1807: ErrStr := 'No authority could be contacted for authentication. The domain name of the authenticating party could be wrong, the domain could be unreachable, or there might have been a trust relationship failure.';\n    $A07: ErrStr := 'The specified user has no account.';\n    $F07: ErrStr := 'The password is expired.';\n    $1207: ErrStr := 'The user password must be changed before logging on for the first time.';\n    $1707: ErrStr := 'Delegation of credentials to the target server is not allowed unless mutual authentication has been achieved.';\n    $2207: ErrStr := 'The smart card is blocked.';\n    $1C07: ErrStr := 'An incorrect PIN was presented to the smart card.';\n    $B09: ErrStr := 'Network Level Authentication is required, run RDPCheck as administrator.';\n    $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.';\n    else ErrStr := 'Unknown code 0x'+IntToHex(discReason, 1);\n  end;\n  if (discReason > 2) then\n    MessageBox(Handle, PWideChar(ErrStr), 'Disconnected', mb_Ok or mb_IconError);\n\n  Reg := TRegistry.Create;\n  Reg.RootKey := HKEY_LOCAL_MACHINE;\n\n  if Reg.OpenKey('\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp', True) then\n  begin\n    try\n      Reg.WriteInteger('SecurityLayer', SecurityLayer);\n      Reg.WriteInteger('UserAuthentication', UserAuthentication);\n    except\n\n    end;\n    Reg.CloseKey;\n  end;\n\n  Reg.Free;\n\n  Halt(0);\nend;\n\nend.\n"
  },
  {
    "path": "src-rdpcheck/RDPCheck.dpr",
    "content": "{\n  Copyright 2014 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n}\n\nprogram RDPCheck;\n\nuses\n  Forms,\n  MainUnit in 'MainUnit.pas' {Frm};\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.MainFormOnTaskbar := True;\n  Application.Title := 'Local RDP Checker';\n  Application.CreateForm(TFrm, Frm);\n  Application.Run;\nend.\n"
  },
  {
    "path": "src-rdpcheck/RDPCheck.dproj",
    "content": "﻿\t<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n\t\t<PropertyGroup>\n\t\t\t<ProjectGuid>{90AE83F6-26B8-45D4-92FE-CF4ACCDE9F68}</ProjectGuid>\n\t\t\t<ProjectVersion>12.0</ProjectVersion>\n\t\t\t<MainSource>RDPCheck.dpr</MainSource>\n\t\t\t<Config Condition=\"'$(Config)'==''\">Release</Config>\n\t\t\t<DCC_DCCCompiler>DCC32</DCC_DCCCompiler>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Config)'=='Base' or '$(Base)'!=''\">\n\t\t\t<Base>true</Base>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Config)'=='Release' or '$(Cfg_1)'!=''\">\n\t\t\t<Cfg_1>true</Cfg_1>\n\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t<Base>true</Base>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Config)'=='Debug' or '$(Cfg_2)'!=''\">\n\t\t\t<Cfg_2>true</Cfg_2>\n\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t<Base>true</Base>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Base)'!=''\">\n\t\t\t<DCC_ExeOutput>..\\bin\\</DCC_ExeOutput>\n\t\t\t<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>\n\t\t\t<DCC_DependencyCheckOutputName>..\\bin\\RDPCheck.exe</DCC_DependencyCheckOutputName>\n\t\t\t<DCC_ImageBase>00400000</DCC_ImageBase>\n\t\t\t<DCC_Platform>x86</DCC_Platform>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Cfg_1)'!=''\">\n\t\t\t<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>\n\t\t\t<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>\n\t\t\t<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>\n\t\t\t<DCC_DebugInformation>false</DCC_DebugInformation>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Cfg_2)'!=''\">\n\t\t\t<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>\n\t\t</PropertyGroup>\n\t\t<ItemGroup>\n\t\t\t<DelphiCompile Include=\"RDPCheck.dpr\">\n\t\t\t\t<MainSource>MainSource</MainSource>\n\t\t\t</DelphiCompile>\n\t\t\t<DCCReference Include=\"MainUnit.pas\">\n\t\t\t\t<Form>Frm</Form>\n\t\t\t</DCCReference>\n\t\t\t<BuildConfiguration Include=\"Base\">\n\t\t\t\t<Key>Base</Key>\n\t\t\t</BuildConfiguration>\n\t\t\t<BuildConfiguration Include=\"Release\">\n\t\t\t\t<Key>Cfg_1</Key>\n\t\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t</BuildConfiguration>\n\t\t\t<BuildConfiguration Include=\"Debug\">\n\t\t\t\t<Key>Cfg_2</Key>\n\t\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t</BuildConfiguration>\n\t\t</ItemGroup>\n\t\t<Import Project=\"$(BDS)\\Bin\\CodeGear.Delphi.Targets\" Condition=\"Exists('$(BDS)\\Bin\\CodeGear.Delphi.Targets')\"/>\n\t\t<ProjectExtensions>\n\t\t\t<Borland.Personality>Delphi.Personality.12</Borland.Personality>\n\t\t\t<Borland.ProjectType/>\n\t\t\t<BorlandProject>\n\t\t\t\t<Delphi.Personality>\n\t\t\t\t\t<Parameters>\n\t\t\t\t\t\t<Parameters Name=\"UseLauncher\">False</Parameters>\n\t\t\t\t\t\t<Parameters Name=\"LoadAllSymbols\">True</Parameters>\n\t\t\t\t\t\t<Parameters Name=\"LoadUnspecifiedSymbols\">False</Parameters>\n\t\t\t\t\t</Parameters>\n\t\t\t\t\t<VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"IncludeVerInfo\">True</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"AutoIncBuild\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"MajorVer\">2</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"MinorVer\">2</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Release\">0</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Build\">0</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Debug\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"PreRelease\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Special\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Private\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"DLL\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Locale\">1033</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"CodePage\">1252</VersionInfo>\n\t\t\t\t\t</VersionInfo>\n\t\t\t\t\t<VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"CompanyName\">Stas&apos;M Corp.</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"FileDescription\">Local RDP Checker</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"FileVersion\">2.2.0.0</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"InternalName\">RDPCheck</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"LegalCopyright\">Copyright © Stas&apos;M Corp. 2015</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"LegalTrademarks\">Stas&apos;M Corp.</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"OriginalFilename\">RDPCheck.exe</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"ProductName\">RDP Host Support</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"ProductVersion\">1.6.0.0</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"Comments\">http://stascorp.com</VersionInfoKeys>\n\t\t\t\t\t</VersionInfoKeys>\n\t\t\t\t\t<Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\bcboffice2k140.bpl\">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\bcbofficexp140.bpl\">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\dcloffice2k140.bpl\">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\dclofficexp140.bpl\">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>\n\t\t\t\t\t</Excluded_Packages>\n\t\t\t\t\t<Source>\n\t\t\t\t\t\t<Source Name=\"MainSource\">RDPCheck.dpr</Source>\n\t\t\t\t\t</Source>\n\t\t\t\t</Delphi.Personality>\n\t\t\t</BorlandProject>\n\t\t\t<ProjectFileVersion>12</ProjectFileVersion>\n\t\t</ProjectExtensions>\n\t</Project>\n"
  },
  {
    "path": "src-rdpconfig/LicenseUnit.dfm",
    "content": "object LicenseForm: TLicenseForm\n  Left = 0\n  Top = 0\n  BorderIcons = []\n  BorderStyle = bsDialog\n  Caption = 'License Agreement'\n  ClientHeight = 344\n  ClientWidth = 386\n  Color = clBtnFace\n  Font.Charset = DEFAULT_CHARSET\n  Font.Color = clWindowText\n  Font.Height = -11\n  Font.Name = 'Tahoma'\n  Font.Style = []\n  OldCreateOrder = False\n  Position = poOwnerFormCenter\n  PixelsPerInch = 96\n  TextHeight = 13\n  object mText: TMemo\n    Left = 8\n    Top = 8\n    Width = 370\n    Height = 297\n    ReadOnly = True\n    ScrollBars = ssBoth\n    TabOrder = 0\n    WordWrap = False\n  end\n  object bAccept: TButton\n    Left = 115\n    Top = 311\n    Width = 75\n    Height = 25\n    Caption = '&Accept'\n    ModalResult = 1\n    TabOrder = 1\n  end\n  object bDecline: TButton\n    Left = 196\n    Top = 311\n    Width = 75\n    Height = 25\n    Caption = '&Decline'\n    ModalResult = 2\n    TabOrder = 2\n  end\nend\n"
  },
  {
    "path": "src-rdpconfig/LicenseUnit.pas",
    "content": "{\n  Copyright 2014 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n}\n\nunit LicenseUnit;\n\ninterface\n\nuses\n  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,\n  Dialogs, StdCtrls;\n\ntype\n  TLicenseForm = class(TForm)\n    mText: TMemo;\n    bAccept: TButton;\n    bDecline: TButton;\n  private\n    { Private declarations }\n  public\n    { Public declarations }\n  end;\n\nvar\n  LicenseForm: TLicenseForm;\n\nimplementation\n\n{$R *.dfm}\n\nend.\n"
  },
  {
    "path": "src-rdpconfig/MainUnit.dfm",
    "content": "object MainForm: TMainForm\n  Left = 0\n  Top = 0\n  BorderStyle = bsDialog\n  Caption = 'RDP Wrapper Configuration'\n  ClientHeight = 314\n  ClientWidth = 404\n  Color = clBtnFace\n  Font.Charset = DEFAULT_CHARSET\n  Font.Color = clWindowText\n  Font.Height = -11\n  Font.Name = 'Tahoma'\n  Font.Style = []\n  OldCreateOrder = False\n  Position = poDesktopCenter\n  OnCloseQuery = FormCloseQuery\n  OnCreate = FormCreate\n  OnDestroy = FormDestroy\n  PixelsPerInch = 96\n  TextHeight = 13\n  object bOK: TButton\n    Left = 40\n    Top = 281\n    Width = 75\n    Height = 25\n    Caption = 'OK'\n    ModalResult = 1\n    TabOrder = 4\n    OnClick = bOKClick\n  end\n  object bCancel: TButton\n    Left = 121\n    Top = 281\n    Width = 75\n    Height = 25\n    Caption = 'Cancel'\n    ModalResult = 2\n    TabOrder = 5\n    OnClick = bCancelClick\n  end\n  object bApply: TButton\n    Left = 202\n    Top = 281\n    Width = 75\n    Height = 25\n    Caption = 'Apply'\n    Enabled = False\n    TabOrder = 6\n    OnClick = bApplyClick\n  end\n  object rgNLA: TRadioGroup\n    Left = 202\n    Top = 89\n    Width = 194\n    Height = 73\n    Caption = 'Authentication Mode'\n    Items.Strings = (\n      'GUI Authentication Only'\n      'Default RDP Authentication'\n      'Network Level Authentication')\n    TabOrder = 2\n    OnClick = cbAllowTSConnectionsClick\n  end\n  object rgShadow: TRadioGroup\n    Left = 202\n    Top = 168\n    Width = 194\n    Height = 105\n    Caption = 'Session Shadowing Mode'\n    Items.Strings = (\n      'Disable Shadowing'\n      'Full access with user'#39's permission'\n      'Full access without permission'\n      'View only with user'#39's permission'\n      'View only without permission')\n    TabOrder = 3\n    OnClick = cbAllowTSConnectionsClick\n  end\n  object bLicense: TButton\n    Left = 283\n    Top = 281\n    Width = 87\n    Height = 25\n    Caption = 'View license...'\n    TabOrder = 7\n    OnClick = bLicenseClick\n  end\n  object gbDiag: TGroupBox\n    Left = 8\n    Top = 6\n    Width = 388\n    Height = 77\n    Caption = 'Diagnostics'\n    TabOrder = 0\n    object lListener: TLabel\n      Left = 11\n      Top = 55\n      Width = 70\n      Height = 13\n      Caption = 'Listener state:'\n    end\n    object lService: TLabel\n      Left = 11\n      Top = 36\n      Width = 67\n      Height = 13\n      Caption = 'Service state:'\n    end\n    object lsListener: TLabel\n      Left = 91\n      Top = 55\n      Width = 44\n      Height = 13\n      Caption = 'Unknown'\n    end\n    object lsService: TLabel\n      Left = 91\n      Top = 36\n      Width = 44\n      Height = 13\n      Caption = 'Unknown'\n    end\n    object lsTSVer: TLabel\n      Left = 226\n      Top = 36\n      Width = 44\n      Height = 13\n      Caption = 'Unknown'\n    end\n    object lsWrapper: TLabel\n      Left = 91\n      Top = 17\n      Width = 44\n      Height = 13\n      Caption = 'Unknown'\n    end\n    object lsWrapVer: TLabel\n      Left = 226\n      Top = 17\n      Width = 44\n      Height = 13\n      Caption = 'Unknown'\n    end\n    object lTSVer: TLabel\n      Left = 202\n      Top = 36\n      Width = 20\n      Height = 13\n      Caption = 'ver.'\n    end\n    object lWrapper: TLabel\n      Left = 11\n      Top = 17\n      Width = 74\n      Height = 13\n      Caption = 'Wrapper state:'\n    end\n    object lWrapVer: TLabel\n      Left = 202\n      Top = 17\n      Width = 20\n      Height = 13\n      Caption = 'ver.'\n    end\n    object lsSuppVer: TLabel\n      Left = 202\n      Top = 55\n      Width = 70\n      Height = 13\n      Caption = '[support level]'\n    end\n  end\n  object gbGeneral: TGroupBox\n    Left = 8\n    Top = 89\n    Width = 188\n    Height = 184\n    Caption = 'General Settings'\n    TabOrder = 1\n    object lRDPPort: TLabel\n      Left = 8\n      Top = 44\n      Width = 47\n      Height = 13\n      Caption = 'RDP port:'\n    end\n    object cbAllowTSConnections: TCheckBox\n      Left = 8\n      Top = 18\n      Width = 132\n      Height = 17\n      Caption = 'Enable Remote Desktop'\n      TabOrder = 0\n      OnClick = cbAllowTSConnectionsClick\n    end\n    object cbSingleSessionPerUser: TCheckBox\n      Left = 8\n      Top = 69\n      Width = 129\n      Height = 17\n      Caption = 'Single session per user'\n      TabOrder = 2\n      OnClick = cbAllowTSConnectionsClick\n    end\n    object cbHideUsers: TCheckBox\n      Left = 8\n      Top = 92\n      Width = 149\n      Height = 17\n      Caption = 'Hide users on logon screen'\n      TabOrder = 3\n      OnClick = cbAllowTSConnectionsClick\n    end\n    object seRDPPort: TSpinEdit\n      Left = 61\n      Top = 41\n      Width = 62\n      Height = 22\n      MaxValue = 65535\n      MinValue = 0\n      TabOrder = 1\n      Value = 0\n      OnChange = seRDPPortChange\n    end\n    object cbCustomPrg: TCheckBox\n      Left = 8\n      Top = 115\n      Width = 169\n      Height = 17\n      Caption = 'Allow to start custom programs'\n      TabOrder = 4\n      OnClick = cbAllowTSConnectionsClick\n    end\n  end\n  object Timer: TTimer\n    Interval = 250\n    OnTimer = TimerTimer\n    Left = 352\n    Top = 27\n  end\nend\n"
  },
  {
    "path": "src-rdpconfig/MainUnit.pas",
    "content": "{\n  Copyright 2017 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n}\n\nunit MainUnit;\n\ninterface\n\nuses\n  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,\n  Dialogs, StdCtrls, Spin, ExtCtrls, Registry, WinSvc;\n\ntype\n  TMainForm = class(TForm)\n    bOK: TButton;\n    bCancel: TButton;\n    bApply: TButton;\n    cbSingleSessionPerUser: TCheckBox;\n    rgNLA: TRadioGroup;\n    cbAllowTSConnections: TCheckBox;\n    rgShadow: TRadioGroup;\n    seRDPPort: TSpinEdit;\n    lRDPPort: TLabel;\n    lService: TLabel;\n    lListener: TLabel;\n    lWrapper: TLabel;\n    lsListener: TLabel;\n    lsService: TLabel;\n    lsWrapper: TLabel;\n    Timer: TTimer;\n    lTSVer: TLabel;\n    lsTSVer: TLabel;\n    lWrapVer: TLabel;\n    lsWrapVer: TLabel;\n    bLicense: TButton;\n    gbDiag: TGroupBox;\n    lsSuppVer: TLabel;\n    cbHideUsers: TCheckBox;\n    gbGeneral: TGroupBox;\n    cbCustomPrg: TCheckBox;\n    procedure FormCreate(Sender: TObject);\n    procedure cbAllowTSConnectionsClick(Sender: TObject);\n    procedure seRDPPortChange(Sender: TObject);\n    procedure bApplyClick(Sender: TObject);\n    procedure bCancelClick(Sender: TObject);\n    procedure bOKClick(Sender: TObject);\n    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);\n    procedure bLicenseClick(Sender: TObject);\n    procedure TimerTimer(Sender: TObject);\n    procedure FormDestroy(Sender: TObject);\n  private\n    { Private declarations }\n  public\n    { Public declarations }\n    function ExecWait(Cmdline: String): Boolean;\n    procedure ReadSettings;\n    procedure WriteSettings;\n  end;\n  FILE_VERSION = record\n    Version: record case Boolean of\n      True: (dw: DWORD);\n      False: (w: record\n        Minor, Major: Word;\n      end;)\n    end;\n    Release, Build: Word;\n    bDebug, bPrerelease, bPrivate, bSpecial: Boolean;\n  end;\n  WTS_SESSION_INFOW = record\n    SessionId: DWORD;\n    Name: packed array [0..33] of WideChar;\n    State: DWORD;\n  end;\n  WTS_SESSION = Array[0..0] of WTS_SESSION_INFOW;\n  PWTS_SESSION_INFOW = ^WTS_SESSION;\n\nconst\n  winstadll = 'winsta.dll';\nvar\n  MainForm: TMainForm;\n  Ready: Boolean = False;\n  Arch: Byte;\n  OldWow64RedirectionValue: LongBool;\n  OldPort: Word;\n  INI: String;\n\nfunction WinStationEnumerateW(hServer: THandle;\n  var ppSessionInfo: PWTS_SESSION_INFOW; var pCount: DWORD): BOOL; stdcall;\n  external winstadll name 'WinStationEnumerateW';\nfunction WinStationFreeMemory(P: Pointer): BOOL; stdcall; external winstadll;\n\nimplementation\n\n{$R *.dfm}\n{$R resource.res}\n\nuses\n  LicenseUnit;\n\nfunction ExpandPath(Path: String): String;\nvar\n  Str: Array[0..511] of Char;\nbegin\n  Result := '';\n  FillChar(Str, 512, 0);\n  if Arch = 64 then\n    Path := StringReplace(Path, '%ProgramFiles%', '%ProgramW6432%', [rfReplaceAll, rfIgnoreCase]);\n  if ExpandEnvironmentStrings(PWideChar(Path), Str, 512) > 0 then\n    Result := Str;\nend;\n\nfunction DisableWowRedirection: Boolean;\ntype\n  TFunc = function(var Wow64FsEnableRedirection: LongBool): LongBool; stdcall;\nvar\n  hModule: THandle;\n  Wow64DisableWow64FsRedirection: TFunc;\nbegin\n  Result := False;\n  hModule := GetModuleHandle(kernel32);\n  if hModule <> 0 then\n    Wow64DisableWow64FsRedirection := GetProcAddress(hModule, 'Wow64DisableWow64FsRedirection')\n  else\n    Exit;\n  if @Wow64DisableWow64FsRedirection <> nil then\n    Result := Wow64DisableWow64FsRedirection(OldWow64RedirectionValue);\nend;\n\nfunction RevertWowRedirection: Boolean;\ntype\n  TFunc = function(var Wow64RevertWow64FsRedirection: LongBool): LongBool; stdcall;\nvar\n  hModule: THandle;\n  Wow64RevertWow64FsRedirection: TFunc;\nbegin\n  Result := False;\n  hModule := GetModuleHandle(kernel32);\n  if hModule <> 0 then\n    Wow64RevertWow64FsRedirection := GetProcAddress(hModule, 'Wow64RevertWow64FsRedirection')\n  else\n    Exit;\n  if @Wow64RevertWow64FsRedirection <> nil then\n    Result := Wow64RevertWow64FsRedirection(OldWow64RedirectionValue);\nend;\n\nfunction GetFileVersion(const FileName: TFileName; var FileVersion: FILE_VERSION): Boolean;\ntype\n  VS_VERSIONINFO = record\n    wLength, wValueLength, wType: Word;\n    szKey: Array[1..16] of WideChar;\n    Padding1: Word;\n    Value: VS_FIXEDFILEINFO;\n    Padding2, Children: Word;\n  end;\n  PVS_VERSIONINFO = ^VS_VERSIONINFO;\nconst\n  VFF_DEBUG = 1;\n  VFF_PRERELEASE = 2;\n  VFF_PRIVATE = 8;\n  VFF_SPECIAL = 32;\nvar\n  hFile: HMODULE;\n  hResourceInfo: HRSRC;\n  VersionInfo: PVS_VERSIONINFO;\nbegin\n  Result := False;\n\n  hFile := LoadLibraryEx(PWideChar(FileName), 0, LOAD_LIBRARY_AS_DATAFILE);\n  if hFile = 0 then\n    Exit;\n\n  hResourceInfo := FindResource(hFile, PWideChar(1), PWideChar($10));\n  if hResourceInfo = 0 then\n    Exit;\n\n  VersionInfo := Pointer(LoadResource(hFile, hResourceInfo));\n  if VersionInfo = nil then\n    Exit;\n\n  FileVersion.Version.dw := VersionInfo.Value.dwFileVersionMS;\n  FileVersion.Release := Word(VersionInfo.Value.dwFileVersionLS shr 16);\n  FileVersion.Build := Word(VersionInfo.Value.dwFileVersionLS);\n  FileVersion.bDebug := (VersionInfo.Value.dwFileFlags and VFF_DEBUG) = VFF_DEBUG;\n  FileVersion.bPrerelease := (VersionInfo.Value.dwFileFlags and VFF_PRERELEASE) = VFF_PRERELEASE;\n  FileVersion.bPrivate := (VersionInfo.Value.dwFileFlags and VFF_PRIVATE) = VFF_PRIVATE;\n  FileVersion.bSpecial := (VersionInfo.Value.dwFileFlags and VFF_SPECIAL) = VFF_SPECIAL;\n\n  FreeLibrary(hFile);\n  Result := True;\nend;\n\nfunction IsWrapperInstalled(var WrapperPath: String): ShortInt;\nvar\n  TermServiceHost,\n  TermServicePath: String;\n  Reg: TRegistry;\nbegin\n  Result := -1;\n  WrapperPath := '';\n  Reg := TRegistry.Create;\n  Reg.RootKey := HKEY_LOCAL_MACHINE;\n  if not Reg.OpenKeyReadOnly('\\SYSTEM\\CurrentControlSet\\Services\\TermService') then begin\n    Reg.Free;\n    Exit;\n  end;\n  TermServiceHost := Reg.ReadString('ImagePath');\n  Reg.CloseKey;\n  if Pos('svchost.exe', LowerCase(TermServiceHost)) = 0 then\n  begin\n    Result := 2;\n    Reg.Free;\n    Exit;\n  end;\n  if not Reg.OpenKeyReadOnly('\\SYSTEM\\CurrentControlSet\\Services\\TermService\\Parameters') then\n  begin\n    Reg.Free;\n    Exit;\n  end;\n  TermServicePath := Reg.ReadString('ServiceDll');\n  Reg.CloseKey;\n  Reg.Free;\n  if (Pos('termsrv.dll', LowerCase(TermServicePath)) = 0)\n  and (Pos('rdpwrap.dll', LowerCase(TermServicePath)) = 0) then\n  begin\n    Result := 2;\n    Exit;\n  end;\n\n  if Pos('rdpwrap.dll', LowerCase(TermServicePath)) > 0 then begin\n    WrapperPath := TermServicePath;\n    Result := 1;\n  end else\n    Result := 0;\nend;\n\nfunction GetTermSrvState: ShortInt;\ntype\n  SERVICE_STATUS_PROCESS = record\n    dwServiceType,\n    dwCurrentState,\n    dwControlsAccepted,\n    dwWin32ExitCode,\n    dwServiceSpecificExitCode,\n    dwCheckPoint,\n    dwWaitHint,\n    dwProcessId,\n    dwServiceFlags: DWORD;\n  end;\n  PSERVICE_STATUS_PROCESS = ^SERVICE_STATUS_PROCESS;\nconst\n  SvcName = 'TermService';\nvar\n  hSC: SC_HANDLE;\n  hSvc: THandle;\n  lpServiceStatusProcess: PSERVICE_STATUS_PROCESS;\n  Buf: Pointer;\n  cbBufSize, pcbBytesNeeded: Cardinal;\nbegin\n  Result := -1;\n  hSC := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT);\n  if hSC = 0 then\n    Exit;\n\n  hSvc := OpenService(hSC, PWideChar(SvcName), SERVICE_QUERY_STATUS);\n  if hSvc = 0 then\n  begin\n    CloseServiceHandle(hSC);\n    Exit;\n  end;\n\n  if QueryServiceStatusEx(hSvc, SC_STATUS_PROCESS_INFO, nil, 0, pcbBytesNeeded) then\n    Exit;\n\n  cbBufSize := pcbBytesNeeded;\n  GetMem(Buf, cbBufSize);\n\n  if not QueryServiceStatusEx(hSvc, SC_STATUS_PROCESS_INFO, Buf, cbBufSize, pcbBytesNeeded) then begin\n    FreeMem(Buf, cbBufSize);\n    CloseServiceHandle(hSvc);\n    CloseServiceHandle(hSC);\n    Exit;\n  end else begin\n    lpServiceStatusProcess := Buf;\n    Result := ShortInt(lpServiceStatusProcess^.dwCurrentState);\n  end;\n  FreeMem(Buf, cbBufSize);\n  CloseServiceHandle(hSvc);\n  CloseServiceHandle(hSC);\nend;\n\nfunction IsListenerWorking: Boolean;\nvar\n  pCount: DWORD;\n  SessionInfo: PWTS_SESSION_INFOW;\n  I: Integer;\nbegin\n  Result := False;\n  if not WinStationEnumerateW(0, SessionInfo, pCount) then\n    Exit;\n  for I := 0 to pCount - 1 do\n    if SessionInfo^[I].Name = 'RDP-Tcp' then begin\n      Result := True;\n      Break;\n    end;\n  WinStationFreeMemory(SessionInfo);\nend;\n\nfunction ExtractResText(ResName: String): String;\nvar\n  ResStream: TResourceStream;\n  Str: TStringList;\nbegin\n  ResStream := TResourceStream.Create(HInstance, ResName, RT_RCDATA);\n  Str := TStringList.Create;\n  try\n    Str.LoadFromStream(ResStream);\n  except\n\n  end;\n  ResStream.Free;\n  Result := Str.Text;\n  Str.Free;\nend;\n\nfunction TMainForm.ExecWait(Cmdline: String): Boolean;\nvar\n  si: STARTUPINFO;\n  pi: PROCESS_INFORMATION;\nbegin\n  Result := False;\n  ZeroMemory(@si, sizeof(si));\n  si.cb := sizeof(si);\n  si.dwFlags := STARTF_USESHOWWINDOW;\n  si.wShowWindow := SW_HIDE;\n  UniqueString(Cmdline);\n  if not CreateProcess(nil, PWideChar(Cmdline), nil, nil, True, 0, nil, nil, si, pi) then begin\n    MessageBox(Handle,\n      PWideChar('CreateProcess error (code: ' + IntToStr(GetLastError) + ').'),\n      'Error', MB_ICONERROR or MB_OK);\n    Exit;\n  end;\n  CloseHandle(pi.hThread);\n  WaitForSingleObject(pi.hProcess, INFINITE);\n  CloseHandle(pi.hProcess);\n  Result := True;\nend;\n\nprocedure TMainForm.ReadSettings;\nvar\n  Reg: TRegistry;\n  SecurityLayer, UserAuthentication: Integer;\nbegin\n  Reg := TRegistry.Create;\n  Reg.RootKey := HKEY_LOCAL_MACHINE;\n  Reg.OpenKeyReadOnly('\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server');\n  try\n    cbAllowTSConnections.Checked := not Reg.ReadBool('fDenyTSConnections');\n  except\n\n  end;\n  try\n    cbSingleSessionPerUser.Checked := Reg.ReadBool('fSingleSessionPerUser');\n  except\n\n  end;\n  try\n    cbCustomPrg.Checked := Reg.ReadBool('HonorLegacySettings');\n  except\n\n  end;\n  Reg.CloseKey;\n\n  Reg.OpenKeyReadOnly('\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp');\n  seRDPPort.Value := 3389;\n  try\n    seRDPPort.Value := Reg.ReadInteger('PortNumber');\n  except\n\n  end;\n  OldPort := seRDPPort.Value;\n  SecurityLayer := 0;\n  UserAuthentication := 0;\n  try\n    SecurityLayer := Reg.ReadInteger('SecurityLayer');\n    UserAuthentication := Reg.ReadInteger('UserAuthentication');\n  except\n\n  end;\n  if (SecurityLayer = 0) and (UserAuthentication = 0) then\n    rgNLA.ItemIndex := 0;\n  if (SecurityLayer = 1) and (UserAuthentication = 0) then\n    rgNLA.ItemIndex := 1;\n  if (SecurityLayer = 2) and (UserAuthentication = 1) then\n    rgNLA.ItemIndex := 2;\n  try\n    rgShadow.ItemIndex := Reg.ReadInteger('Shadow');\n  except\n\n  end;\n  Reg.CloseKey;\n  Reg.OpenKeyReadOnly('\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System');\n  try\n    cbHideUsers.Checked := Reg.ReadBool('dontdisplaylastusername');\n  except\n\n  end;\n  Reg.CloseKey;\n  Reg.Free;\nend;\n\nprocedure TMainForm.WriteSettings;\nvar\n  Reg: TRegistry;\n  SecurityLayer, UserAuthentication: Integer;\nbegin\n  Reg := TRegistry.Create;\n  Reg.RootKey := HKEY_LOCAL_MACHINE;\n  Reg.OpenKey('\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server', True);\n  try\n    Reg.WriteBool('fDenyTSConnections', not cbAllowTSConnections.Checked);\n  except\n\n  end;\n  try\n    Reg.WriteBool('fSingleSessionPerUser', cbSingleSessionPerUser.Checked);\n  except\n\n  end;\n  try\n    Reg.WriteBool('HonorLegacySettings', cbCustomPrg.Checked);\n  except\n\n  end;\n  Reg.CloseKey;\n\n  Reg.OpenKey('\\SYSTEM\\CurrentControlSet\\Control\\Terminal Server\\WinStations\\RDP-Tcp', True);\n  try\n    Reg.WriteInteger('PortNumber', seRDPPort.Value);\n  except\n\n  end;\n  if OldPort <> seRDPPort.Value then\n  begin\n    OldPort := seRDPPort.Value;\n    ExecWait('netsh advfirewall firewall set rule name=\"Remote Desktop\" new localport=' + IntToStr(OldPort));\n  end;\n  case rgNLA.ItemIndex of\n    0: begin\n      SecurityLayer := 0;\n      UserAuthentication := 0;\n    end;\n    1: begin\n      SecurityLayer := 1;\n      UserAuthentication := 0;\n    end;\n    2: begin\n      SecurityLayer := 2;\n      UserAuthentication := 1;\n    end;\n    else begin\n      SecurityLayer := -1;\n      UserAuthentication := -1;\n    end;\n  end;\n  if SecurityLayer >= 0 then begin\n    try\n      Reg.WriteInteger('SecurityLayer', SecurityLayer);\n      Reg.WriteInteger('UserAuthentication', UserAuthentication);\n    except\n\n    end;\n  end;\n  if rgShadow.ItemIndex >= 0 then begin\n    try\n      Reg.WriteInteger('Shadow', rgShadow.ItemIndex);\n    except\n\n    end;\n  end;\n  Reg.CloseKey;\n  Reg.OpenKey('\\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services', True);\n  if rgShadow.ItemIndex >= 0 then begin\n    try\n      Reg.WriteInteger('Shadow', rgShadow.ItemIndex);\n    except\n\n    end;\n  end;\n  Reg.CloseKey;\n  Reg.OpenKey('\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System', True);\n  try\n    Reg.WriteBool('dontdisplaylastusername', cbHideUsers.Checked);\n  except\n\n  end;\n  Reg.CloseKey;\n  Reg.Free;\nend;\n\nfunction CheckSupport(FV: FILE_VERSION): Byte;\nvar\n  VerTxt: String;\nbegin\n  Result := 0;\n  if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 0) then\n    Result := 1;\n  if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 1) then\n    Result := 1;\n  VerTxt := Format('%d.%d.%d.%d',\n  [FV.Version.w.Major, FV.Version.w.Minor, FV.Release, FV.Build]);\n  if Pos('[' + VerTxt + ']', INI) > 0 then\n    Result := 2;\nend;\n\nprocedure TMainForm.TimerTimer(Sender: TObject);\nvar\n  WrapperPath, INIPath: String;\n  FV: FILE_VERSION;\n  L: TStringList;\n  CheckSupp: Boolean;\nbegin\n  CheckSupp := False;\n  case IsWrapperInstalled(WrapperPath) of\n    -1: begin\n      lsWrapper.Caption := 'Unknown';\n      lsWrapper.Font.Color := clGrayText;\n    end;\n    0: begin\n      lsWrapper.Caption := 'Not installed';\n      lsWrapper.Font.Color := clGrayText;\n    end;\n    1: begin\n      lsWrapper.Caption := 'Installed';\n      lsWrapper.Font.Color := clGreen;\n      CheckSupp := True;\n      INIPath := ExtractFilePath(ExpandPath(WrapperPath)) + 'rdpwrap.ini';\n      if not FileExists(INIPath) then\n        CheckSupp := False;\n    end;\n    2: begin\n      lsWrapper.Caption := '3rd-party';\n      lsWrapper.Font.Color := clRed;\n    end;\n  end;\n  case GetTermSrvState of\n    -1, 0: begin\n      lsService.Caption := 'Unknown';\n      lsService.Font.Color := clGrayText;\n    end;\n    SERVICE_STOPPED: begin\n      lsService.Caption := 'Stopped';\n      lsService.Font.Color := clRed;\n    end;\n    SERVICE_START_PENDING: begin\n      lsService.Caption := 'Starting...';\n      lsService.Font.Color := clGrayText;\n    end;\n    SERVICE_STOP_PENDING: begin\n      lsService.Caption := 'Stopping...';\n      lsService.Font.Color := clGrayText;\n    end;\n    SERVICE_RUNNING: begin\n      lsService.Caption := 'Running';\n      lsService.Font.Color := clGreen;\n    end;\n    SERVICE_CONTINUE_PENDING: begin\n      lsService.Caption := 'Resuming...';\n      lsService.Font.Color := clGrayText;\n    end;\n    SERVICE_PAUSE_PENDING: begin\n      lsService.Caption := 'Suspending...';\n      lsService.Font.Color := clGrayText;\n    end;\n    SERVICE_PAUSED: begin\n      lsService.Caption := 'Suspended';\n      lsService.Font.Color := clWindowText;\n    end;\n  end;\n  if IsListenerWorking then begin\n    lsListener.Caption := 'Listening';\n    lsListener.Font.Color := clGreen;\n  end else begin\n    lsListener.Caption := 'Not listening';\n    lsListener.Font.Color := clRed;\n  end;\n  if WrapperPath = '' then begin\n    lsWrapVer.Caption := 'N/A';\n    lsWrapVer.Font.Color := clGrayText;\n  end else\n    if not GetFileVersion(ExpandPath(WrapperPath), FV) then begin\n      lsWrapVer.Caption := 'N/A';\n      lsWrapVer.Font.Color := clGrayText;\n    end else begin\n      lsWrapVer.Caption :=\n      IntToStr(FV.Version.w.Major)+'.'+\n      IntToStr(FV.Version.w.Minor)+'.'+\n      IntToStr(FV.Release)+'.'+\n      IntToStr(FV.Build);\n      lsWrapVer.Font.Color := clWindowText;\n    end;\n  if not GetFileVersion('termsrv.dll', FV) then begin\n    lsTSVer.Caption := 'N/A';\n    lsTSVer.Font.Color := clGrayText;\n  end else begin\n    lsTSVer.Caption :=\n    IntToStr(FV.Version.w.Major)+'.'+\n    IntToStr(FV.Version.w.Minor)+'.'+\n    IntToStr(FV.Release)+'.'+\n    IntToStr(FV.Build);\n    lsTSVer.Font.Color := clWindowText;\n    lsSuppVer.Visible := CheckSupp;\n    if CheckSupp then begin\n      if INI = '' then begin\n        L := TStringList.Create;\n        try\n          L.LoadFromFile(INIPath);\n        except\n\n        end;\n        INI := L.Text;\n        L.Free;\n      end;\n      case CheckSupport(FV) of\n        0: begin\n          lsSuppVer.Caption := '[not supported]';\n          lsSuppVer.Font.Color := clRed;\n        end;\n        1: begin\n          lsSuppVer.Caption := '[supported partially]';\n          lsSuppVer.Font.Color := clOlive;\n        end;\n        2: begin\n          lsSuppVer.Caption := '[fully supported]';\n          lsSuppVer.Font.Color := clGreen;\n        end;\n      end;\n    end;\n  end;\nend;\n\nprocedure TMainForm.bLicenseClick(Sender: TObject);\nbegin\n  LicenseForm.mText.Text := ExtractResText('LICENSE');\n  if LicenseForm.ShowModal <> mrOk then\n    Halt(0);\nend;\n\nprocedure TMainForm.cbAllowTSConnectionsClick(Sender: TObject);\nbegin\n  if Ready then\n    bApply.Enabled := True;\nend;\n\nprocedure TMainForm.seRDPPortChange(Sender: TObject);\nbegin\n  if Ready then\n    bApply.Enabled := True;\nend;\n\nprocedure TMainForm.FormCreate(Sender: TObject);\nvar\n  SI: TSystemInfo;\nbegin\n  GetNativeSystemInfo(SI);\n  case SI.wProcessorArchitecture of\n    0: Arch := 32;\n    6: Arch := 64; // Itanium-based x64\n    9: Arch := 64; // Intel/AMD x64\n    else Arch := 0;\n  end;\n  if Arch = 64 then\n    DisableWowRedirection;\n  ReadSettings;\n  Ready := True;\nend;\n\nprocedure TMainForm.FormDestroy(Sender: TObject);\nbegin\n  if Arch = 64 then\n    RevertWowRedirection;\nend;\n\nprocedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);\nbegin\n  if bApply.Enabled then\n    CanClose := MessageBox(Handle, 'Settings are not saved. Do you want to exit?',\n    'Warning', mb_IconWarning or mb_YesNo) = mrYes;\nend;\n\nprocedure TMainForm.bOKClick(Sender: TObject);\nbegin\n  if bApply.Enabled then begin\n    WriteSettings;\n    bApply.Enabled := False;\n  end;\n  Close;\nend;\n\nprocedure TMainForm.bCancelClick(Sender: TObject);\nbegin\n  Close;\nend;\n\nprocedure TMainForm.bApplyClick(Sender: TObject);\nbegin\n  WriteSettings;\n  bApply.Enabled := False;\nend;\n\nend.\n"
  },
  {
    "path": "src-rdpconfig/RDPConf.dpr",
    "content": "{\n  Copyright 2014 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n}\n\nprogram RDPConf;\n\nuses\n  Forms,\n  MainUnit in 'MainUnit.pas' {MainForm},\n  LicenseUnit in 'LicenseUnit.pas' {LicenseForm};\n\n{$R *.res}\n\nbegin\n  Application.Initialize;\n  Application.MainFormOnTaskbar := True;\n  Application.Title := 'Remote Desktop Protocol Configuration';\n  Application.CreateForm(TMainForm, MainForm);\n  Application.CreateForm(TLicenseForm, LicenseForm);\n  Application.Run;\nend.\n"
  },
  {
    "path": "src-rdpconfig/RDPConf.dproj",
    "content": "﻿\t<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n\t\t<PropertyGroup>\n\t\t\t<ProjectGuid>{A7CB4C30-85F5-4D96-B510-6F0CDCF7C2DA}</ProjectGuid>\n\t\t\t<ProjectVersion>12.0</ProjectVersion>\n\t\t\t<MainSource>RDPConf.dpr</MainSource>\n\t\t\t<Config Condition=\"'$(Config)'==''\">Debug</Config>\n\t\t\t<DCC_DCCCompiler>DCC32</DCC_DCCCompiler>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Config)'=='Base' or '$(Base)'!=''\">\n\t\t\t<Base>true</Base>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Config)'=='Release' or '$(Cfg_1)'!=''\">\n\t\t\t<Cfg_1>true</Cfg_1>\n\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t<Base>true</Base>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Config)'=='Debug' or '$(Cfg_2)'!=''\">\n\t\t\t<Cfg_2>true</Cfg_2>\n\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t<Base>true</Base>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Base)'!=''\">\n\t\t\t<DCC_ExeOutput>..\\bin\\</DCC_ExeOutput>\n\t\t\t<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>\n\t\t\t<DCC_DependencyCheckOutputName>..\\bin\\RDPConf.exe</DCC_DependencyCheckOutputName>\n\t\t\t<DCC_ImageBase>00400000</DCC_ImageBase>\n\t\t\t<DCC_Platform>x86</DCC_Platform>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Cfg_1)'!=''\">\n\t\t\t<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>\n\t\t\t<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>\n\t\t\t<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>\n\t\t\t<DCC_DebugInformation>false</DCC_DebugInformation>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Cfg_2)'!=''\">\n\t\t\t<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>\n\t\t</PropertyGroup>\n\t\t<ItemGroup>\n\t\t\t<DelphiCompile Include=\"RDPConf.dpr\">\n\t\t\t\t<MainSource>MainSource</MainSource>\n\t\t\t</DelphiCompile>\n\t\t\t<DCCReference Include=\"MainUnit.pas\">\n\t\t\t\t<Form>MainForm</Form>\n\t\t\t</DCCReference>\n\t\t\t<DCCReference Include=\"LicenseUnit.pas\">\n\t\t\t\t<Form>LicenseForm</Form>\n\t\t\t</DCCReference>\n\t\t\t<BuildConfiguration Include=\"Base\">\n\t\t\t\t<Key>Base</Key>\n\t\t\t</BuildConfiguration>\n\t\t\t<BuildConfiguration Include=\"Release\">\n\t\t\t\t<Key>Cfg_1</Key>\n\t\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t</BuildConfiguration>\n\t\t\t<BuildConfiguration Include=\"Debug\">\n\t\t\t\t<Key>Cfg_2</Key>\n\t\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t</BuildConfiguration>\n\t\t</ItemGroup>\n\t\t<Import Project=\"$(BDS)\\Bin\\CodeGear.Delphi.Targets\" Condition=\"Exists('$(BDS)\\Bin\\CodeGear.Delphi.Targets')\"/>\n\t\t<ProjectExtensions>\n\t\t\t<Borland.Personality>Delphi.Personality.12</Borland.Personality>\n\t\t\t<Borland.ProjectType/>\n\t\t\t<BorlandProject>\n\t\t\t\t<Delphi.Personality>\n\t\t\t\t\t<Source>\n\t\t\t\t\t\t<Source Name=\"MainSource\">RDPConf.dpr</Source>\n\t\t\t\t\t</Source>\n\t\t\t\t\t<Parameters>\n\t\t\t\t\t\t<Parameters Name=\"UseLauncher\">False</Parameters>\n\t\t\t\t\t\t<Parameters Name=\"LoadAllSymbols\">True</Parameters>\n\t\t\t\t\t\t<Parameters Name=\"LoadUnspecifiedSymbols\">False</Parameters>\n\t\t\t\t\t</Parameters>\n\t\t\t\t\t<VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"IncludeVerInfo\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"AutoIncBuild\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"MajorVer\">1</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"MinorVer\">0</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Release\">0</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Build\">0</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Debug\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"PreRelease\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Special\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Private\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"DLL\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Locale\">1033</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"CodePage\">1252</VersionInfo>\n\t\t\t\t\t</VersionInfo>\n\t\t\t\t\t<VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"CompanyName\">Stas&apos;M Corp.</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"FileDescription\">RDP Configuration Program</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"FileVersion\">1.0.0.0</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"InternalName\">RDPConf</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"LegalCopyright\">Copyright © Stas&apos;M Corp. 2014</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"LegalTrademarks\">Stas&apos;M Corp.</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"OriginalFilename\">RDPConf.exe</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"ProductName\">RDP Host Support</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"ProductVersion\">1.4.0.0</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"Comments\">http://stascorp.com</VersionInfoKeys>\n\t\t\t\t\t</VersionInfoKeys>\n\t\t\t\t\t<Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\bcboffice2k140.bpl\">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\bcbofficexp140.bpl\">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\dcloffice2k140.bpl\">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\dclofficexp140.bpl\">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>\n\t\t\t\t\t</Excluded_Packages>\n\t\t\t\t</Delphi.Personality>\n\t\t\t</BorlandProject>\n\t\t\t<ProjectFileVersion>12</ProjectFileVersion>\n\t\t</ProjectExtensions>\n\t</Project>\n"
  },
  {
    "path": "src-x86-binarymaster/LiteINI.pas",
    "content": "{\n  Copyright 2014 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n}\n\nunit LiteINI;\n\ninterface\n\nuses\n  SysUtils;\n\ntype\n  SList = Array of String;\n  INIValue = record\n    Name: String;\n    Value: String;\n  end;\n  INISection = record\n    Name: String;\n    Values: Array of INIValue;\n  end;\n  INIFile = Array of INISection;\n\nprocedure SListClear(var List: SList);\nfunction SListAppend(var List: SList; S: String): Integer;\nfunction SListFind(List: SList; Value: String): Integer;\nfunction INIFindSection(INI: INIFile; Section: String): Integer;\nfunction INIFindValue(INI: INIFile; Section: Integer; Value: String): Integer;\nfunction INIAddSection(var INI: INIFile; Section: String): Integer;\nfunction INIAddValue(var INI: INIFile; Section: Integer; ValueName, Value: String): Integer;\nprocedure INIUnload(var INI: INIFile);\nprocedure INILoad(var INI: INIFile; FileName: String);\nfunction INISectionExists(INI: INIFile; Section: String): Boolean;\nfunction INIValueExists(INI: INIFile; Section: String; Value: String): Boolean;\nfunction INIReadSectionLowAPI(INI: INIFile; Section: Integer; var List: SList): Boolean;\nfunction INIReadSection(INI: INIFile; Section: String): SList;\nfunction INIReadStringLowAPI(INI: INIFile; Section, Value: Integer; var Str: String): Boolean;\nfunction INIReadString(INI: INIFile; Section, Value, Default: String): String;\nfunction INIReadInt(INI: INIFile; Section, Value: String; Default: Integer): Integer;\nfunction INIReadDWord(INI: INIFile; Section, Value: String; Default: Cardinal): Cardinal;\nfunction INIReadIntHex(INI: INIFile; Section, Value: String; Default: Integer): Integer;\nfunction INIReadDWordHex(INI: INIFile; Section, Value: String; Default: Cardinal): Cardinal;\nfunction INIReadBool(INI: INIFile; Section, Value: String; Default: Boolean): Boolean;\nfunction INIReadBytes(INI: INIFile; Section, Value: String): TBytes;\nfunction INIReadBytesDef(INI: INIFile; Section, Value: String; Default: TBytes): TBytes;\n\nimplementation\n\nprocedure SListClear(var List: SList);\nbegin\n  SetLength(List, 0);\nend;\n\nfunction SListAppend(var List: SList; S: String): Integer;\nbegin\n  SetLength(List, Length(List) + 1);\n  List[Length(List) - 1] := S;\n  Result := Length(List) - 1;\nend;\n\nfunction SListFind(List: SList; Value: String): Integer;\nvar\n  I: Integer;\nbegin\n  Result := -1;\n  for I := 0 to Length(List) - 1 do\n    if List[I] = Value then begin\n      Result := I;\n      Break;\n    end;\nend;\n\nfunction INIFindSection(INI: INIFile; Section: String): Integer;\nvar\n  I: Integer;\nbegin\n  Result := -1;\n  for I := 0 to Length(INI) - 1 do\n    if INI[I].Name = Section then begin\n      Result := I;\n      Exit;\n    end;\nend;\n\nfunction INIFindValue(INI: INIFile; Section: Integer; Value: String): Integer;\nvar\n  I: Integer;\nbegin\n  Result := -1;\n  if (Section < 0) or (Section >= Length(INI)) then\n    Exit;\n  for I := 0 to Length(INI[Section].Values) - 1 do\n    if INI[Section].Values[I].Name = Value then begin\n      Result := I;\n      Exit;\n    end;\nend;\n\nfunction INIAddSection(var INI: INIFile; Section: String): Integer;\nbegin\n  Result := INIFindSection(INI, Section);\n  if Result >= 0 then\n    Exit;\n  Result := Length(INI);\n  SetLength(INI, Result + 1);\n  INI[Result].Name := Section;\n  SetLength(INI[Result].Values, 0);\nend;\n\nfunction INIAddValue(var INI: INIFile; Section: Integer; ValueName, Value: String): Integer;\nvar\n  I: Integer;\nbegin\n  Result := -1;\n  if (Section < 0) or (Section >= Length(INI)) then\n    Exit;\n  I := INIFindValue(INI, Section, ValueName);\n  if I = -1 then begin\n    Result := Length(INI[Section].Values);\n    SetLength(INI[Section].Values, Result + 1);\n    INI[Section].Values[Result].Name := ValueName;\n    INI[Section].Values[Result].Value := Value;\n  end else begin\n    INI[Section].Values[I].Value := Value;\n    Result := I;\n  end;\nend;\n\nprocedure INIUnload(var INI: INIFile);\nbegin\n  SetLength(INI, 0);\nend;\n\nprocedure INILoad(var INI: INIFile; FileName: String);\nvar\n  F: TextFile;\n  S, ValueName, Value: String;\n  INIList: SList;\n  I, Sect: Integer;\nbegin\n  INIUnload(INI);\n  if not FileExists(FileName) then\n    Exit;\n  AssignFile(F, FileName);\n  Reset(F);\n  // Read and filter lines\n  while not EOF(F) do begin\n    Readln(F, S);\n    if (Pos(';', S) <> 1)\n    and (Pos('#', S) <> 1)\n    and (\n      ((Pos('[', S) > 0) and (Pos(']', S) > 0)) or\n      (Pos('=', S) > 0)\n    )\n    then\n      SListAppend(INIList, S);\n  end;\n  CloseFile(F);\n  // Parse 2 (parse format)\n  Sect := -1;\n  for I := 0 to Length(INIList) - 1 do begin\n    S := Trim(INIList[I]);\n    if Length(S) >= 2 then\n      if (S[1] = '[') and (S[Length(S)] = ']') then begin\n        S := Trim(Copy(S, 2, Length(S) - 2));\n        Sect := INIAddSection(INI, S);\n        Continue;\n      end;\n    S := INIList[I];\n    if Pos('=', S) > 0 then begin\n      ValueName := Trim(Copy(S, 1, Pos('=', S) - 1));\n      Value := Copy(S, Pos('=', S) + 1, Length(S) - Pos('=', S));\n      if Sect = -1 then\n        Sect := INIAddSection(INI, '');\n      INIAddValue(INI, Sect, ValueName, Value);\n    end;\n  end;\nend;\n\nfunction INISectionExists(INI: INIFile; Section: String): Boolean;\nbegin\n  Result := INIFindSection(INI, Section) > -1;\nend;\n\nfunction INIValueExists(INI: INIFile; Section: String; Value: String): Boolean;\nvar\n  Sect: Integer;\nbegin\n  Sect := INIFindSection(INI, Section);\n  Result := INIFindValue(INI, Sect, Value) > -1;\nend;\n\nfunction INIReadSectionLowAPI(INI: INIFile; Section: Integer; var List: SList): Boolean;\nvar\n  I: Integer;\nbegin\n  Result := False;\n  SetLength(List, 0);\n  if (Section < 0) or (Section >= Length(INI)) then\n    Exit;\n  for I := 0 to Length(INI[Section].Values) - 1 do\n    SListAppend(List, INI[Section].Values[I].Name);\n  Result := True;\nend;\n\nfunction INIReadSection(INI: INIFile; Section: String): SList;\nvar\n  Sect: Integer;\nbegin\n  Sect := INIFindSection(INI, Section);\n  INIReadSectionLowAPI(INI, Sect, Result);\nend;\n\nfunction INIReadStringLowAPI(INI: INIFile; Section, Value: Integer; var Str: String): Boolean;\nbegin\n  Result := False;\n  if (Section < 0) or (Section >= Length(INI)) then\n    Exit;\n  if (Value < 0) or (Value >= Length(INI[Section].Values)) then\n    Exit;\n  Str := INI[Section].Values[Value].Value;\n  Result := True;\nend;\n\nfunction INIReadString(INI: INIFile; Section, Value, Default: String): String;\nvar\n  Sect, Val: Integer;\nbegin\n  Sect := INIFindSection(INI, Section);\n  Val := INIFindValue(INI, Sect, Value);\n  if not INIReadStringLowAPI(INI, Sect, Val, Result) then\n    Result := Default;\nend;\n\nfunction INIReadInt(INI: INIFile; Section, Value: String; Default: Integer): Integer;\nvar\n  S: String;\n  E: Integer;\nbegin\n  S := INIReadString(INI, Section, Value, '');\n  Val(S, Result, E);\n  if E <> 0 then\n    Result := Default;\nend;\n\nfunction INIReadDWord(INI: INIFile; Section, Value: String; Default: Cardinal): Cardinal;\nvar\n  S: String;\n  E: Integer;\nbegin\n  S := INIReadString(INI, Section, Value, '');\n  Val(S, Result, E);\n  if E <> 0 then\n    Result := Default;\nend;\n\nfunction INIReadIntHex(INI: INIFile; Section, Value: String; Default: Integer): Integer;\nvar\n  S: String;\n  E: Integer;\nbegin\n  S := INIReadString(INI, Section, Value, '');\n  Val('$'+S, Result, E);\n  if E <> 0 then\n    Result := Default;\nend;\n\nfunction INIReadDWordHex(INI: INIFile; Section, Value: String; Default: Cardinal): Cardinal;\nvar\n  S: String;\n  E: Integer;\nbegin\n  S := INIReadString(INI, Section, Value, '');\n  Val('$'+S, Result, E);\n  if E <> 0 then\n    Result := Default;\nend;\n\nfunction INIReadBool(INI: INIFile; Section, Value: String; Default: Boolean): Boolean;\nvar\n  S: String;\n  I: Cardinal;\n  E: Integer;\nbegin\n  S := INIReadString(INI, Section, Value, '');\n  Val(S, I, E);\n  if E <> 0 then\n    Result := Default\n  else\n    Result := I > 0;\nend;\n\nfunction StringToBytes(S: String; var B: TBytes): Boolean;\nvar\n  I: Integer;\nbegin\n  Result := False;\n  if Odd(Length(S)) then\n    Exit;\n  SetLength(B, Length(S) div 2);\n  for I := 0 to Length(B) - 1 do begin\n    B[I] := 0;\n    case S[(I*2)+2] of\n      '0': ;\n      '1': B[I] := B[I] or $1;\n      '2': B[I] := B[I] or $2;\n      '3': B[I] := B[I] or $3;\n      '4': B[I] := B[I] or $4;\n      '5': B[I] := B[I] or $5;\n      '6': B[I] := B[I] or $6;\n      '7': B[I] := B[I] or $7;\n      '8': B[I] := B[I] or $8;\n      '9': B[I] := B[I] or $9;\n      'A','a': B[I] := B[I] or $A;\n      'B','b': B[I] := B[I] or $B;\n      'C','c': B[I] := B[I] or $C;\n      'D','d': B[I] := B[I] or $D;\n      'E','e': B[I] := B[I] or $E;\n      'F','f': B[I] := B[I] or $F;\n      else Exit;\n    end;\n    case S[(I*2)+1] of\n      '0': ;\n      '1': B[I] := B[I] or $10;\n      '2': B[I] := B[I] or $20;\n      '3': B[I] := B[I] or $30;\n      '4': B[I] := B[I] or $40;\n      '5': B[I] := B[I] or $50;\n      '6': B[I] := B[I] or $60;\n      '7': B[I] := B[I] or $70;\n      '8': B[I] := B[I] or $80;\n      '9': B[I] := B[I] or $90;\n      'A','a': B[I] := B[I] or $A0;\n      'B','b': B[I] := B[I] or $B0;\n      'C','c': B[I] := B[I] or $C0;\n      'D','d': B[I] := B[I] or $D0;\n      'E','e': B[I] := B[I] or $E0;\n      'F','f': B[I] := B[I] or $F0;\n      else Exit;\n    end;\n  end;\n  Result := True;\nend;\n\nfunction INIReadBytes(INI: INIFile; Section, Value: String): TBytes;\nvar\n  S: String;\nbegin\n  S := INIReadString(INI, Section, Value, '');\n  if not StringToBytes(S, Result) then\n    SetLength(Result, 0);\nend;\n\nfunction INIReadBytesDef(INI: INIFile; Section, Value: String; Default: TBytes): TBytes;\nvar\n  S: String;\nbegin\n  S := INIReadString(INI, Section, Value, '');\n  if not StringToBytes(S, Result) then\n    Result := Default;\nend;\n\nend.\n"
  },
  {
    "path": "src-x86-binarymaster/rdpwrap.dpr",
    "content": "{\n  Copyright 2014 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n}\n\nlibrary rdpwrap;\n\nuses\n  SysUtils,\n  Windows,\n  TlHelp32,\n  LiteINI;\n\n{$R rdpwrap.res}\n\n// Hook core definitions\n\ntype\n  OldCode = packed record\n    One: DWORD;\n    two: Word;\n  end;\n\n  far_jmp = packed record\n    PushOp: Byte;\n    PushArg: Pointer;\n    RetOp: Byte;\n  end;\n\n  mov_far_jmp = packed record\n    MovOp: Byte;\n    MovArg: Byte;\n    PushOp: Byte;\n    PushArg: Pointer;\n    RetOp: Byte;\n  end;\n\n  TTHREADENTRY32 = packed record\n    dwSize: DWORD;\n    cntUsage: DWORD;\n    th32ThreadID: DWORD;\n    th32OwnerProcessID: DWORD;\n    tpBasePri: LongInt;\n    tpDeltaPri: LongInt;\n    dwFlags: DWORD;\n  end;\n  //IntArray = Array of Integer;\n  FILE_VERSION = record\n    Version: record case Boolean of\n      True: (dw: DWORD);\n      False: (w: record\n        Minor, Major: Word;\n      end;)\n    end;\n    Release, Build: Word;\n    bDebug, bPrerelease, bPrivate, bSpecial: Boolean;\n  end;\n\nconst\n  THREAD_SUSPEND_RESUME = 2;\n  TH32CS_SNAPTHREAD = 4;\nvar\n  INI: INIFile;\n  LogFile: String = '\\rdpwrap.txt';\n  bw: {$if CompilerVersion>=16} NativeUInt {$else} DWORD {$endif};\n  IsHooked: Boolean = False;\n\n// Unhooked import\n\nfunction OpenThread(dwDesiredAccess: DWORD; bInheritHandle: BOOL;\n  dwThreadId: DWORD): DWORD; stdcall; external kernel32;\n\nfunction CreateToolhelp32Snapshot(dwFlags, th32ProcessID: DWORD): DWORD;\n  stdcall; external kernel32;\n\nfunction Thread32First(hSnapshot: THandle; var lpte: TTHREADENTRY32): bool;\n  stdcall; external kernel32;\n\nfunction Thread32Next(hSnapshot: THandle; var lpte: TTHREADENTRY32): bool;\n  stdcall; external kernel32;\n\n// Wrapped import\n\nvar\n  TSMain: function(dwArgc: DWORD; lpszArgv: PWideChar): DWORD; stdcall;\n  TSGlobals: function(lpGlobalData: Pointer): DWORD; stdcall;\n\n// Hooked import and vars\n\nvar\n  SLGetWindowsInformationDWORD: function(pwszValueName: PWideChar;\n    pdwValue: PDWORD): HRESULT; stdcall;\n  TermSrvBase: Pointer;\n  FV: FILE_VERSION;\n\nvar\n  Stub_SLGetWindowsInformationDWORD: far_jmp;\n  Old_SLGetWindowsInformationDWORD: OldCode;\n\n// Main code\n\nprocedure WriteLog(S: AnsiString);\nvar\n  F: TextFile;\nbegin\n  if not FileExists(LogFile) then\n    Exit;\n  AssignFile(F, LogFile);\n  Append(F);\n  Write(F, S+#13#10);\n  CloseFile(F);\nend;\n\nfunction GetModuleHandleEx(dwFlags: DWORD; lpModuleName: PWideChar;\n  var phModule: HMODULE): BOOL; stdcall; external kernel32 name 'GetModuleHandleExW';\n\nfunction GetCurrentModule: HMODULE;\nconst\n  GET_MODULE_HANDLE_EX_FLAG_PIN = 1;\n  GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2;\n  GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS = 4;\nbegin\n  Result := 0;\n  GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, @GetCurrentModule, Result);\nend;\n\nfunction GetBinaryPath: String;\nvar\n  Buf: Array[0..511] of Byte;\nbegin\n  ZeroMemory(@Buf[0], Length(Buf));\n  GetModuleFileName(GetCurrentModule, PWideChar(@Buf[0]), Length(Buf));\n  Result := PWideChar(@Buf[0]);\nend;\n\nprocedure StopThreads;\nvar\n  h, CurrTh, ThrHandle, CurrPr: DWORD;\n  Thread: TTHREADENTRY32;\nbegin\n  CurrTh := GetCurrentThreadId;\n  CurrPr := GetCurrentProcessId;\n  h := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);\n  if h <> INVALID_HANDLE_VALUE then\n  begin\n    Thread.dwSize := SizeOf(TTHREADENTRY32);\n    if Thread32First(h, Thread) then\n      repeat\n        if (Thread.th32ThreadID <> CurrTh) and\n          (Thread.th32OwnerProcessID = CurrPr) then\n        begin\n          ThrHandle := OpenThread(THREAD_SUSPEND_RESUME, false,\n            Thread.th32ThreadID);\n          if ThrHandle > 0 then\n          begin\n            SuspendThread(ThrHandle);\n            CloseHandle(ThrHandle);\n          end;\n        end;\n      until not Thread32Next(h, Thread);\n      CloseHandle(h);\n  end;\nend;\n\nprocedure RunThreads;\nvar\n  h, CurrTh, ThrHandle, CurrPr: DWORD;\n  Thread: TTHREADENTRY32;\nbegin\n  CurrTh := GetCurrentThreadId;\n  CurrPr := GetCurrentProcessId;\n  h := CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);\n  if h <> INVALID_HANDLE_VALUE then\n  begin\n    Thread.dwSize := SizeOf(TTHREADENTRY32);\n    if Thread32First(h, Thread) then\n      repeat\n        if (Thread.th32ThreadID <> CurrTh) and\n          (Thread.th32OwnerProcessID = CurrPr) then\n        begin\n          ThrHandle := OpenThread(THREAD_SUSPEND_RESUME, false,\n            Thread.th32ThreadID);\n          if ThrHandle > 0 then\n          begin\n            ResumeThread(ThrHandle);\n            CloseHandle(ThrHandle);\n          end;\n        end;\n      until not Thread32Next(h, Thread);\n      CloseHandle(h);\n  end;\nend;\n\nfunction GetModuleAddress(ModuleName: String; ProcessId: DWORD; var BaseAddr: Pointer; var BaseSize: DWORD): Boolean;\nvar\n  hSnap: THandle;\n  md: MODULEENTRY32;\nbegin\n  Result := False;\n  hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, ProcessId);\n  if hSnap = INVALID_HANDLE_VALUE Then\n    Exit;\n  md.dwSize := SizeOf(MODULEENTRY32);\n  if Module32First(hSnap, md) then\n  begin\n    if LowerCase(ExtractFileName(md.szExePath)) = LowerCase(ModuleName) then\n    begin\n      Result := True;\n      BaseAddr := Pointer(md.modBaseAddr);\n      BaseSize := md.modBaseSize;\n      CloseHandle(hSnap);\n      Exit;\n    end;\n    while Module32Next(hSnap, md) Do\n    begin\n      if LowerCase(ExtractFileName(md.szExePath)) = LowerCase(ModuleName) then\n      begin\n        Result := True;\n        BaseAddr := Pointer(md.modBaseAddr);\n        BaseSize := md.modBaseSize;\n        Break;\n      end;\n    end;\n  end;\n  CloseHandle(hSnap);\nend;\n\n{procedure FindMem(Mem: Pointer; MemSz: DWORD; Buf: Pointer; BufSz: DWORD;\n  From: DWORD; var A: IntArray);\nvar\n  I: Integer;\nbegin\n  SetLength(A, 0);\n  I:=From;\n  if From>0 then\n    Inc(PByte(Mem), From);\n  while I < MemSz - BufSz + 1 do\n  begin\n    if (not IsBadReadPtr(Mem, BufSz)) and (CompareMem(Mem, Buf, BufSz)) then\n    begin\n      SetLength(A, Length(A)+1);\n      A[Length(A)-1] := I;\n    end;\n    Inc(I);\n    Inc(PByte(Mem));\n  end;\nend;}\n\nfunction GetModuleVersion(const ModuleName: String; var FileVersion: FILE_VERSION): Boolean;\ntype\n  VS_VERSIONINFO = record\n    wLength, wValueLength, wType: Word;\n    szKey: Array[1..16] of WideChar;\n    Padding1: Word;\n    Value: VS_FIXEDFILEINFO;\n    Padding2, Children: Word;\n  end;\n  PVS_VERSIONINFO = ^VS_VERSIONINFO;\nconst\n  VFF_DEBUG = 1;\n  VFF_PRERELEASE = 2;\n  VFF_PRIVATE = 8;\n  VFF_SPECIAL = 32;\nvar\n  hMod: HMODULE;\n  hResourceInfo: HRSRC;\n  VersionInfo: PVS_VERSIONINFO;\nbegin\n  Result := False;\n\n  if ModuleName = '' then\n    hMod := GetModuleHandle(nil)\n  else\n    hMod := GetModuleHandle(PWideChar(ModuleName));\n  if hMod = 0 then\n    Exit;\n\n  hResourceInfo := FindResource(hMod, PWideChar(1), PWideChar($10));\n  if hResourceInfo = 0 then\n    Exit;\n\n  VersionInfo := Pointer(LoadResource(hMod, hResourceInfo));\n  if VersionInfo = nil then\n    Exit;\n\n  FileVersion.Version.dw := VersionInfo.Value.dwFileVersionMS;\n  FileVersion.Release := Word(VersionInfo.Value.dwFileVersionLS shr 16);\n  FileVersion.Build := Word(VersionInfo.Value.dwFileVersionLS);\n  FileVersion.bDebug := (VersionInfo.Value.dwFileFlags and VFF_DEBUG) = VFF_DEBUG;\n  FileVersion.bPrerelease := (VersionInfo.Value.dwFileFlags and VFF_PRERELEASE) = VFF_PRERELEASE;\n  FileVersion.bPrivate := (VersionInfo.Value.dwFileFlags and VFF_PRIVATE) = VFF_PRIVATE;\n  FileVersion.bSpecial := (VersionInfo.Value.dwFileFlags and VFF_SPECIAL) = VFF_SPECIAL;\n\n  Result := True;\nend;\n\nfunction GetFileVersion(const FileName: String; var FileVersion: FILE_VERSION): Boolean;\ntype\n  VS_VERSIONINFO = record\n    wLength, wValueLength, wType: Word;\n    szKey: Array[1..16] of WideChar;\n    Padding1: Word;\n    Value: VS_FIXEDFILEINFO;\n    Padding2, Children: Word;\n  end;\n  PVS_VERSIONINFO = ^VS_VERSIONINFO;\nconst\n  VFF_DEBUG = 1;\n  VFF_PRERELEASE = 2;\n  VFF_PRIVATE = 8;\n  VFF_SPECIAL = 32;\nvar\n  hFile: HMODULE;\n  hResourceInfo: HRSRC;\n  VersionInfo: PVS_VERSIONINFO;\nbegin\n  Result := False;\n\n  hFile := LoadLibraryEx(PWideChar(FileName), 0, LOAD_LIBRARY_AS_DATAFILE);\n  if hFile = 0 then\n    Exit;\n\n  hResourceInfo := FindResource(hFile, PWideChar(1), PWideChar($10));\n  if hResourceInfo = 0 then\n    Exit;\n\n  VersionInfo := Pointer(LoadResource(hFile, hResourceInfo));\n  if VersionInfo = nil then\n    Exit;\n\n  FileVersion.Version.dw := VersionInfo.Value.dwFileVersionMS;\n  FileVersion.Release := Word(VersionInfo.Value.dwFileVersionLS shr 16);\n  FileVersion.Build := Word(VersionInfo.Value.dwFileVersionLS);\n  FileVersion.bDebug := (VersionInfo.Value.dwFileFlags and VFF_DEBUG) = VFF_DEBUG;\n  FileVersion.bPrerelease := (VersionInfo.Value.dwFileFlags and VFF_PRERELEASE) = VFF_PRERELEASE;\n  FileVersion.bPrivate := (VersionInfo.Value.dwFileFlags and VFF_PRIVATE) = VFF_PRIVATE;\n  FileVersion.bSpecial := (VersionInfo.Value.dwFileFlags and VFF_SPECIAL) = VFF_SPECIAL;\n\n  Result := True;\nend;\n\nfunction OverrideSL(ValueName: String; var Value: DWORD): Boolean;\nbegin\n  Result := True;\n  if INIValueExists(INI, 'SLPolicy', ValueName) then begin\n    Value := INIReadDWord(INI, 'SLPolicy', ValueName, 0);\n    Exit;\n  end;\n  Result := False;\nend;\n\nfunction New_SLGetWindowsInformationDWORD(pwszValueName: PWideChar;\n  pdwValue: PDWORD): HRESULT; stdcall;\nvar\n  dw: DWORD;\nbegin\n  // wrapped SLGetWindowsInformationDWORD function\n  // termsrv.dll will call this function instead of original SLC.dll\n\n  // Override SL Policy\n\n  WriteLog('Policy query: ' + pwszValueName);\n  if OverrideSL(pwszValueName, dw) then begin\n    pdwValue^ := dw;\n    Result := S_OK;\n    WriteLog('Policy rewrite: ' + IntToStr(pdwValue^));\n    Exit;\n  end;\n\n  // If the requested value name is not defined above\n\n  // revert to original SL Policy function\n  WriteProcessMemory(GetCurrentProcess, @SLGetWindowsInformationDWORD,\n    @Old_SLGetWindowsInformationDWORD, SizeOf(OldCode), bw);\n\n  // get result\n  Result := SLGetWindowsInformationDWORD(pwszValueName, pdwValue);\n  if Result = S_OK then\n    WriteLog('Policy result: ' + IntToStr(pdwValue^))\n  else\n    WriteLog('Policy request failed');\n  // wrap it back\n  WriteProcessMemory(GetCurrentProcess, @SLGetWindowsInformationDWORD,\n    @Stub_SLGetWindowsInformationDWORD, SizeOf(far_jmp), bw);\nend;\n\nfunction New_Win8SL(pwszValueName: PWideChar; pdwValue: PDWORD): HRESULT; register;\nvar\n  dw: DWORD;\nbegin\n  // wrapped unexported function SLGetWindowsInformationDWORDWrapper in termsrv.dll\n  // for Windows 8 support\n\n  // Override SL Policy\n\n  WriteLog('Policy query: ' + pwszValueName);\n  if OverrideSL(pwszValueName, dw) then begin\n    pdwValue^ := dw;\n    Result := S_OK;\n    WriteLog('Policy rewrite: ' + IntToStr(pdwValue^));\n    Exit;\n  end;\n\n  // If the requested value name is not defined above\n  // use function from SLC.dll\n\n  Result := SLGetWindowsInformationDWORD(pwszValueName, pdwValue);\n  if Result = S_OK then\n    WriteLog('Policy result: ' + IntToStr(pdwValue^))\n  else\n    WriteLog('Policy request failed');\nend;\n\nfunction New_Win8SL_CP(eax: DWORD; pdwValue: PDWORD; ecx: DWORD; pwszValueName: PWideChar): HRESULT; register;\nbegin\n  // wrapped unexported function SLGetWindowsInformationDWORDWrapper in termsrv.dll\n  // for Windows 8 Consumer Preview support\n\n  Result := New_Win8SL(pwszValueName, pdwValue);\nend;\n\nfunction New_CSLQuery_Initialize: HRESULT; stdcall;\nvar\n  Sect: String;\n  bServerSku,\n  bRemoteConnAllowed,\n  bFUSEnabled,\n  bAppServerAllowed,\n  bMultimonAllowed,\n  lMaxUserSessions,\n  ulMaxDebugSessions,\n  bInitialized: PDWORD;\nbegin\n  bServerSku := nil;\n  bRemoteConnAllowed := nil;\n  bFUSEnabled := nil;\n  bAppServerAllowed := nil;\n  bMultimonAllowed := nil;\n  lMaxUserSessions := nil;\n  ulMaxDebugSessions := nil;\n  bInitialized := nil;\n  WriteLog('>>> CSLQuery::Initialize');\n  Sect := IntToStr(FV.Version.w.Major)+'.'+IntToStr(FV.Version.w.Minor)+'.'+\n          IntToStr(FV.Release)+'.'+IntToStr(FV.Build)+'-SLInit';\n  if INISectionExists(INI, Sect) then begin\n    bServerSku := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'bServerSku.x86', 0));\n    bRemoteConnAllowed := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'bRemoteConnAllowed.x86', 0));\n    bFUSEnabled := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'bFUSEnabled.x86', 0));\n    bAppServerAllowed := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'bAppServerAllowed.x86', 0));\n    bMultimonAllowed := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'bMultimonAllowed.x86', 0));\n    lMaxUserSessions := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'lMaxUserSessions.x86', 0));\n    ulMaxDebugSessions := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'ulMaxDebugSessions.x86', 0));\n    bInitialized := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'bInitialized.x86', 0));\n  end;\n\n  if bServerSku <> nil then begin\n    bServerSku^ := INIReadDWord(INI, 'SLInit', 'bServerSku', 1);\n    WriteLog('SLInit [0x'+IntToHex(DWORD(bServerSku), 1)+'] bServerSku = ' + IntToStr(bServerSku^));\n  end;\n  if bRemoteConnAllowed <> nil then begin\n    bRemoteConnAllowed^ := INIReadDWord(INI, 'SLInit', 'bRemoteConnAllowed', 1);\n    WriteLog('SLInit [0x'+IntToHex(DWORD(bRemoteConnAllowed), 1)+'] bRemoteConnAllowed = ' + IntToStr(bRemoteConnAllowed^));\n  end;\n  if bFUSEnabled <> nil then begin\n    bFUSEnabled^ := INIReadDWord(INI, 'SLInit', 'bFUSEnabled', 1);\n    WriteLog('SLInit [0x'+IntToHex(DWORD(bFUSEnabled), 1)+'] bFUSEnabled = ' + IntToStr(bFUSEnabled^));\n  end;\n  if bAppServerAllowed <> nil then begin\n    bAppServerAllowed^ := INIReadDWord(INI, 'SLInit', 'bAppServerAllowed', 1);\n    WriteLog('SLInit [0x'+IntToHex(DWORD(bAppServerAllowed), 1)+'] bAppServerAllowed = ' + IntToStr(bAppServerAllowed^));\n  end;\n  if bMultimonAllowed <> nil then begin\n    bMultimonAllowed^ := INIReadDWord(INI, 'SLInit', 'bMultimonAllowed', 1);\n    WriteLog('SLInit [0x'+IntToHex(DWORD(bMultimonAllowed), 1)+'] bMultimonAllowed = ' + IntToStr(bMultimonAllowed^));\n  end;\n  if lMaxUserSessions <> nil then begin\n    lMaxUserSessions^ := INIReadDWord(INI, 'SLInit', 'lMaxUserSessions', 0);\n    WriteLog('SLInit [0x'+IntToHex(DWORD(lMaxUserSessions), 1)+'] lMaxUserSessions = ' + IntToStr(lMaxUserSessions^));\n  end;\n  if ulMaxDebugSessions <> nil then begin\n    ulMaxDebugSessions^ := INIReadDWord(INI, 'SLInit', 'ulMaxDebugSessions', 0);\n    WriteLog('SLInit [0x'+IntToHex(DWORD(ulMaxDebugSessions), 1)+'] ulMaxDebugSessions = ' + IntToStr(ulMaxDebugSessions^));\n  end;\n  if bInitialized <> nil then begin\n    bInitialized^ := INIReadDWord(INI, 'SLInit', 'bInitialized', 1);\n    WriteLog('SLInit [0x'+IntToHex(DWORD(bInitialized), 1)+'] bInitialized = ' + IntToStr(bInitialized^));\n  end;\n  Result := S_OK;\n  WriteLog('<<< CSLQuery::Initialize');\nend;\n\nprocedure HookFunctions;\nvar\n  ConfigFile, Sect, FuncName: String;\n  V: DWORD;\n  TS_Handle, SLC_Handle: THandle;\n  TermSrvSize: DWORD;\n  SignPtr: Pointer;\n  I: Integer;\n  PatchList: SList;\n  Patch: Array of TBytes;\n  Jump: far_jmp;\n  MovJump: mov_far_jmp;\nbegin\n  { hook function ^^\n     (called once)   }\n  IsHooked := True;\n  TSMain := nil;\n  TSGlobals := nil;\n  SLGetWindowsInformationDWORD := nil;\n\n  WriteLog('Loading configuration...');\n  ConfigFile := ExtractFilePath(GetBinaryPath) + 'rdpwrap.ini';\n  WriteLog('Configuration file: ' + ConfigFile);\n  INILoad(INI, ConfigFile);\n  if Length(INI) = 0 then begin\n    WriteLog('Error: Failed to load configuration');\n    Exit;\n  end;\n\n  LogFile := INIReadString(INI, 'Main', 'LogFile', ExtractFilePath(GetBinaryPath) + 'rdpwrap.txt');\n  WriteLog('Initializing RDP Wrapper...');\n\n  // load termsrv.dll and get functions\n  TS_Handle := LoadLibrary('termsrv.dll');\n  if TS_Handle = 0 then begin\n    WriteLog('Error: Failed to load Terminal Services library');\n    Exit;\n  end;\n  TSMain := GetProcAddress(TS_Handle, 'ServiceMain');\n  TSGlobals := GetProcAddress(TS_Handle, 'SvchostPushServiceGlobals');\n  WriteLog(\n    'Base addr:  0x' + IntToHex(TS_Handle, 8) + #13#10 +\n    'SvcMain:    termsrv.dll+0x' + IntToHex(Cardinal(@TSMain) - TS_Handle, 1) + #13#10 +\n    'SvcGlobals: termsrv.dll+0x' + IntToHex(Cardinal(@TSGlobals) - TS_Handle, 1)\n  );\n\n  V := 0;\n  // check termsrv version\n  if GetModuleVersion('termsrv.dll', FV) then\n    V := Byte(FV.Version.w.Minor) or (Byte(FV.Version.w.Major) shl 8)\n  else begin\n    // check NT version\n    // V := GetVersion; // deprecated\n    // V := ((V and $FF) shl 8) or ((V and $FF00) shr 8);\n  end;\n  if V = 0 then begin\n    WriteLog('Error: Failed to detect Terminal Services version');\n    Exit;\n  end;\n\n  WriteLog('Version:    '+\n  IntToStr(FV.Version.w.Major)+'.'+\n  IntToStr(FV.Version.w.Minor)+'.'+\n  IntToStr(FV.Release)+'.'+\n  IntToStr(FV.Build));\n\n  // temporarily freeze threads\n  WriteLog('Freezing threads...');\n  StopThreads();\n\n  WriteLog('Caching patch codes...');\n  PatchList := INIReadSection(INI, 'PatchCodes');\n  SetLength(Patch, Length(PatchList));\n  for I := 0 to Length(Patch) - 1 do begin\n    Patch[I] := INIReadBytes(INI, 'PatchCodes', PatchList[I]);\n    if Length(Patch[I]) > 16 then  // for security reasons\n      SetLength(Patch[I], 16);     // not more than 16 bytes\n  end;\n\n  if (V = $0600) and (INIReadBool(INI, 'Main', 'SLPolicyHookNT60', True)) then begin\n    // Windows Vista\n    // uses SL Policy API (slc.dll)\n\n    // load slc.dll and hook function\n    SLC_Handle := LoadLibrary('slc.dll');\n    SLGetWindowsInformationDWORD := GetProcAddress(SLC_Handle, 'SLGetWindowsInformationDWORD');\n\n    if @SLGetWindowsInformationDWORD <> nil then\n    begin\n      // rewrite original function to call our function (make hook)\n\n      WriteLog('Hook SLGetWindowsInformationDWORD');\n      Stub_SLGetWindowsInformationDWORD.PushOp := $68;\n      Stub_SLGetWindowsInformationDWORD.PushArg := @New_SLGetWindowsInformationDWORD;\n      Stub_SLGetWindowsInformationDWORD.RetOp := $C3;\n      ReadProcessMemory(GetCurrentProcess, @SLGetWindowsInformationDWORD,\n        @Old_SLGetWindowsInformationDWORD, SizeOf(OldCode), bw);\n      WriteProcessMemory(GetCurrentProcess, @SLGetWindowsInformationDWORD,\n        @Stub_SLGetWindowsInformationDWORD, SizeOf(far_jmp), bw);\n    end;\n  end;\n  if (V = $0601) and (INIReadBool(INI, 'Main', 'SLPolicyHookNT61', True)) then begin\n    // Windows 7\n    // uses SL Policy API (slc.dll)\n\n    // load slc.dll and hook function\n    SLC_Handle := LoadLibrary('slc.dll');\n    SLGetWindowsInformationDWORD := GetProcAddress(SLC_Handle, 'SLGetWindowsInformationDWORD');\n\n    if @SLGetWindowsInformationDWORD <> nil then\n    begin\n      // rewrite original function to call our function (make hook)\n\n      WriteLog('Hook SLGetWindowsInformationDWORD');\n      Stub_SLGetWindowsInformationDWORD.PushOp := $68;\n      Stub_SLGetWindowsInformationDWORD.PushArg := @New_SLGetWindowsInformationDWORD;\n      Stub_SLGetWindowsInformationDWORD.RetOp := $C3;\n      ReadProcessMemory(GetCurrentProcess, @SLGetWindowsInformationDWORD,\n        @Old_SLGetWindowsInformationDWORD, SizeOf(OldCode), bw);\n      WriteProcessMemory(GetCurrentProcess, @SLGetWindowsInformationDWORD,\n        @Stub_SLGetWindowsInformationDWORD, SizeOf(far_jmp), bw);\n    end;\n  end;\n  if V = $0602 then begin\n    // Windows 8\n    // uses SL Policy internal unexported function\n\n    // load slc.dll and get function\n    // (will be used on intercepting undefined values)\n    SLC_Handle := LoadLibrary('slc.dll');\n    SLGetWindowsInformationDWORD := GetProcAddress(SLC_Handle, 'SLGetWindowsInformationDWORD');\n  end;\n  if V = $0603 then begin\n    // Windows 8.1\n    // uses SL Policy internal inline code\n  end;\n  if V = $0604 then begin\n    // Windows 10\n    // uses SL Policy internal inline code\n  end;\n\n  Sect := IntToStr(FV.Version.w.Major)+'.'+IntToStr(FV.Version.w.Minor)+'.'+\n          IntToStr(FV.Release)+'.'+IntToStr(FV.Build);\n\n  if INISectionExists(INI, Sect) then\n    if GetModuleAddress('termsrv.dll', GetCurrentProcessId, TermSrvBase, TermSrvSize) then begin\n      if INIReadBool(INI, Sect, 'LocalOnlyPatch.x86', False) then begin\n        WriteLog('Patch CEnforcementCore::GetInstanceOfTSLicense');\n        SignPtr := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'LocalOnlyOffset.x86', 0));\n        I := SListFind(PatchList, INIReadString(INI, Sect, 'LocalOnlyCode.x86', ''));\n        if I >= 0 then\n          WriteProcessMemory(GetCurrentProcess, SignPtr, @Patch[I][0], Length(Patch[I]), bw);\n      end;\n      if INIReadBool(INI, Sect, 'SingleUserPatch.x86', False) then begin\n        WriteLog('Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled');\n        SignPtr := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'SingleUserOffset.x86', 0));\n        I := SListFind(PatchList, INIReadString(INI, Sect, 'SingleUserCode.x86', ''));\n        if I >= 0 then\n          WriteProcessMemory(GetCurrentProcess, SignPtr, @Patch[I][0], Length(Patch[I]), bw);\n      end;\n      if INIReadBool(INI, Sect, 'DefPolicyPatch.x86', False) then begin\n        WriteLog('Patch CDefPolicy::Query');\n        SignPtr := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'DefPolicyOffset.x86', 0));\n        I := SListFind(PatchList, INIReadString(INI, Sect, 'DefPolicyCode.x86', ''));\n        if I >= 0 then\n          WriteProcessMemory(GetCurrentProcess, SignPtr, @Patch[I][0], Length(Patch[I]), bw);\n      end;\n      if INIReadBool(INI, Sect, 'SLPolicyInternal.x86', False) then begin\n        WriteLog('Hook SLGetWindowsInformationDWORDWrapper');\n        SignPtr := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'SLPolicyOffset.x86', 0));\n        MovJump.MovOp := $89;  // mov eax, ecx\n        MovJump.MovArg := $C8; // __msfastcall compatibility\n        MovJump.PushOp := $68;\n        MovJump.PushArg := @New_Win8SL;\n        MovJump.RetOp := $C3;\n        FuncName := INIReadString(INI, Sect, 'SLPolicyFunc.x86', 'New_Win8SL');\n        if FuncName = 'New_Win8SL' then\n          MovJump.PushArg := @New_Win8SL;\n        if FuncName = 'New_Win8SL_CP' then\n          MovJump.PushArg := @New_Win8SL_CP;\n        WriteProcessMemory(GetCurrentProcess, SignPtr,\n          @MovJump, SizeOf(mov_far_jmp), bw);\n      end;\n      if INIReadBool(INI, Sect, 'SLInitHook.x86', False) then begin\n        WriteLog('Hook CSLQuery::Initialize');\n        SignPtr := Pointer(Cardinal(TermSrvBase) + INIReadDWordHex(INI, Sect, 'SLInitOffset.x86', 0));\n        Jump.PushOp := $68;\n        Jump.PushArg := @New_CSLQuery_Initialize;\n        Jump.RetOp := $C3;\n        FuncName := INIReadString(INI, Sect, 'SLInitFunc.x86', 'New_CSLQuery_Initialize');\n        if FuncName = 'New_CSLQuery_Initialize' then\n          Jump.PushArg := @New_CSLQuery_Initialize;\n        WriteProcessMemory(GetCurrentProcess, SignPtr,\n          @Jump, SizeOf(far_jmp), bw);\n      end;\n    end;\n\n  // unfreeze threads\n  WriteLog('Resumimg threads...');\n  RunThreads();\nend;\n\nfunction TermServiceMain(dwArgc: DWORD; lpszArgv: PWideChar): DWORD; stdcall;\nbegin\n  // wrap ServiceMain function\n  WriteLog('>>> ServiceMain');\n  if not IsHooked then\n    HookFunctions;\n  Result := 0;\n  if @TSMain <> nil then\n    Result := TSMain(dwArgc, lpszArgv);\n  WriteLog('<<< ServiceMain');\nend;\n\nfunction TermServiceGlobals(lpGlobalData: Pointer): DWORD; stdcall;\nbegin\n  // wrap SvchostPushServiceGlobals function\n  WriteLog('>>> SvchostPushServiceGlobals');\n  if not IsHooked then\n    HookFunctions;\n  Result := 0;\n  if @TSGlobals <> nil then\n    Result := TSGlobals(lpGlobalData);\n  WriteLog('<<< SvchostPushServiceGlobals');\nend;\n\n// export section\n\nexports\n  TermServiceMain index 1 name 'ServiceMain',\n  TermServiceGlobals index 2 name 'SvchostPushServiceGlobals';\n\nbegin\n  // DllMain procedure is not used\nend."
  },
  {
    "path": "src-x86-binarymaster/rdpwrap.dproj",
    "content": "﻿\t<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n\t\t<PropertyGroup>\n\t\t\t<ProjectGuid>{D6811241-D595-4809-B3B8-13BECEA56E11}</ProjectGuid>\n\t\t\t<MainSource>rdpwrap.dpr</MainSource>\n\t\t\t<Config Condition=\"'$(Config)'==''\">Release</Config>\n\t\t\t<DCC_DCCCompiler>DCC32</DCC_DCCCompiler>\n\t\t\t<ProjectVersion>12.0</ProjectVersion>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Config)'=='Base' or '$(Base)'!=''\">\n\t\t\t<Base>true</Base>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Config)'=='Release' or '$(Cfg_1)'!=''\">\n\t\t\t<Cfg_1>true</Cfg_1>\n\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t<Base>true</Base>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Config)'=='Debug' or '$(Cfg_2)'!=''\">\n\t\t\t<Cfg_2>true</Cfg_2>\n\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t<Base>true</Base>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Base)'!=''\">\n\t\t\t<DCC_DependencyCheckOutputName>rdpwrap.dll</DCC_DependencyCheckOutputName>\n\t\t\t<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;$(DCC_UnitAlias)</DCC_UnitAlias>\n\t\t\t<GenDll>true</GenDll>\n\t\t\t<DCC_ImageBase>00400000</DCC_ImageBase>\n\t\t\t<DCC_Platform>x86</DCC_Platform>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Cfg_1)'!=''\">\n\t\t\t<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>\n\t\t\t<DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>\n\t\t\t<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>\n\t\t\t<DCC_DebugInformation>false</DCC_DebugInformation>\n\t\t</PropertyGroup>\n\t\t<PropertyGroup Condition=\"'$(Cfg_2)'!=''\">\n\t\t\t<DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>\n\t\t</PropertyGroup>\n\t\t<ItemGroup>\n\t\t\t<DelphiCompile Include=\"rdpwrap.dpr\">\n\t\t\t\t<MainSource>MainSource</MainSource>\n\t\t\t</DelphiCompile>\n\t\t\t<BuildConfiguration Include=\"Base\">\n\t\t\t\t<Key>Base</Key>\n\t\t\t</BuildConfiguration>\n\t\t\t<BuildConfiguration Include=\"Release\">\n\t\t\t\t<Key>Cfg_1</Key>\n\t\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t</BuildConfiguration>\n\t\t\t<BuildConfiguration Include=\"Debug\">\n\t\t\t\t<Key>Cfg_2</Key>\n\t\t\t\t<CfgParent>Base</CfgParent>\n\t\t\t</BuildConfiguration>\n\t\t</ItemGroup>\n\t\t<Import Project=\"$(BDS)\\Bin\\CodeGear.Delphi.Targets\" Condition=\"Exists('$(BDS)\\Bin\\CodeGear.Delphi.Targets')\"/>\n\t\t<ProjectExtensions>\n\t\t\t<Borland.Personality>Delphi.Personality.12</Borland.Personality>\n\t\t\t<Borland.ProjectType>VCLApplication</Borland.ProjectType>\n\t\t\t<BorlandProject>\n\t\t\t\t<Delphi.Personality>\n\t\t\t\t\t<Source>\n\t\t\t\t\t\t<Source Name=\"MainSource\">rdpwrap.dpr</Source>\n\t\t\t\t\t</Source>\n\t\t\t\t\t<Parameters>\n\t\t\t\t\t\t<Parameters Name=\"UseLauncher\">False</Parameters>\n\t\t\t\t\t\t<Parameters Name=\"LoadAllSymbols\">True</Parameters>\n\t\t\t\t\t\t<Parameters Name=\"LoadUnspecifiedSymbols\">False</Parameters>\n\t\t\t\t\t</Parameters>\n\t\t\t\t\t<VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"IncludeVerInfo\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"AutoIncBuild\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"MajorVer\">1</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"MinorVer\">0</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Release\">0</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Build\">0</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Debug\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"PreRelease\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Special\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Private\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"DLL\">False</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"Locale\">1049</VersionInfo>\n\t\t\t\t\t\t<VersionInfo Name=\"CodePage\">1251</VersionInfo>\n\t\t\t\t\t</VersionInfo>\n\t\t\t\t\t<VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"CompanyName\"/>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"FileDescription\"/>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"FileVersion\">1.0.0.0</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"InternalName\"/>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"LegalCopyright\"/>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"LegalTrademarks\"/>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"OriginalFilename\"/>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"ProductName\"/>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"ProductVersion\">1.0.0.0</VersionInfoKeys>\n\t\t\t\t\t\t<VersionInfoKeys Name=\"Comments\"/>\n\t\t\t\t\t</VersionInfoKeys>\n\t\t\t\t\t<Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\bcboffice2k140.bpl\">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\bcbofficexp140.bpl\">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\dcloffice2k140.bpl\">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>\n\t\t\t\t\t\t<Excluded_Packages Name=\"$(BDS)\\bin\\dclofficexp140.bpl\">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>\n\t\t\t\t\t</Excluded_Packages>\n\t\t\t\t</Delphi.Personality>\n\t\t\t</BorlandProject>\n\t\t\t<ProjectFileVersion>12</ProjectFileVersion>\n\t\t</ProjectExtensions>\n\t</Project>\n"
  },
  {
    "path": "src-x86-x64-Fusix/Export.def",
    "content": "LIBRARY   BTREE\nEXPORTS\n   ServiceMain\n   SvchostPushServiceGlobals"
  },
  {
    "path": "src-x86-x64-Fusix/IniFile.cpp",
    "content": "/*\nCopyright 2014 Stas'M Corp.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n#include \"stdafx.h\"\n#include <Windows.h>\n#include <stdlib.h>\n#include \"IniFile.h\"\n\nINI_FILE::INI_FILE(wchar_t *FilePath)\n{\n\tDWORD Status = 0;\n\tDWORD NumberOfBytesRead = 0;\n\n\tHANDLE hFile = CreateFile(FilePath, GENERIC_READ, FILE_SHARE_WRITE|FILE_SHARE_READ,\n\t\tNULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);\n\n\tif (hFile == INVALID_HANDLE_VALUE)\n\t{\n\t\treturn;\n\t}\n\n\tFileSize = GetFileSize(hFile, NULL);\n\tif (FileSize == INVALID_FILE_SIZE)\n\t{\n\t\treturn;\n\t}\n\n\tFileRaw = new char[FileSize];\n\tStatus = ReadFile(hFile, FileRaw, FileSize, &NumberOfBytesRead, NULL);\n\tif (!Status)\n\t{\n\t\treturn;\n\t}\n\n\tCreateStringsMap();\n\tParse();\n}\n\n\nINI_FILE::~INI_FILE()\n{\n\tfor (DWORD i = 0; i < IniData.SectionCount; i++)\n\t{\n\t\tdelete[] IniData.Section[i].Variables;\n\t}\n\tdelete[] IniData.Section;\n\tdelete[] FileStringsMap;\n\tdelete FileRaw;\n}\n\nbool INI_FILE::CreateStringsMap()\n{\n\tDWORD StringsCount = 1;\n\n\tfor (DWORD i = 0; i < FileSize; i++)\n\t{\n\t\tif (FileRaw[i] == '\\r' && FileRaw[i + 1] == '\\n') StringsCount++;\n\t}\n\n\tFileStringsCount = StringsCount;\n\n\tFileStringsMap = new DWORD[StringsCount];\n\tFileStringsMap[0] = 0;\n\n\tStringsCount = 1;\n\n\tfor (DWORD i = 0; i < FileSize; i++)\n\t{\n\t\tif (FileRaw[i] == '\\r' && FileRaw[i + 1] == '\\n')\n\t\t{\n\t\t\tFileStringsMap[StringsCount] = i + 2;\n\t\t\tStringsCount++;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nint INI_FILE::StrTrim(char* Str)\n{\n\tint i = 0, j;\n\twhile ((Str[i] == ' ') || (Str[i] == '\\t'))\n\t{\n\t\ti++;\n\t}\n\tif (i>0)\n\t{\n\t\tfor (j = 0; j < strlen(Str); j++)\n\t\t{\n\t\t\tStr[j] = Str[j + i];\n\t\t}\n\t\tStr[j] = '\\0';\n\t}\n\n\ti = strlen(Str) - 1;\n\twhile ((Str[i] == ' ') || (Str[i] == '\\t'))\n\t{\n\t\ti--;\n\t}\n\tif (i < (strlen(Str) - 1))\n\t{\n\t\tStr[i + 1] = '\\0';\n\t}\n\treturn 0;\n}\n\nDWORD INI_FILE::GetFileStringFromNum(DWORD StringNumber, char *RetString, DWORD Size)\n{\n\tDWORD CurrentStringNum = 0;\n\tDWORD EndStringPos = 0;\n\tDWORD StringSize = 0;\n\n\tif (StringNumber > FileStringsCount) return 0;\n\n\tfor (DWORD i = FileStringsMap[StringNumber]; i < FileSize; i++)\n\t{\n\t\tif (i == (FileSize - 1))\n\t\t{\n\t\t\tEndStringPos = FileSize;\n\t\t\tbreak;\n\t\t}\n\t\tif (FileRaw[i] == '\\r' && FileRaw[i + 1] == '\\n')\n\t\t{\n\t\t\tEndStringPos = i;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tStringSize = EndStringPos - FileStringsMap[StringNumber];\n\n\tif (Size < StringSize) return 0;\n\n\tmemset(RetString, 0x00, Size);\n\tmemcpy(RetString, &(FileRaw[FileStringsMap[StringNumber]]), StringSize);\n\treturn StringSize;\n}\n\nbool INI_FILE::IsVariable(char *Str, DWORD StrSize)\n{\n\tbool Quotes = false;\n\n\tfor (DWORD i = 0; i < StrSize; i++)\n\t{\n\t\tif (Str[i] == '\"' || Str[i] == '\\'') Quotes = !Quotes;\n\t\tif (Str[i] == '=' && !Quotes) return true;\n\t}\n\treturn false;\n}\n\nbool INI_FILE::FillVariable(INI_SECTION_VARIABLE *Variable, char *Str, DWORD StrSize)\n{\n\tbool Quotes = false;\n\n\tfor (DWORD i = 0; i < StrSize; i++)\n\t{\n\t\tif (Str[i] == '\"' || Str[i] == '\\'') Quotes = !Quotes;\n\t\tif (Str[i] == '=' && !Quotes)\n\t\t{\n\t\t\tmemset(Variable->VariableName, 0, MAX_STRING_LEN);\n\t\t\tmemset(Variable->VariableValue, 0, MAX_STRING_LEN);\n\t\t\tmemcpy(Variable->VariableName, Str, i);\n\t\t\tmemcpy(Variable->VariableValue, &(Str[i + 1]), StrSize - (i - 1));\n\t\t\tStrTrim(Variable->VariableName);\n\t\t\tStrTrim(Variable->VariableValue);\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn true;\n}\n\nbool INI_FILE::Parse()\n{\n\tDWORD CurrentStringNum = 0;\n\tchar CurrentString[512];\n\tDWORD CurrentStringSize = 0;\n\n\tDWORD SectionsCount = 0;\n\tDWORD VariablesCount = 0;\n\n\tDWORD CurrentSectionNum = -1;\n\tDWORD CurrentVariableNum = -1;\n\n\t// Calculate sections count\n\tfor (DWORD CurrentStringNum = 0; CurrentStringNum < FileStringsCount; CurrentStringNum++)\n\t{\n\t\tCurrentStringSize = GetFileStringFromNum(CurrentStringNum, CurrentString, 512);\n\n\t\tif (CurrentString[0] == ';') continue; // It's a comment\n\n\t\tif (CurrentString[0] == '[' && CurrentString[CurrentStringSize - 1] == ']')\t// It's section declaration\n\t\t{\n\t\t\tSectionsCount++;\n\t\t\tcontinue;\n\t\t}\n\t}\n\n\tDWORD *SectionVariableCount = new DWORD[SectionsCount];\n\tmemset(SectionVariableCount, 0x00, sizeof(DWORD)*SectionsCount);\n\n\tfor (DWORD CurrentStringNum = 0; CurrentStringNum < FileStringsCount; CurrentStringNum++)\n\t{\n\t\tCurrentStringSize = GetFileStringFromNum(CurrentStringNum, CurrentString, 512);\n\n\t\tif (CurrentString[0] == ';') continue; // It's a comment\n\n\n\t\tif (CurrentString[0] == '[' && CurrentString[CurrentStringSize - 1] == ']')\t// It's section declaration\n\t\t{\n\t\t\tCurrentSectionNum++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (IsVariable(CurrentString, CurrentStringSize))\n\t\t{\n\t\t\tVariablesCount++;\n\t\t\tSectionVariableCount[CurrentSectionNum]++;\n\t\t\tcontinue;\n\t\t}\n\t}\n\n\tIniData.SectionCount = SectionsCount;\n\tIniData.Section = new INI_SECTION[SectionsCount];\n\tmemset(IniData.Section, 0x00, sizeof(PINI_SECTION)*SectionsCount);\n\n\tfor (DWORD i = 0; i < SectionsCount; i++)\n\t{\n\t\tIniData.Section[i].VariablesCount = SectionVariableCount[i];\n\t\tIniData.Section[i].Variables = new INI_SECTION_VARIABLE[SectionVariableCount[i]];\n\t\tmemset(IniData.Section[i].Variables, 0x00, sizeof(INI_SECTION_VARIABLE)*SectionVariableCount[i]);\n\t}\n\n\tdelete[] SectionVariableCount;\n\n\tCurrentSectionNum = -1;\n\tCurrentVariableNum = -1;\n\n\tfor (DWORD CurrentStringNum = 0; CurrentStringNum < FileStringsCount; CurrentStringNum++)\n\t{\n\t\tCurrentStringSize = GetFileStringFromNum(CurrentStringNum, CurrentString, 512);\n\n\t\tif (CurrentString[0] == ';') // It's a comment\n\t\t{\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (CurrentString[0] == '[' && CurrentString[CurrentStringSize - 1] == ']')\n\t\t{\n\t\t\tCurrentSectionNum++;\n\t\t\tCurrentVariableNum = 0;\n\t\t\tmemset(IniData.Section[CurrentSectionNum].SectionName, 0, MAX_STRING_LEN);\n\t\t\tmemcpy(IniData.Section[CurrentSectionNum].SectionName, &(CurrentString[1]), (CurrentStringSize - 2));\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (IsVariable(CurrentString, CurrentStringSize))\n\t\t{\n\t\t\tFillVariable(&(IniData.Section[CurrentSectionNum].Variables[CurrentVariableNum]), CurrentString, CurrentStringSize);\n\t\t\tCurrentVariableNum++;\n\t\t\tcontinue;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nPINI_SECTION INI_FILE::GetSection(char *SectionName)\n{\n\tfor (DWORD i = 0; i < IniData.SectionCount; i++)\n\t{\n\t\tif (\n\t\t\t(strlen(IniData.Section[i].SectionName) == strlen(SectionName)) &&\n\t\t\t(memcmp(IniData.Section[i].SectionName, SectionName, strlen(SectionName)) == 0)\n\t\t)\n\t\t{\n\t\t\treturn &IniData.Section[i];\n\t\t}\n\t}\n\treturn NULL;\n}\n\nbool INI_FILE::SectionExists(char *SectionName)\n{\n\tif (GetSection(SectionName) == NULL)\treturn false;\n\treturn true;\n}\n\nbool INI_FILE::VariableExists(char *SectionName, char *VariableName)\n{\n\tINI_SECTION_VARIABLE Variable = { 0 };\n\treturn GetVariableInSectionPrivate(SectionName, VariableName, &Variable);\n}\n\nbool INI_FILE::GetVariableInSectionPrivate(char *SectionName, char *VariableName, INI_SECTION_VARIABLE *RetVariable)\n{\n\tINI_SECTION *Section = NULL;\n\tINI_SECTION_VARIABLE *Variable = NULL;\n\n\t// Find section\n\tSection = GetSection(SectionName);\n\tif (Section == NULL)\n\t{\n\t\tSetLastError(318); // This region is not found\n\t\treturn false;\n\t}\n\n\t// Find variable\n\tfor (DWORD i = 0; i < Section->VariablesCount; i++)\n\t{\n\t\tif (\n\t\t\t(strlen(Section->Variables[i].VariableName) == strlen(VariableName)) &&\n\t\t\t(memcmp(Section->Variables[i].VariableName, VariableName, strlen(VariableName)) == 0)\n\t\t)\n\t\t{\n\t\t\tVariable = &(Section->Variables[i]);\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (Variable == NULL)\n\t{\n\t\tSetLastError(1898); // Member of the group is not found\n\t\treturn false;\n\t}\n\n\tmemset(RetVariable, 0x00, sizeof(*RetVariable));\n\tmemcpy(RetVariable, Variable, sizeof(*Variable));\n\n\treturn true;\n}\n\nbool INI_FILE::GetVariableInSection(char *SectionName, char *VariableName, INI_VAR_STRING *RetVariable)\n{\n\tbool Status = false;\n\tINI_SECTION_VARIABLE Variable = {};\n\n\tStatus = GetVariableInSectionPrivate(SectionName, VariableName, &Variable);\n\tif (!Status)\treturn Status;\n\n\tmemset(RetVariable, 0x00, sizeof(*RetVariable));\n\tmemcpy(RetVariable->Name, Variable.VariableName, strlen(Variable.VariableName));\n\tmemcpy(RetVariable->Value, Variable.VariableValue, strlen(Variable.VariableValue));\n\n\treturn true;\n}\n\nbool INI_FILE::GetVariableInSection(char *SectionName, char *VariableName, INI_VAR_DWORD *RetVariable)\n{\n\tbool Status = false;\n\tINI_SECTION_VARIABLE Variable = {};\n\n\tStatus = GetVariableInSectionPrivate(SectionName, VariableName, &Variable);\n\tif (!Status)\treturn Status;\n\n\tmemset(RetVariable, 0x00, sizeof(*RetVariable));\n\tmemcpy(RetVariable->Name, Variable.VariableName, strlen(Variable.VariableName));\n\n#ifndef _WIN64\n\tRetVariable->ValueDec = strtol(Variable.VariableValue, NULL, 10);\n\tRetVariable->ValueHex = strtol(Variable.VariableValue, NULL, 16);\n#else\n\tRetVariable->ValueDec = _strtoi64(Variable.VariableValue, NULL, 10);\n\tRetVariable->ValueHex = _strtoi64(Variable.VariableValue, NULL, 16);\n#endif\n\treturn true;\n}\n\nbool INI_FILE::GetVariableInSection(char *SectionName, char *VariableName, INI_VAR_BYTEARRAY *RetVariable)\n{\n\tbool Status = false;\n\tINI_SECTION_VARIABLE Variable = {};\n\n\tStatus = GetVariableInSectionPrivate(SectionName, VariableName, &Variable);\n\tif (!Status)\treturn Status;\n\n\tDWORD ValueLen = strlen(Variable.VariableValue);\n\tif ((ValueLen % 2) != 0) return false;\n\n\t// for security reasons not more than 16 bytes\n\tif (ValueLen > 32) ValueLen = 32;  // 32 hex digits\n\n\tmemset(RetVariable, 0x00, sizeof(*RetVariable));\n\tmemcpy(RetVariable->Name, Variable.VariableName, strlen(Variable.VariableName));\n\n\tfor (DWORD i = 0; i <= ValueLen; i++)\n\t{\n\t\tif ((i % 2) != 0) continue;\n\n\t\tswitch (Variable.VariableValue[i])\n\t\t{\n\t\tcase '0': break;\n\t\tcase '1': RetVariable->Value[(i / 2)] += (1 << 4); break;\n\t\tcase '2': RetVariable->Value[(i / 2)] += (2 << 4); break;\n\t\tcase '3': RetVariable->Value[(i / 2)] += (3 << 4); break;\n\t\tcase '4': RetVariable->Value[(i / 2)] += (4 << 4); break;\n\t\tcase '5': RetVariable->Value[(i / 2)] += (5 << 4); break;\n\t\tcase '6': RetVariable->Value[(i / 2)] += (6 << 4); break;\n\t\tcase '7': RetVariable->Value[(i / 2)] += (7 << 4); break;\n\t\tcase '8': RetVariable->Value[(i / 2)] += (8 << 4); break;\n\t\tcase '9': RetVariable->Value[(i / 2)] += (9 << 4); break;\n\t\tcase 'A': RetVariable->Value[(i / 2)] += (10 << 4); break;\n\t\tcase 'B': RetVariable->Value[(i / 2)] += (11 << 4); break;\n\t\tcase 'C': RetVariable->Value[(i / 2)] += (12 << 4); break;\n\t\tcase 'D': RetVariable->Value[(i / 2)] += (13 << 4); break;\n\t\tcase 'E': RetVariable->Value[(i / 2)] += (14 << 4); break;\n\t\tcase 'F': RetVariable->Value[(i / 2)] += (15 << 4); break;\n\t\t}\n\n\t\tswitch (Variable.VariableValue[i + 1])\n\t\t{\n\t\tcase '0': break;\n\t\tcase '1': RetVariable->Value[(i / 2)] += 1; break;\n\t\tcase '2': RetVariable->Value[(i / 2)] += 2; break;\n\t\tcase '3': RetVariable->Value[(i / 2)] += 3; break;\n\t\tcase '4': RetVariable->Value[(i / 2)] += 4; break;\n\t\tcase '5': RetVariable->Value[(i / 2)] += 5; break;\n\t\tcase '6': RetVariable->Value[(i / 2)] += 6; break;\n\t\tcase '7': RetVariable->Value[(i / 2)] += 7; break;\n\t\tcase '8': RetVariable->Value[(i / 2)] += 8; break;\n\t\tcase '9': RetVariable->Value[(i / 2)] += 9; break;\n\t\tcase 'A': RetVariable->Value[(i / 2)] += 10; break;\n\t\tcase 'B': RetVariable->Value[(i / 2)] += 11; break;\n\t\tcase 'C': RetVariable->Value[(i / 2)] += 12; break;\n\t\tcase 'D': RetVariable->Value[(i / 2)] += 13; break;\n\t\tcase 'E': RetVariable->Value[(i / 2)] += 14; break;\n\t\tcase 'F': RetVariable->Value[(i / 2)] += 15; break;\n\t\t}\n\t}\n\tRetVariable->ArraySize = ValueLen / 2;\n\treturn true;\n}\n\nbool INI_FILE::GetVariableInSection(char *SectionName, char *VariableName, bool *RetVariable)\n{\n\tbool Status = false;\n\tINI_SECTION_VARIABLE Variable = {};\n\n\tStatus = GetVariableInSectionPrivate(SectionName, VariableName, &Variable);\n\tif (!Status)\treturn Status;\n\n\t*RetVariable = (bool)strtol(Variable.VariableValue, NULL, 10);\n\treturn true;\n}\n\nbool INI_FILE::GetSectionVariablesList(char *SectionName, INI_SECTION_VARLIST *VariablesList)\n{\n\tINI_SECTION *Section = NULL;\n\n\tSection = GetSection(SectionName);\n\tif (Section == NULL)\n\t{\n\t\tSetLastError(318); // This region is not found\n\t\treturn false;\n\t}\n\n\tVariablesList->EntriesCount = Section->VariablesCount;\n\n\tVariablesList->NamesEntries = new INI_SECTION_VARLIST_ENTRY[VariablesList->EntriesCount];\n\tmemset(VariablesList->NamesEntries, 0x00, sizeof(INI_SECTION_VARLIST_ENTRY)*VariablesList->EntriesCount);\n\n\tVariablesList->ValuesEntries = new INI_SECTION_VARLIST_ENTRY[VariablesList->EntriesCount];\n\tmemset(VariablesList->ValuesEntries, 0x00, sizeof(INI_SECTION_VARLIST_ENTRY)*VariablesList->EntriesCount);\n\n\tfor (DWORD i = 0; i < Section->VariablesCount; i++)\n\t{\n\t\tmemcpy(VariablesList->NamesEntries[i].String, Section->Variables[i].VariableName,\n\t\t\tstrlen(Section->Variables[i].VariableName));\n\n\t\tmemcpy(VariablesList->ValuesEntries[i].String, Section->Variables[i].VariableValue,\n\t\t\tstrlen(Section->Variables[i].VariableValue));\n\t}\n\n\treturn true;\n}\n\n\n// ---------------------------- WCHAR_T BLOCK ----------------------------------------------\n\nbool INI_FILE::SectionExists(wchar_t *SectionName)\n{\n\tchar cSectionName[MAX_STRING_LEN] = { 0x00 };\n\n\twcstombs(cSectionName, SectionName, MAX_STRING_LEN);\n\n\treturn GetSection(cSectionName);\n}\n\nbool INI_FILE::VariableExists(wchar_t *SectionName, wchar_t *VariableName)\n{\n\tINI_SECTION_VARIABLE Variable = { 0 };\n\n\tchar cSectionName[MAX_STRING_LEN] = { 0x00 };\n\tchar cVariableName[MAX_STRING_LEN] = { 0x00 };\n\n\twcstombs(cSectionName, SectionName, MAX_STRING_LEN);\n\twcstombs(cVariableName, VariableName, MAX_STRING_LEN);\n\n\treturn GetVariableInSectionPrivate(cSectionName, cVariableName, &Variable);\n}\n\nbool INI_FILE::GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, INI_VAR_STRING *RetVariable)\n{\n\tchar cSectionName[MAX_STRING_LEN] = { 0x00 };\n\tchar cVariableName[MAX_STRING_LEN] = { 0x00 };\n\n\twcstombs(cSectionName, SectionName, MAX_STRING_LEN);\n\twcstombs(cVariableName, VariableName, MAX_STRING_LEN);\n\n\treturn GetVariableInSection(cSectionName, cVariableName, RetVariable);\n}\n\nbool INI_FILE::GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, INI_VAR_DWORD *RetVariable)\n{\n\tchar cSectionName[MAX_STRING_LEN] = { 0x00 };\n\tchar cVariableName[MAX_STRING_LEN] = { 0x00 };\n\n\twcstombs(cSectionName, SectionName, MAX_STRING_LEN);\n\twcstombs(cVariableName, VariableName, MAX_STRING_LEN);\n\n\treturn GetVariableInSection(cSectionName, cVariableName, RetVariable);\n}\n\nbool INI_FILE::GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, INI_VAR_BYTEARRAY *RetVariable)\n{\n\tchar cSectionName[MAX_STRING_LEN] = { 0x00 };\n\tchar cVariableName[MAX_STRING_LEN] = { 0x00 };\n\n\twcstombs(cSectionName, SectionName, MAX_STRING_LEN);\n\twcstombs(cVariableName, VariableName, MAX_STRING_LEN);\n\n\treturn GetVariableInSection(cSectionName, cVariableName, RetVariable);\n}\n\nbool INI_FILE::GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, bool *RetVariable)\n{\n\tchar cSectionName[MAX_STRING_LEN] = { 0x00 };\n\tchar cVariableName[MAX_STRING_LEN] = { 0x00 };\n\n\twcstombs(cSectionName, SectionName, MAX_STRING_LEN);\n\twcstombs(cVariableName, VariableName, MAX_STRING_LEN);\n\n\treturn GetVariableInSection(cSectionName, cVariableName, RetVariable);\n}\n\nbool INI_FILE::GetSectionVariablesList(wchar_t *SectionName, INI_SECTION_VARLIST *VariablesList)\n{\n\tchar cSectionName[MAX_STRING_LEN] = { 0x00 };\n\n\twcstombs(cSectionName, SectionName, MAX_STRING_LEN);\n\n\treturn GetSectionVariablesList(cSectionName, VariablesList);\n}"
  },
  {
    "path": "src-x86-x64-Fusix/IniFile.h",
    "content": "/*\nCopyright 2014 Stas'M Corp.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\nhttp://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n*/\n\n#include \"stdafx.h\"\n#include <Windows.h>\n\n#define MAX_STRING_LEN 255\n\n// Out values struсts\ntypedef struct _INI_VAR_STRING\n{\n\tchar Name[MAX_STRING_LEN];\n\tchar Value[MAX_STRING_LEN];\n} INI_VAR_STRING, *PINI_VAR_STRING;\n\ntypedef struct _INI_VAR_DWORD\n{\n\tchar Name[MAX_STRING_LEN];\n#ifndef _WIN64\n\tDWORD ValueDec;\n\tDWORD ValueHex;\n#else\n\tDWORD64 ValueDec;\n\tDWORD64 ValueHex;\n#endif\n\n} INI_VAR_DWORD, *PINI_VAR_DWORD;\n\ntypedef struct _INI_VAR_BYTEARRAY\n{\n\tchar Name[MAX_STRING_LEN];\n\tBYTE ArraySize;\n\tchar Value[MAX_STRING_LEN];\n} INI_VAR_BYTEARRAY, *PINI_VAR_BYTEARRAY;\n\ntypedef struct _INI_SECTION_VARLIST_ENTRY\n{\n\tchar String[MAX_STRING_LEN];\n} INI_SECTION_VARLIST_ENTRY, *PINI_SECTION_VARLIST_ENTRY;\n\ntypedef struct _INI_SECTION_VARLIST\n{\n\tDWORD EntriesCount;\n\t[length_is(EntriesCount)] INI_SECTION_VARLIST_ENTRY *NamesEntries;\n\t[length_is(EntriesCount)] INI_SECTION_VARLIST_ENTRY *ValuesEntries;\n} INI_SECTION_VARLIST, *PINI_SECTION_VARLIST;\n\n// end\n\ntypedef struct _INI_SECTION_VARIABLE\n{\n\tchar VariableName[MAX_STRING_LEN];\n\tchar VariableValue[MAX_STRING_LEN];\n} INI_SECTION_VARIABLE, *PINI_SECTION_VARIABLE;\n\n\ntypedef struct _INI_SECTION\n{\n\tchar SectionName[MAX_STRING_LEN];\n\tDWORD VariablesCount;\n\t[length_is(SectionCount)]\tINI_SECTION_VARIABLE *Variables;\n\n} INI_SECTION, *PINI_SECTION;\n\ntypedef struct _INI_DATA\n{\n\tDWORD SectionCount;\n\t[length_is(SectionCount)] INI_SECTION *Section;\n} INI_DATA, *PINI_DATA;\n\nclass INI_FILE\n{\npublic:\n\tINI_FILE(wchar_t*);\n\t~INI_FILE();\n\n\t// char block\n\tbool SectionExists(char *SectionName);\n\tbool VariableExists(char *SectionName, char *VariableName);\n\tbool GetVariableInSection(char *SectionName, char *VariableName, INI_VAR_STRING *Variable);\n\tbool GetVariableInSection(char *SectionName, char *VariableName, INI_VAR_DWORD *Variable);\n\tbool GetVariableInSection(char *SectionName, char *VariableName, bool *Variable);\n\tbool GetVariableInSection(char *SectionName, char *VariableName, INI_VAR_BYTEARRAY *Variable);\n\tbool GetSectionVariablesList(char *SectionName, INI_SECTION_VARLIST *VariablesList);\n\n\t// wchar_t tramps\n\tbool SectionExists(wchar_t *SectionName);\n\tbool VariableExists(wchar_t *SectionName, wchar_t *VariableName);\n\tbool GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, INI_VAR_STRING *Variable);\n\tbool GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, INI_VAR_DWORD *Variable);\n\tbool GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, bool *Variable);\n\tbool GetVariableInSection(wchar_t *SectionName, wchar_t *VariableName, INI_VAR_BYTEARRAY *Variable);\n\tbool GetSectionVariablesList(wchar_t *SectionName, INI_SECTION_VARLIST *VariablesList);\n\nprivate:\n\tDWORD FileSize;\t// Ini file size\n\tchar *FileRaw;\t// Ini file raw dump\n\tDWORD FileStringsCount;\t//\tString-map length\n\tDWORD *FileStringsMap;\t// String-map\n\tINI_DATA IniData;\t// Parsed data\n\n\t// Common service functions\n\tint StrTrim(char* Str);\n\n\t// Class service functions\n\tbool CreateStringsMap(); // Create file string-map\n\tbool Parse();\t// Parse file to class structures\n\tDWORD GetFileStringFromNum(DWORD StringNumber, char *RetString, DWORD Size);\t// Get string from string-map\n\tbool IsVariable(char *Str, DWORD StrSize);\n\tbool FillVariable(INI_SECTION_VARIABLE *Variable, char *Str, DWORD StrSize);\t// Fill INI_SECTION_VARIABLE struct (for Parse)\n\tPINI_SECTION GetSection(char *SectionName);\n\tbool GetVariableInSectionPrivate(char *SectionName, char *VariableName, INI_SECTION_VARIABLE *RetVariable);\n};\n"
  },
  {
    "path": "src-x86-x64-Fusix/RDPWrap.cpp",
    "content": "/*\n  Copyright 2014 Stas'M Corp.\n\n  Licensed under the Apache License, Version 2.0 (the \"License\");\n  you may not use this file except in compliance with the License.\n  You may obtain a copy of the License at\n\n      http://www.apache.org/licenses/LICENSE-2.0\n\n  Unless required by applicable law or agreed to in writing, software\n  distributed under the License is distributed on an \"AS IS\" BASIS,\n  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n  See the License for the specific language governing permissions and\n  limitations under the License.\n*/\n\n#include \"stdafx.h\"\n#include \"IniFile.h\"\n#include <stdlib.h>\n\ntypedef struct\n{\n\tunion\n\t{\n\t\tstruct\n\t\t{\n\t\t\tWORD Minor;\n\t\t\tWORD Major;\n\t\t} wVersion;\n\t\tDWORD dwVersion;\n\t};\n\tWORD Release;\n\tWORD Build;\n} FILE_VERSION;\n\n#ifdef _WIN64\ntypedef unsigned long long PLATFORM_DWORD;\nstruct FARJMP\n{\t// x64 far jump | opcode | assembly\n\tBYTE MovOp;\t\t// 48\tmov rax, ptr\n\tBYTE MovRegArg;\t// B8\n\tDWORD64 MovArg;\t// PTR\n\tBYTE PushRaxOp; // 50\tpush rax\n\tBYTE RetOp;\t\t// C3\tretn\n};\n#else\ntypedef unsigned long PLATFORM_DWORD;\nstruct FARJMP\n{\t// x86 far jump | opcode | assembly\n\tBYTE PushOp;\t// 68\tpush ptr\n\tDWORD PushArg;\t// PTR\n\tBYTE RetOp;\t\t// C3\tretn\n};\n#endif\n\nFARJMP Old_SLGetWindowsInformationDWORD, Stub_SLGetWindowsInformationDWORD;\nSLGETWINDOWSINFORMATIONDWORD _SLGetWindowsInformationDWORD;\n\nINI_FILE *IniFile;\nwchar_t LogFile[256] = L\"\\\\rdpwrap.txt\\0\";\nHMODULE hTermSrv;\nHMODULE hSLC;\nPLATFORM_DWORD TermSrvBase;\nFILE_VERSION FV;\nSERVICEMAIN _ServiceMain;\nSVCHOSTPUSHSERVICEGLOBALS _SvchostPushServiceGlobals;\nbool AlreadyHooked = false;\n\nDWORD INIReadDWordHex(INI_FILE *IniFile, char *Sect, char *VariableName, PLATFORM_DWORD Default)\n{\n\tINI_VAR_DWORD Variable;\n\n\tif(IniFile->GetVariableInSection(Sect, VariableName, &Variable))\n\t{\n\t\treturn Variable.ValueHex;\n\t}\n\treturn Default;\n}\n\nvoid INIReadString(INI_FILE *IniFile, char *Sect, char *VariableName, char *Default, char *Ret, DWORD RetSize)\n{\n\tINI_VAR_STRING Variable;\n\n\tmemset(Ret, 0x00, RetSize);\n\tif(!IniFile->GetVariableInSection(Sect, VariableName, &Variable))\n\t{\n\t\tstrcpy_s(Ret, RetSize, Default);\n\t\treturn;\n\t}\n\tstrcpy_s(Ret, RetSize, Variable.Value);\n}\n\nvoid WriteToLog(LPSTR Text)\n{\n\tDWORD dwBytesOfWritten;\n\n\tHANDLE hFile = CreateFile(LogFile, GENERIC_WRITE, FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);\n\tif (hFile == INVALID_HANDLE_VALUE) return;\n\n\tSetFilePointer(hFile, 0, 0, FILE_END);\n\tWriteFile(hFile, Text, strlen(Text), &dwBytesOfWritten, NULL);\n\tCloseHandle(hFile);\n}\n\nHMODULE GetCurrentModule()\n{\n\tHMODULE hModule = NULL;\n\tGetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCWSTR)GetCurrentModule, &hModule);\n\treturn hModule;\n}\n\n/*PLATFORM_DWORD SearchAddressBySignature(char *StartPosition, PLATFORM_DWORD Size, char *Signature, int SignatureSize)\n{\n\tPLATFORM_DWORD AddressReturn = -1;\n\n\tfor (PLATFORM_DWORD i = 0; i < Size; i++)\n\t{\n\t\tfor (int j = 0; StartPosition[i+j] == Signature[j] && j < SignatureSize; j++)\n\t\t{\n\t\t\tif (j == SignatureSize-1) AddressReturn = (PLATFORM_DWORD)&StartPosition[i];\n\t\t}\n\t}\n\n\treturn AddressReturn;\n}*/\n\nbool GetModuleCodeSectionInfo(HMODULE hModule, PLATFORM_DWORD *BaseAddr, PLATFORM_DWORD *BaseSize)\n{\n\tPIMAGE_DOS_HEADER\t\tpDosHeader;\n\tPIMAGE_FILE_HEADER      pFileHeader;\n\tPIMAGE_OPTIONAL_HEADER  pOptionalHeader;\n\n\tif (hModule == NULL) return false;\n\n\tpDosHeader = (PIMAGE_DOS_HEADER)hModule;\n\tpFileHeader = (PIMAGE_FILE_HEADER)(((PBYTE)hModule)+pDosHeader->e_lfanew+4);\n\tpOptionalHeader = (PIMAGE_OPTIONAL_HEADER)(pFileHeader+1);\n\n\t*BaseAddr = (PLATFORM_DWORD)hModule;\n\t*BaseSize = (PLATFORM_DWORD)pOptionalHeader->SizeOfCode;\n\n\tif (*BaseAddr <= 0 || *BaseSize <= 0) return false;\n\treturn true;\n}\n\nvoid SetThreadsState(bool Resume)\n{\n\tHANDLE h, hThread;\n\tDWORD CurrTh, CurrPr;\n\tTHREADENTRY32 Thread;\n\n\tCurrTh = GetCurrentThreadId();\n\tCurrPr = GetCurrentProcessId();\n\n\th = CreateToolhelp32Snapshot(TH32CS_SNAPTHREAD, 0);\n\tif (h != INVALID_HANDLE_VALUE)\n\t{\n\t\tThread.dwSize = sizeof(THREADENTRY32);\n\t\tThread32First(h, &Thread);\n\t\tdo\n\t\t{\n\t\t\tif (Thread.th32ThreadID != CurrTh && Thread.th32OwnerProcessID == CurrPr)\n\t\t\t{\n\t\t\t\thThread = OpenThread(THREAD_SUSPEND_RESUME, false, Thread.th32ThreadID);\n\t\t\t\tif (hThread != INVALID_HANDLE_VALUE)\n\t\t\t\t{\n\t\t\t\t\tif (Resume)\t\tResumeThread(hThread);\n\t\t\t\t\telse\t\t\tSuspendThread(hThread);\n\t\t\t\t\tCloseHandle(hThread);\n\t\t\t\t}\n\t\t\t}\n\t\t} while (Thread32Next(h, &Thread));\n\t\tCloseHandle(h);\n\t}\n}\n\nBOOL __stdcall GetModuleVersion(LPCWSTR lptstrModuleName, FILE_VERSION *FileVersion)\n{\n\ttypedef struct\n\t{\n\t\tWORD             wLength;\n\t\tWORD             wValueLength;\n\t\tWORD             wType;\n\t\tWCHAR            szKey[16];\n\t\tWORD             Padding1;\n\t\tVS_FIXEDFILEINFO Value;\n\t\tWORD             Padding2;\n\t\tWORD             Children;\n\t} VS_VERSIONINFO;\n\n\tHMODULE hMod = GetModuleHandle(lptstrModuleName);\n\tif(!hMod)\n\t{\n\t\treturn false;\n\t}\n\n\tHRSRC hResourceInfo = FindResourceW(hMod, (LPCWSTR)1, (LPCWSTR)0x10);\n\tif(!hResourceInfo)\n\t{\n\t\treturn false;\n\t}\n\n\tVS_VERSIONINFO *VersionInfo = (VS_VERSIONINFO*)LoadResource(hMod, hResourceInfo);\n\tif(!VersionInfo)\n\t{\n\t\treturn false;\n\t}\n\n\tFileVersion->dwVersion = VersionInfo->Value.dwFileVersionMS;\n\tFileVersion->Release = (WORD)(VersionInfo->Value.dwFileVersionLS >> 16);\n\tFileVersion->Build = (WORD)VersionInfo->Value.dwFileVersionLS;\n\n\treturn true;\n}\n\nBOOL __stdcall GetFileVersion(LPCWSTR lptstrFilename, FILE_VERSION *FileVersion)\n{\n\ttypedef struct\n\t{\n\t\tWORD             wLength;\n\t\tWORD             wValueLength;\n\t\tWORD             wType;\n\t\tWCHAR            szKey[16];\n\t\tWORD             Padding1;\n\t\tVS_FIXEDFILEINFO Value;\n\t\tWORD             Padding2;\n\t\tWORD             Children;\n\t} VS_VERSIONINFO;\n\n\tHMODULE hFile = LoadLibraryExW(lptstrFilename, NULL, LOAD_LIBRARY_AS_DATAFILE);\n\tif(!hFile)\n\t{\n\t\treturn false;\n\t}\n\n\tHRSRC hResourceInfo = FindResourceW(hFile, (LPCWSTR)1, (LPCWSTR)0x10);\n\tif(!hResourceInfo)\n\t{\n\t\treturn false;\n\t}\n\n\tVS_VERSIONINFO *VersionInfo = (VS_VERSIONINFO*)LoadResource(hFile, hResourceInfo);\n\tif(!VersionInfo)\n\t{\n\t\treturn false;\n\t}\n\n\tFileVersion->dwVersion = VersionInfo->Value.dwFileVersionMS;\n\tFileVersion->Release = (WORD)(VersionInfo->Value.dwFileVersionLS >> 16);\n\tFileVersion->Build = (WORD)VersionInfo->Value.dwFileVersionLS;\n\n\treturn true;\n}\n\nbool OverrideSL(LPWSTR ValueName, DWORD *Value)\n{\n\tINI_VAR_DWORD Variable = {0};\n\n\tif (IniFile->VariableExists(L\"SLPolicy\", ValueName))\n\t{\n\t\tif (!(IniFile->GetVariableInSection(L\"SLPolicy\", ValueName, &Variable))) *Value = 0;\n\t\telse *Value = Variable.ValueDec;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nHRESULT WINAPI New_SLGetWindowsInformationDWORD(PWSTR pwszValueName, DWORD *pdwValue)\n{\n\t// wrapped SLGetWindowsInformationDWORD function\n\t// termsrv.dll will call this function instead of original SLC.dll\n\n\t// Override SL Policy\n\n\textern FARJMP Old_SLGetWindowsInformationDWORD, Stub_SLGetWindowsInformationDWORD;\n\textern SLGETWINDOWSINFORMATIONDWORD _SLGetWindowsInformationDWORD;\n\n\tchar *Log;\n\tDWORD dw;\n\tSIZE_T bw;\n\tHRESULT Result;\n\n\tLog = new char[1024];\n\twsprintfA(Log, \"Policy query: %S\\r\\n\", pwszValueName);\n\tWriteToLog(Log);\n\tdelete[] Log;\n\n\tif (OverrideSL(pwszValueName, &dw))\n\t{\n\t\t*pdwValue = dw;\n\n\t\tLog = new char[1024];\n\t\twsprintfA(Log, \"Policy rewrite: %i\\r\\n\", dw);\n\t\tWriteToLog(Log);\n\t\tdelete[] Log;\n\n\t\treturn S_OK;\n\t}\n\n\tWriteProcessMemory(GetCurrentProcess(), _SLGetWindowsInformationDWORD, &Old_SLGetWindowsInformationDWORD, sizeof(FARJMP), &bw);\n\tResult = _SLGetWindowsInformationDWORD(pwszValueName, pdwValue);\n\tif (Result == S_OK)\n\t{\n\t\tLog = new char[1024];\n\t\twsprintfA(Log, \"Policy result: %i\\r\\n\", dw);\n\t\tWriteToLog(Log);\n\t\tdelete[] Log;\n\t} else {\n\t\tWriteToLog(\"Policy request failed\\r\\n\");\n\t}\n\tWriteProcessMemory(GetCurrentProcess(), _SLGetWindowsInformationDWORD, &Stub_SLGetWindowsInformationDWORD, sizeof(FARJMP), &bw);\n\n\treturn Result;\n}\n\nHRESULT __fastcall New_Win8SL(PWSTR pwszValueName, DWORD *pdwValue)\n{\n\t// wrapped unexported function SLGetWindowsInformationDWORDWrapper in termsrv.dll\n\t// for Windows 8 support\n\n\t// Override SL Policy\n\n\textern SLGETWINDOWSINFORMATIONDWORD _SLGetWindowsInformationDWORD;\n\n\tchar *Log;\n\tDWORD dw;\n\tHRESULT Result;\n\n\tLog = new char[1024];\n\twsprintfA(Log, \"Policy query: %S\\r\\n\", pwszValueName);\n\tWriteToLog(Log);\n\tdelete[] Log;\n\n\tif (OverrideSL(pwszValueName, &dw))\n\t{\n\t\t*pdwValue = dw;\n\n\t\tLog = new char[1024];\n\t\twsprintfA(Log, \"Policy rewrite: %i\\r\\n\", dw);\n\t\tWriteToLog(Log);\n\t\tdelete[] Log;\n\n\t\treturn S_OK;\n\t}\n\n\tResult = _SLGetWindowsInformationDWORD(pwszValueName, pdwValue);\n\tif (Result == S_OK)\n\t{\n\t\tLog = new char[1024];\n\t\twsprintfA(Log, \"Policy result: %i\\r\\n\", dw);\n\t\tWriteToLog(Log);\n\t\tdelete[] Log;\n\t} else {\n\t\tWriteToLog(\"Policy request failed\\r\\n\");\n\t}\n\n\treturn Result;\n}\n\n#ifndef _WIN64\nHRESULT __fastcall New_Win8SL_CP(DWORD arg1, DWORD *pdwValue, PWSTR pwszValueName, DWORD arg4)\n{\n\t// wrapped unexported function SLGetWindowsInformationDWORDWrapper in termsrv.dll\n\t// for Windows 8 Consumer Preview support\n\n\treturn New_Win8SL(pwszValueName, pdwValue);\n}\n#endif\n\nHRESULT WINAPI New_CSLQuery_Initialize()\n{\n\textern PLATFORM_DWORD TermSrvBase;\n\textern FILE_VERSION FV;\n\n\tchar *Log;\n\tDWORD *bServerSku = NULL;\n\tDWORD *bRemoteConnAllowed = NULL;\n\tDWORD *bFUSEnabled = NULL;\n\tDWORD *bAppServerAllowed = NULL;\n\tDWORD *bMultimonAllowed = NULL;\n\tDWORD *lMaxUserSessions = NULL;\n\tDWORD *ulMaxDebugSessions = NULL;\n\tDWORD *bInitialized = NULL;\n\n\tWriteToLog(\">>> CSLQuery::Initialize\\r\\n\");\n\n\tchar *Sect;\n\tSect = new char[256];\n\tmemset(Sect, 0x00, 256);\n\twsprintfA(Sect, \"%d.%d.%d.%d-SLInit\", FV.wVersion.Major, FV.wVersion.Minor, FV.Release, FV.Build);\n\n\tif (IniFile->SectionExists(Sect))\n\t{\n\t\t#ifdef _WIN64\n\t\tbServerSku = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"bServerSku.x64\", 0));\n\t\tbRemoteConnAllowed = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"bRemoteConnAllowed.x64\", 0));\n\t\tbFUSEnabled = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"bFUSEnabled.x64\", 0));\n\t\tbAppServerAllowed = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"bAppServerAllowed.x64\", 0));\n\t\tbMultimonAllowed = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"bMultimonAllowed.x64\", 0));\n\t\tlMaxUserSessions = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"lMaxUserSessions.x64\", 0));\n\t\tulMaxDebugSessions = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"ulMaxDebugSessions.x64\", 0));\n\t\tbInitialized = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"bInitialized.x64\", 0));\n\t\t#else\n\t\tbServerSku = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"bServerSku.x86\", 0));\n\t\tbRemoteConnAllowed = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"bRemoteConnAllowed.x86\", 0));\n\t\tbFUSEnabled = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"bFUSEnabled.x86\", 0));\n\t\tbAppServerAllowed = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"bAppServerAllowed.x86\", 0));\n\t\tbMultimonAllowed = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"bMultimonAllowed.x86\", 0));\n\t\tlMaxUserSessions = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"lMaxUserSessions.x86\", 0));\n\t\tulMaxDebugSessions = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"ulMaxDebugSessions.x86\", 0));\n\t\tbInitialized = (DWORD*)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"bInitialized.x86\", 0));\n\t\t#endif\n\t}\n\tdelete[] Sect;\n\n\tif (bServerSku)\n\t{\n\t\t*bServerSku = INIReadDWordHex(IniFile, \"SLInit\", \"bServerSku\", 1);\n\n\t\tLog = new char[1024];\n\t\twsprintfA(Log, \"SLInit [0x%p] bServerSku = %d\\r\\n\", bServerSku, *bServerSku);\n\t\tWriteToLog(Log);\n\t\tdelete[] Log;\n\t}\n\tif (bRemoteConnAllowed)\n\t{\n\t\t*bRemoteConnAllowed = INIReadDWordHex(IniFile, \"SLInit\", \"bRemoteConnAllowed\", 1);\n\n\t\tLog = new char[1024];\n\t\twsprintfA(Log, \"SLInit [0x%p] bRemoteConnAllowed = %d\\r\\n\", bRemoteConnAllowed, *bRemoteConnAllowed);\n\t\tWriteToLog(Log);\n\t\tdelete[] Log;\n\t}\n\tif (bFUSEnabled)\n\t{\n\t\t*bFUSEnabled = INIReadDWordHex(IniFile, \"SLInit\", \"bFUSEnabled\", 1);\n\n\t\tLog = new char[1024];\n\t\twsprintfA(Log, \"SLInit [0x%p] bFUSEnabled = %d\\r\\n\", bFUSEnabled, *bFUSEnabled);\n\t\tWriteToLog(Log);\n\t\tdelete[] Log;\n\t}\n\tif (bAppServerAllowed)\n\t{\n\t\t*bAppServerAllowed = INIReadDWordHex(IniFile, \"SLInit\", \"bAppServerAllowed\", 1);\n\n\t\tLog = new char[1024];\n\t\twsprintfA(Log, \"SLInit [0x%p] bAppServerAllowed = %d\\r\\n\", bAppServerAllowed, *bAppServerAllowed);\n\t\tWriteToLog(Log);\n\t\tdelete[] Log;\n\t}\n\tif (bMultimonAllowed)\n\t{\n\t\t*bMultimonAllowed = INIReadDWordHex(IniFile, \"SLInit\", \"bMultimonAllowed\", 1);\n\n\t\tLog = new char[1024];\n\t\twsprintfA(Log, \"SLInit [0x%p] bMultimonAllowed = %d\\r\\n\", bMultimonAllowed, *bMultimonAllowed);\n\t\tWriteToLog(Log);\n\t\tdelete[] Log;\n\t}\n\tif (lMaxUserSessions)\n\t{\n\t\t*lMaxUserSessions = INIReadDWordHex(IniFile, \"SLInit\", \"lMaxUserSessions\", 0);\n\n\t\tLog = new char[1024];\n\t\twsprintfA(Log, \"SLInit [0x%p] lMaxUserSessions = %d\\r\\n\", lMaxUserSessions, *lMaxUserSessions);\n\t\tWriteToLog(Log);\n\t\tdelete[] Log;\n\t}\n\tif (ulMaxDebugSessions)\n\t{\n\t\t*ulMaxDebugSessions = INIReadDWordHex(IniFile, \"SLInit\", \"ulMaxDebugSessions\", 0);\n\n\t\tLog = new char[1024];\n\t\twsprintfA(Log, \"SLInit [0x%p] ulMaxDebugSessions = %d\\r\\n\", ulMaxDebugSessions, *ulMaxDebugSessions);\n\t\tWriteToLog(Log);\n\t\tdelete[] Log;\n\t}\n\tif (bInitialized)\n\t{\n\t\t*bInitialized = INIReadDWordHex(IniFile, \"SLInit\", \"bInitialized\", 1);\n\n\t\tLog = new char[1024];\n\t\twsprintfA(Log, \"SLInit [0x%p] bInitialized = %d\\r\\n\", bInitialized, *bInitialized);\n\t\tWriteToLog(Log);\n\t\tdelete[] Log;\n\t}\n\tWriteToLog(\"<<< CSLQuery::Initialize\\r\\n\");\n\treturn S_OK;\n}\n\nvoid Hook()\n{\n\textern FARJMP Old_SLGetWindowsInformationDWORD, Stub_SLGetWindowsInformationDWORD;\n\textern SLGETWINDOWSINFORMATIONDWORD _SLGetWindowsInformationDWORD;\n\textern HMODULE hTermSrv;\n\textern HMODULE hSLC;\n\textern PLATFORM_DWORD TermSrvBase;\n\textern FILE_VERSION FV;\n\textern wchar_t LogFile[256];\n\n\tAlreadyHooked = true;\n\tchar *Log;\n\n\twchar_t ConfigFile[256] = { 0x00 };\n\tWriteToLog(\"Loading configuration...\\r\\n\");\n\n\tGetModuleFileName(GetCurrentModule(), ConfigFile, 255);\n\tfor (DWORD i = wcslen(ConfigFile); i > 0; i--)\n\t{\n\t\tif (ConfigFile[i] == '\\\\')\n\t\t{\n\t\t\tmemset(&ConfigFile[i + 1], 0x00, ((256 - (i + 1))) * 2);\n\t\t\tmemcpy(&ConfigFile[i + 1], L\"rdpwrap.ini\", strlen(\"rdpwrap.ini\") * 2);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tLog = new char[1024];\n\twsprintfA(Log, \"Configuration file: %S\\r\\n\", ConfigFile);\n\tWriteToLog(Log);\n\tdelete[] Log;\n\n\tIniFile = new INI_FILE(ConfigFile);\n\t// TODO: implement this\n\tif (IniFile == NULL)\n\t{\n\t\tWriteToLog(\"Error: Failed to load configuration\\r\\n\");\n\t\treturn;\n\t}\n\n\tINI_VAR_STRING LogFileVar;\n\n\tif(!(IniFile->GetVariableInSection(\"Main\", \"LogFile\", &LogFileVar)))\n\t{\n\t\tGetModuleFileName(GetCurrentModule(), LogFile, 255);\n\t\tfor(DWORD i = wcslen(LogFile); i > 0; i--)\n\t\t{\n\t\t\tif(LogFile[i] == '\\\\')\n\t\t\t{\n\t\t\t\tmemset(&LogFile[i+1], 0x00, ((256-(i+1)))*2);\n\t\t\t\tmemcpy(&LogFile[i+1], L\"rdpwrap.txt\", strlen(\"rdpwrap.txt\")*2);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t// TODO: Change it before add UNICODE in IniFile\n\t\twchar_t wcLogFile[256];\n\t\tmemset(wcLogFile, 0x00, 256);\n\t\tmbstowcs(wcLogFile, LogFileVar.Value, 255);\n\t\twcscpy(LogFile, wcLogFile);\n\t}\n\n\tSIZE_T bw;\n\tWORD Ver = 0;\n\tPLATFORM_DWORD TermSrvSize, SignPtr;\n\tFARJMP Jump;\n\n\tWriteToLog(\"Initializing RDP Wrapper...\\r\\n\");\n\n\thTermSrv = LoadLibrary(L\"termsrv.dll\");\n\tif (hTermSrv == 0)\n\t{\n\t\tWriteToLog(\"Error: Failed to load Terminal Services library\\r\\n\");\n\t\treturn;\n\t}\n\t_ServiceMain = (SERVICEMAIN)GetProcAddress(hTermSrv, \"ServiceMain\");\n\t_SvchostPushServiceGlobals = (SVCHOSTPUSHSERVICEGLOBALS)GetProcAddress(hTermSrv, \"SvchostPushServiceGlobals\");\n\n\tLog = new char[4096];\n\twsprintfA(Log,\n\t\t\"Base addr:  0x%p\\r\\n\"\n\t\t\"SvcMain:    termsrv.dll+0x%p\\r\\n\"\n\t\t\"SvcGlobals: termsrv.dll+0x%p\\r\\n\",\n\t\thTermSrv,\n\t\t(PLATFORM_DWORD)_ServiceMain - (PLATFORM_DWORD)hTermSrv,\n\t\t(PLATFORM_DWORD)_SvchostPushServiceGlobals - (PLATFORM_DWORD)hTermSrv);\n\tWriteToLog(Log);\n\tdelete[] Log;\n\n\t// check termsrv version\n\tif (GetModuleVersion(L\"termsrv.dll\", &FV))\n\t{\n\t\tVer = (BYTE)FV.wVersion.Minor | ((BYTE)FV.wVersion.Major << 8);\n\t} else {\n\t\t// check NT version\n\t\t// Ver = GetVersion(); // deprecated\n\t\t// Ver = ((Ver & 0xFF) << 8) | ((Ver & 0xFF00) >> 8);\n\t}\n\tif (Ver == 0)\n\t{\n\t\tWriteToLog(\"Error: Failed to detect Terminal Services version\\r\\n\");\n\t\treturn;\n\t}\n\n\tLog = new char[1024];\n\twsprintfA(Log, \"Version:    %d.%d.%d.%d\\r\\n\", FV.wVersion.Major, FV.wVersion.Minor, FV.Release, FV.Build);\n\tWriteToLog(Log);\n\tdelete[] Log;\n\n\t// temporarily freeze threads\n\tWriteToLog(\"Freezing threads...\\r\\n\");\n\tSetThreadsState(false);\n\n\tbool Bool;\n\tif (!(IniFile->GetVariableInSection(\"Main\", \"SLPolicyHookNT60\", &Bool))) Bool = true;\n\n\tif ((Ver == 0x0600) && Bool)\n\t{\n\t\t// Windows Vista\n\t\t// uses SL Policy API (slc.dll)\n\n\t\t// load slc.dll and hook function\n\t\thSLC = LoadLibrary(L\"slc.dll\");\n\t\t_SLGetWindowsInformationDWORD = (SLGETWINDOWSINFORMATIONDWORD)GetProcAddress(hSLC, \"SLGetWindowsInformationDWORD\");\n\t\tif (_SLGetWindowsInformationDWORD != INVALID_HANDLE_VALUE)\n\t\t{\n\t\t\t// rewrite original function to call our function (make hook)\n\n\t\t\tWriteToLog(\"Hook SLGetWindowsInformationDWORD\\r\\n\");\n\t\t\t#ifdef _WIN64\n\t\t\tStub_SLGetWindowsInformationDWORD.MovOp = 0x48;\n\t\t\tStub_SLGetWindowsInformationDWORD.MovRegArg = 0xB8;\n\t\t\tStub_SLGetWindowsInformationDWORD.MovArg = (PLATFORM_DWORD)New_SLGetWindowsInformationDWORD;\n\t\t\tStub_SLGetWindowsInformationDWORD.PushRaxOp = 0x50;\n\t\t\tStub_SLGetWindowsInformationDWORD.RetOp = 0xC3;\n\t\t\t#else\n\t\t\tStub_SLGetWindowsInformationDWORD.PushOp = 0x68;\n\t\t\tStub_SLGetWindowsInformationDWORD.PushArg = (PLATFORM_DWORD)New_SLGetWindowsInformationDWORD;\n\t\t\tStub_SLGetWindowsInformationDWORD.RetOp = 0xC3;\n\t\t\t#endif\n\n\t\t\tReadProcessMemory(GetCurrentProcess(), _SLGetWindowsInformationDWORD, &Old_SLGetWindowsInformationDWORD, sizeof(FARJMP), &bw);\n\t\t\tWriteProcessMemory(GetCurrentProcess(), _SLGetWindowsInformationDWORD, &Stub_SLGetWindowsInformationDWORD, sizeof(FARJMP), &bw);\n\t\t}\n\t}\n\n\tif (!(IniFile->GetVariableInSection(\"Main\", \"SLPolicyHookNT61\", &Bool))) Bool = true;\n\n\tif ((Ver == 0x0601) && Bool)\n\t{\n\t\t// Windows 7\n\t\t// uses SL Policy API (slc.dll)\n\n\t\t// load slc.dll and hook function\n\t\thSLC = LoadLibrary(L\"slc.dll\");\n\t\t_SLGetWindowsInformationDWORD = (SLGETWINDOWSINFORMATIONDWORD)GetProcAddress(hSLC, \"SLGetWindowsInformationDWORD\");\n\t\tif (_SLGetWindowsInformationDWORD != INVALID_HANDLE_VALUE)\n\t\t{\n\t\t\t// rewrite original function to call our function (make hook)\n\n\t\t\tWriteToLog(\"Hook SLGetWindowsInformationDWORD\\r\\n\");\n\t\t\t#ifdef _WIN64\n\t\t\tStub_SLGetWindowsInformationDWORD.MovOp = 0x48;\n\t\t\tStub_SLGetWindowsInformationDWORD.MovRegArg = 0xB8;\n\t\t\tStub_SLGetWindowsInformationDWORD.MovArg = (PLATFORM_DWORD)New_SLGetWindowsInformationDWORD;\n\t\t\tStub_SLGetWindowsInformationDWORD.PushRaxOp = 0x50;\n\t\t\tStub_SLGetWindowsInformationDWORD.RetOp = 0xC3;\n\t\t\t#else\n\t\t\tStub_SLGetWindowsInformationDWORD.PushOp = 0x68;\n\t\t\tStub_SLGetWindowsInformationDWORD.PushArg = (PLATFORM_DWORD)New_SLGetWindowsInformationDWORD;\n\t\t\tStub_SLGetWindowsInformationDWORD.RetOp = 0xC3;\n\t\t\t#endif\n\n\t\t\tReadProcessMemory(GetCurrentProcess(), _SLGetWindowsInformationDWORD, &Old_SLGetWindowsInformationDWORD, sizeof(FARJMP), &bw);\n\t\t\tWriteProcessMemory(GetCurrentProcess(), _SLGetWindowsInformationDWORD, &Stub_SLGetWindowsInformationDWORD, sizeof(FARJMP), &bw);\n\t\t}\n\t}\n\tif (Ver == 0x0602)\n\t{\n\t\t// Windows 8\n\t\t// uses SL Policy internal unexported function\n\n\t\t// load slc.dll and get function\n\t\t// (will be used on intercepting undefined values)\n\t\thSLC = LoadLibrary(L\"slc.dll\");\n\t\t_SLGetWindowsInformationDWORD = (SLGETWINDOWSINFORMATIONDWORD)GetProcAddress(hSLC, \"SLGetWindowsInformationDWORD\");\n\t}\n\tif (Ver == 0x0603)\n\t{\n\t\t// Windows 8.1\n\t\t// uses SL Policy internal inline code\n\t}\n\tif (Ver == 0x0604)\n\t{\n\t\t// Windows 10\n\t\t// uses SL Policy internal inline code\n\t}\n\n\tchar *Sect;\n\tINI_VAR_STRING PatchName;\n\tINI_VAR_BYTEARRAY Patch;\n\tSect = new char[256];\n\tmemset(Sect, 0x00, 256);\n\twsprintfA(Sect, \"%d.%d.%d.%d\", FV.wVersion.Major, FV.wVersion.Minor, FV.Release, FV.Build);\n\n\tif (IniFile->SectionExists(Sect))\n\t{\n\t\tif (GetModuleCodeSectionInfo(hTermSrv, &TermSrvBase, &TermSrvSize))\n\t\t{\n\t\t\t#ifdef _WIN64\n\t\t\tif (!(IniFile->GetVariableInSection(Sect, \"LocalOnlyPatch.x64\", &Bool))) Bool = false;\n\t\t\t#else\n\t\t\tif (!(IniFile->GetVariableInSection(Sect, \"LocalOnlyPatch.x86\", &Bool))) Bool = false;\n\t\t\t#endif\n\t\t\tif (Bool)\n\t\t\t{\n\t\t\t\tWriteToLog(\"Patch CEnforcementCore::GetInstanceOfTSLicense\\r\\n\");\n\t\t\t\tBool = false;\n\t\t\t\t#ifdef _WIN64\n\t\t\t\tSignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"LocalOnlyOffset.x64\", 0));\n\t\t\t\tBool = IniFile->GetVariableInSection(Sect, \"LocalOnlyCode.x64\", &PatchName);\n\t\t\t\t#else\n\t\t\t\tSignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"LocalOnlyOffset.x86\", 0));\n\t\t\t\tBool = IniFile->GetVariableInSection(Sect, \"LocalOnlyCode.x86\", &PatchName);\n\t\t\t\t#endif\n\t\t\t\tif (Bool) Bool = IniFile->GetVariableInSection(\"PatchCodes\", PatchName.Value, &Patch);\n\t\t\t\tif (Bool && (SignPtr > TermSrvBase)) WriteProcessMemory(GetCurrentProcess(), (LPVOID)SignPtr, Patch.Value, Patch.ArraySize, &bw);\n\t\t\t}\n\t\t\t#ifdef _WIN64\n\t\t\tif (!(IniFile->GetVariableInSection(Sect, \"SingleUserPatch.x64\", &Bool))) Bool = false;\n\t\t\t#else\n\t\t\tif (!(IniFile->GetVariableInSection(Sect, \"SingleUserPatch.x86\", &Bool))) Bool = false;\n\t\t\t#endif\n\t\t\tif (Bool)\n\t\t\t{\n\t\t\t\tWriteToLog(\"Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\\r\\n\");\n\t\t\t\tBool = false;\n\t\t\t\t#ifdef _WIN64\n\t\t\t\tSignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"SingleUserOffset.x64\", 0));\n\t\t\t\tBool = IniFile->GetVariableInSection(Sect, \"SingleUserCode.x64\", &PatchName);\n\t\t\t\t#else\n\t\t\t\tSignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"SingleUserOffset.x86\", 0));\n\t\t\t\tBool = IniFile->GetVariableInSection(Sect, \"SingleUserCode.x86\", &PatchName);\n\t\t\t\t#endif\n\t\t\t\tif (Bool) Bool = IniFile->GetVariableInSection(\"PatchCodes\", PatchName.Value, &Patch);\n\t\t\t\tif (Bool && (SignPtr > TermSrvBase)) WriteProcessMemory(GetCurrentProcess(), (LPVOID)SignPtr, Patch.Value, Patch.ArraySize, &bw);\n\t\t\t}\n\t\t\t#ifdef _WIN64\n\t\t\tif (!(IniFile->GetVariableInSection(Sect, \"DefPolicyPatch.x64\", &Bool))) Bool = false;\n\t\t\t#else\n\t\t\tif (!(IniFile->GetVariableInSection(Sect, \"DefPolicyPatch.x86\", &Bool))) Bool = false;\n\t\t\t#endif\n\t\t\tif (Bool)\n\t\t\t{\n\t\t\t\tWriteToLog(\"Patch CDefPolicy::Query\\r\\n\");\n\t\t\t\tBool = false;\n\t\t\t\t#ifdef _WIN64\n\t\t\t\tSignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"DefPolicyOffset.x64\", 0));\n\t\t\t\tBool = IniFile->GetVariableInSection(Sect, \"DefPolicyCode.x64\", &PatchName);\n\t\t\t\t#else\n\t\t\t\tSignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"DefPolicyOffset.x86\", 0));\n\t\t\t\tBool = IniFile->GetVariableInSection(Sect, \"DefPolicyCode.x86\", &PatchName);\n\t\t\t\t#endif\n\t\t\t\tif (Bool) Bool = IniFile->GetVariableInSection(\"PatchCodes\", PatchName.Value, &Patch);\n\t\t\t\tif (Bool && (SignPtr > TermSrvBase)) WriteProcessMemory(GetCurrentProcess(), (LPVOID)SignPtr, Patch.Value, Patch.ArraySize, &bw);\n\t\t\t}\n\t\t\t#ifdef _WIN64\n\t\t\tif (!(IniFile->GetVariableInSection(Sect, \"SLPolicyInternal.x64\", &Bool))) Bool = false;\n\t\t\t#else\n\t\t\tif (!(IniFile->GetVariableInSection(Sect, \"SLPolicyInternal.x86\", &Bool))) Bool = false;\n\t\t\t#endif\n\t\t\tif (Bool)\n\t\t\t{\n\t\t\t\tWriteToLog(\"Hook SLGetWindowsInformationDWORDWrapper\\r\\n\");\n\t\t\t\tchar *FuncName;\n\t\t\t\tFuncName = new char[1024];\n\t\t\t\t#ifdef _WIN64\n\t\t\t\tSignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"SLPolicyOffset.x64\", 0));\n\t\t\t\tJump.MovOp = 0x48;\n\t\t\t\tJump.MovRegArg = 0xB8;\n\t\t\t\tJump.MovArg = (PLATFORM_DWORD)New_Win8SL;\n\t\t\t\tJump.PushRaxOp = 0x50;\n\t\t\t\tJump.RetOp = 0xC3;\n\n\t\t\t\tINIReadString(IniFile, Sect, \"SLPolicyFunc.x64\", \"New_Win8SL\", FuncName, 1024);\n\n\t\t\t\tif (strcmp(FuncName, \"New_Win8SL\"))\n\t\t\t\t{\n\t\t\t\t\tJump.MovArg = (PLATFORM_DWORD)New_Win8SL;\n\t\t\t\t}\n\t\t\t\t#else\n\t\t\t\tSignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"SLPolicyOffset.x86\", 0));\n\t\t\t\tJump.PushOp = 0x68;\n\t\t\t\tJump.PushArg = (PLATFORM_DWORD)New_Win8SL;\n\t\t\t\tJump.RetOp = 0xC3;\n\n\t\t\t\tINIReadString(IniFile, Sect, \"SLPolicyFunc.x86\", \"New_Win8SL\", FuncName, 1024);\n\n\t\t\t\tif (strcmp(FuncName, \"New_Win8SL\"))\n\t\t\t\t{\n\t\t\t\t\tJump.PushArg = (PLATFORM_DWORD)New_Win8SL;\n\t\t\t\t}\n\t\t\t\tif (strcmp(FuncName, \"New_Win8SL_CP\"))\n\t\t\t\t{\n\t\t\t\t\tJump.PushArg = (PLATFORM_DWORD)New_Win8SL_CP;\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t\tdelete[] FuncName;\n\t\t\t\tif (SignPtr > TermSrvBase) WriteProcessMemory(GetCurrentProcess(), (LPVOID)SignPtr, &Jump, sizeof(FARJMP), &bw);\n\t\t\t}\n\t\t\t#ifdef _WIN64\n\t\t\tif (!(IniFile->GetVariableInSection(Sect, \"SLInitHook.x64\", &Bool))) Bool = false;\n\t\t\t#else\n\t\t\tif (!(IniFile->GetVariableInSection(Sect, \"SLInitHook.x86\", &Bool))) Bool = false;\n\t\t\t#endif\n\t\t\tif (Bool)\n\t\t\t{\n\t\t\t\tWriteToLog(\"Hook CSLQuery::Initialize\\r\\n\");\n\t\t\t\tchar *FuncName;\n\t\t\t\tFuncName = new char[1024];\n\t\t\t\t#ifdef _WIN64\n\t\t\t\tSignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"SLInitOffset.x64\", 0));\n\t\t\t\tJump.MovOp = 0x48;\n\t\t\t\tJump.MovRegArg = 0xB8;\n\t\t\t\tJump.MovArg = (PLATFORM_DWORD)New_CSLQuery_Initialize;\n\t\t\t\tJump.PushRaxOp = 0x50;\n\t\t\t\tJump.RetOp = 0xC3;\n\n\t\t\t\tINIReadString(IniFile, Sect, \"SLInitFunc.x64\", \"New_CSLQuery_Initialize\", FuncName, 1024);\n\n\t\t\t\tif (strcmp(FuncName, \"New_CSLQuery_Initialize\"))\n\t\t\t\t{\n\t\t\t\t\tJump.MovArg = (PLATFORM_DWORD)New_CSLQuery_Initialize;\n\t\t\t\t}\n\t\t\t\t#else\n\t\t\t\tSignPtr = (PLATFORM_DWORD)(TermSrvBase + INIReadDWordHex(IniFile, Sect, \"SLInitOffset.x86\", 0));\n\t\t\t\tJump.PushOp = 0x68;\n\t\t\t\tJump.PushArg = (PLATFORM_DWORD)New_CSLQuery_Initialize;\n\t\t\t\tJump.RetOp = 0xC3;\n\n\t\t\t\tINIReadString(IniFile, Sect, \"SLInitFunc.x86\", \"New_CSLQuery_Initialize\", FuncName, 1024);\n\n\t\t\t\tif (strcmp(FuncName, \"New_CSLQuery_Initialize\"))\n\t\t\t\t{\n\t\t\t\t\tJump.PushArg = (PLATFORM_DWORD)New_CSLQuery_Initialize;\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t\tdelete[] FuncName;\n\t\t\t\tif (SignPtr > TermSrvBase) WriteProcessMemory(GetCurrentProcess(), (LPVOID)SignPtr, &Jump, sizeof(FARJMP), &bw);\n\t\t\t}\n\t\t}\n\t}\n\tdelete[] Sect;\n\n\tWriteToLog(\"Resumimg threads...\\r\\n\");\n\tSetThreadsState(true);\n\treturn;\n}\n\nvoid WINAPI ServiceMain(DWORD dwArgc, LPTSTR *lpszArgv)\n{\n\tWriteToLog(\">>> ServiceMain\\r\\n\");\n\tif (!AlreadyHooked) Hook();\n\n\tif (_ServiceMain != NULL) _ServiceMain(dwArgc, lpszArgv);\n\tWriteToLog(\"<<< ServiceMain\\r\\n\");\n}\n\nvoid WINAPI SvchostPushServiceGlobals(void *lpGlobalData)\n{\n\tWriteToLog(\">>> SvchostPushServiceGlobals\\r\\n\");\n\tif (!AlreadyHooked) Hook();\n\n\tif (_SvchostPushServiceGlobals != NULL) _SvchostPushServiceGlobals(lpGlobalData);\n\tWriteToLog(\"<<< SvchostPushServiceGlobals\\r\\n\");\n}\n"
  },
  {
    "path": "src-x86-x64-Fusix/RDPWrap.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio 2012\nProject(\"{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}\") = \"RDPWrap\", \"RDPWrap.vcxproj\", \"{29E4E73B-EBA6-495B-A76C-FBB462196C64}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Win32 = Debug|Win32\n\t\tDebug|x64 = Debug|x64\n\t\tRelease|Win32 = Release|Win32\n\t\tRelease|x64 = Release|x64\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{29E4E73B-EBA6-495B-A76C-FBB462196C64}.Debug|Win32.ActiveCfg = Debug|Win32\n\t\t{29E4E73B-EBA6-495B-A76C-FBB462196C64}.Debug|Win32.Build.0 = Debug|Win32\n\t\t{29E4E73B-EBA6-495B-A76C-FBB462196C64}.Debug|Win32.Deploy.0 = Debug|Win32\n\t\t{29E4E73B-EBA6-495B-A76C-FBB462196C64}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{29E4E73B-EBA6-495B-A76C-FBB462196C64}.Debug|x64.Build.0 = Debug|x64\n\t\t{29E4E73B-EBA6-495B-A76C-FBB462196C64}.Debug|x64.Deploy.0 = Debug|x64\n\t\t{29E4E73B-EBA6-495B-A76C-FBB462196C64}.Release|Win32.ActiveCfg = Release|Win32\n\t\t{29E4E73B-EBA6-495B-A76C-FBB462196C64}.Release|Win32.Build.0 = Release|Win32\n\t\t{29E4E73B-EBA6-495B-A76C-FBB462196C64}.Release|Win32.Deploy.0 = Release|Win32\n\t\t{29E4E73B-EBA6-495B-A76C-FBB462196C64}.Release|x64.ActiveCfg = Release|x64\n\t\t{29E4E73B-EBA6-495B-A76C-FBB462196C64}.Release|x64.Build.0 = Release|x64\n\t\t{29E4E73B-EBA6-495B-A76C-FBB462196C64}.Release|x64.Deploy.0 = Release|x64\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "src-x86-x64-Fusix/RDPWrap.vcxproj",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" ToolsVersion=\"12.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ItemGroup Label=\"ProjectConfigurations\">\n    <ProjectConfiguration Include=\"Debug|Win32\">\n      <Configuration>Debug</Configuration>\n      <Platform>Win32</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Debug|x64\">\n      <Configuration>Debug</Configuration>\n      <Platform>x64</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Release|Win32\">\n      <Configuration>Release</Configuration>\n      <Platform>Win32</Platform>\n    </ProjectConfiguration>\n    <ProjectConfiguration Include=\"Release|x64\">\n      <Configuration>Release</Configuration>\n      <Platform>x64</Platform>\n    </ProjectConfiguration>\n  </ItemGroup>\n  <PropertyGroup Label=\"Globals\">\n    <ProjectGuid>{29E4E73B-EBA6-495B-A76C-FBB462196C64}</ProjectGuid>\n    <Keyword>Win32Proj</Keyword>\n    <RootNamespace>RDPWrap</RootNamespace>\n  </PropertyGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.Default.props\" />\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\" Label=\"Configuration\">\n    <ConfigurationType>DynamicLibrary</ConfigurationType>\n    <UseDebugLibraries>true</UseDebugLibraries>\n    <PlatformToolset>v120</PlatformToolset>\n    <CharacterSet>Unicode</CharacterSet>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\" Label=\"Configuration\">\n    <ConfigurationType>DynamicLibrary</ConfigurationType>\n    <UseDebugLibraries>true</UseDebugLibraries>\n    <PlatformToolset>v120</PlatformToolset>\n    <CharacterSet>Unicode</CharacterSet>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\" Label=\"Configuration\">\n    <ConfigurationType>DynamicLibrary</ConfigurationType>\n    <UseDebugLibraries>false</UseDebugLibraries>\n    <PlatformToolset>v120</PlatformToolset>\n    <WholeProgramOptimization>true</WholeProgramOptimization>\n    <CharacterSet>Unicode</CharacterSet>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|x64'\" Label=\"Configuration\">\n    <ConfigurationType>DynamicLibrary</ConfigurationType>\n    <UseDebugLibraries>false</UseDebugLibraries>\n    <PlatformToolset>v120</PlatformToolset>\n    <WholeProgramOptimization>true</WholeProgramOptimization>\n    <CharacterSet>Unicode</CharacterSet>\n  </PropertyGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.props\" />\n  <ImportGroup Label=\"ExtensionSettings\">\n  </ImportGroup>\n  <ImportGroup Label=\"PropertySheets\" Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">\n    <Import Project=\"$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props\" Condition=\"exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')\" Label=\"LocalAppDataPlatform\" />\n  </ImportGroup>\n  <ImportGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\" Label=\"PropertySheets\">\n    <Import Project=\"$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props\" Condition=\"exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')\" Label=\"LocalAppDataPlatform\" />\n  </ImportGroup>\n  <ImportGroup Label=\"PropertySheets\" Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">\n    <Import Project=\"$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props\" Condition=\"exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')\" Label=\"LocalAppDataPlatform\" />\n  </ImportGroup>\n  <ImportGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|x64'\" Label=\"PropertySheets\">\n    <Import Project=\"$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props\" Condition=\"exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')\" Label=\"LocalAppDataPlatform\" />\n  </ImportGroup>\n  <PropertyGroup Label=\"UserMacros\" />\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">\n    <LinkIncremental>true</LinkIncremental>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\">\n    <LinkIncremental>true</LinkIncremental>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">\n    <LinkIncremental>false</LinkIncremental>\n  </PropertyGroup>\n  <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|x64'\">\n    <LinkIncremental>false</LinkIncremental>\n  </PropertyGroup>\n  <ItemDefinitionGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">\n    <ClCompile>\n      <PrecompiledHeader>Use</PrecompiledHeader>\n      <WarningLevel>Level3</WarningLevel>\n      <Optimization>Disabled</Optimization>\n      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RDPWRAP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <SDLCheck>true</SDLCheck>\n    </ClCompile>\n    <Link>\n      <SubSystem>Windows</SubSystem>\n      <GenerateDebugInformation>true</GenerateDebugInformation>\n      <ModuleDefinitionFile>Export.def</ModuleDefinitionFile>\n    </Link>\n  </ItemDefinitionGroup>\n  <ItemDefinitionGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\">\n    <ClCompile>\n      <PrecompiledHeader>Use</PrecompiledHeader>\n      <WarningLevel>Level3</WarningLevel>\n      <Optimization>Disabled</Optimization>\n      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RDPWRAP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <SDLCheck>true</SDLCheck>\n    </ClCompile>\n    <Link>\n      <SubSystem>Windows</SubSystem>\n      <GenerateDebugInformation>true</GenerateDebugInformation>\n      <ModuleDefinitionFile>Export.def</ModuleDefinitionFile>\n    </Link>\n  </ItemDefinitionGroup>\n  <ItemDefinitionGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">\n    <ClCompile>\n      <PrecompiledHeader>Use</PrecompiledHeader>\n      <Optimization>MaxSpeed</Optimization>\n      <FunctionLevelLinking>true</FunctionLevelLinking>\n      <IntrinsicFunctions>true</IntrinsicFunctions>\n      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;RDPWRAP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <SDLCheck>true</SDLCheck>\n      <SuppressStartupBanner>true</SuppressStartupBanner>\n      <WarningLevel>Level3</WarningLevel>\n      <StructMemberAlignment>1Byte</StructMemberAlignment>\n      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\n    </ClCompile>\n    <Link>\n      <SubSystem>Windows</SubSystem>\n      <GenerateDebugInformation>false</GenerateDebugInformation>\n      <EnableCOMDATFolding>true</EnableCOMDATFolding>\n      <OptimizeReferences>true</OptimizeReferences>\n      <ModuleDefinitionFile>Export.def</ModuleDefinitionFile>\n    </Link>\n    <ProjectReference>\n      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>\n      <LinkLibraryDependencies>true</LinkLibraryDependencies>\n    </ProjectReference>\n  </ItemDefinitionGroup>\n  <ItemDefinitionGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|x64'\">\n    <ClCompile>\n      <PrecompiledHeader>Use</PrecompiledHeader>\n      <Optimization>MaxSpeed</Optimization>\n      <FunctionLevelLinking>true</FunctionLevelLinking>\n      <IntrinsicFunctions>true</IntrinsicFunctions>\n      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;RDPWRAP_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>\n      <SDLCheck>true</SDLCheck>\n      <SuppressStartupBanner>true</SuppressStartupBanner>\n      <WarningLevel>Level3</WarningLevel>\n      <StructMemberAlignment>1Byte</StructMemberAlignment>\n      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>\n    </ClCompile>\n    <Link>\n      <SubSystem>Windows</SubSystem>\n      <GenerateDebugInformation>false</GenerateDebugInformation>\n      <EnableCOMDATFolding>true</EnableCOMDATFolding>\n      <OptimizeReferences>true</OptimizeReferences>\n      <ModuleDefinitionFile>Export.def</ModuleDefinitionFile>\n    </Link>\n    <ProjectReference>\n      <UseLibraryDependencyInputs>false</UseLibraryDependencyInputs>\n      <LinkLibraryDependencies>true</LinkLibraryDependencies>\n    </ProjectReference>\n  </ItemDefinitionGroup>\n  <ItemGroup>\n    <Text Include=\"ReadMe.txt\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ClInclude Include=\"IniFile.h\" />\n    <ClInclude Include=\"stdafx.h\" />\n    <ClInclude Include=\"targetver.h\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ClCompile Include=\"dllmain.cpp\">\n      <CompileAsManaged Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">false</CompileAsManaged>\n      <CompileAsManaged Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\">false</CompileAsManaged>\n      <PrecompiledHeader Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">\n      </PrecompiledHeader>\n      <PrecompiledHeader Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\">\n      </PrecompiledHeader>\n      <CompileAsManaged Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">false</CompileAsManaged>\n      <CompileAsManaged Condition=\"'$(Configuration)|$(Platform)'=='Release|x64'\">false</CompileAsManaged>\n      <PrecompiledHeader Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">\n      </PrecompiledHeader>\n      <PrecompiledHeader Condition=\"'$(Configuration)|$(Platform)'=='Release|x64'\">\n      </PrecompiledHeader>\n    </ClCompile>\n    <ClCompile Include=\"IniFile.cpp\" />\n    <ClCompile Include=\"RDPWrap.cpp\" />\n    <ClCompile Include=\"stdafx.cpp\">\n      <PrecompiledHeader Condition=\"'$(Configuration)|$(Platform)'=='Debug|Win32'\">Create</PrecompiledHeader>\n      <PrecompiledHeader Condition=\"'$(Configuration)|$(Platform)'=='Debug|x64'\">Create</PrecompiledHeader>\n      <PrecompiledHeader Condition=\"'$(Configuration)|$(Platform)'=='Release|Win32'\">Create</PrecompiledHeader>\n      <PrecompiledHeader Condition=\"'$(Configuration)|$(Platform)'=='Release|x64'\">Create</PrecompiledHeader>\n    </ClCompile>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"Export.def\" />\n  </ItemGroup>\n  <Import Project=\"$(VCTargetsPath)\\Microsoft.Cpp.targets\" />\n  <ImportGroup Label=\"ExtensionTargets\">\n  </ImportGroup>\n</Project>"
  },
  {
    "path": "src-x86-x64-Fusix/RDPWrap.vcxproj.filters",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <ItemGroup>\n    <Filter Include=\"Файлы исходного кода\">\n      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>\n      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>\n    </Filter>\n    <Filter Include=\"Заголовочные файлы\">\n      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>\n      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>\n    </Filter>\n    <Filter Include=\"Файлы ресурсов\">\n      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>\n      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>\n    </Filter>\n  </ItemGroup>\n  <ItemGroup>\n    <Text Include=\"ReadMe.txt\" />\n  </ItemGroup>\n  <ItemGroup>\n    <ClInclude Include=\"stdafx.h\">\n      <Filter>Заголовочные файлы</Filter>\n    </ClInclude>\n    <ClInclude Include=\"targetver.h\">\n      <Filter>Заголовочные файлы</Filter>\n    </ClInclude>\n    <ClInclude Include=\"IniFile.h\">\n      <Filter>Заголовочные файлы</Filter>\n    </ClInclude>\n  </ItemGroup>\n  <ItemGroup>\n    <ClCompile Include=\"stdafx.cpp\">\n      <Filter>Файлы исходного кода</Filter>\n    </ClCompile>\n    <ClCompile Include=\"RDPWrap.cpp\">\n      <Filter>Файлы исходного кода</Filter>\n    </ClCompile>\n    <ClCompile Include=\"dllmain.cpp\">\n      <Filter>Файлы исходного кода</Filter>\n    </ClCompile>\n    <ClCompile Include=\"IniFile.cpp\">\n      <Filter>Файлы исходного кода</Filter>\n    </ClCompile>\n  </ItemGroup>\n  <ItemGroup>\n    <None Include=\"Export.def\">\n      <Filter>Файлы исходного кода</Filter>\n    </None>\n  </ItemGroup>\n</Project>"
  },
  {
    "path": "src-x86-x64-Fusix/ReadMe.txt",
    "content": "﻿========================================================================\r\n    БИБЛИОТЕКА ДИНАМИЧЕСКОЙ КОМПОНОВКИ. Обзор проекта RDPWrap\r\n========================================================================\r\n\r\nЭта библиотека DLL RDPWrap создана автоматически с помощью мастера приложений.\r\n\r\nВ этом файле представлена сводка содержимого всех файлов, входящих в состав приложения RDPWrap.\r\n\r\n\r\nRDPWrap.vcxproj\r\n    Это основной файл проекта VC++, создаваемый с помощью мастера приложений. Он содержит данные о версии языка Visual C++, использованной для создания файла, а также сведения о платформах, конфигурациях и функциях проекта, выбранных с помощью мастера приложений.\r\n\r\nRDPWrap.vcxproj.filters\r\n    Это файл фильтров для проектов VC++, созданный с помощью мастера приложений. Он содержит сведения о сопоставлениях между файлами в вашем проекте и фильтрами. Эти сопоставления используются в среде IDE для группировки файлов с одинаковыми расширениями в одном узле (например CPP-файлы сопоставляются с фильтром \"Исходные файлы\").\r\n\r\nRDPWrap.cpp\r\n    Основной исходный файл библиотеки DLL.\r\n\r\n\tПри создании этой библиотеки DLL не выполняется экспорт символов. Поэтому при ее построении не создается LIB-файл. Если в этом проекте требуется определить зависимость от другого проекта, необходимо добавить код для экспорта символов из библиотеки DLL, чтобы обеспечить создание библиотеки экспорта, или задать значение «Да» для свойства «Пропустить входную библиотеку» на странице общих свойств папки «Компоновщик» в диалоговом окне «Страницы свойств» проекта.\r\n\r\n/////////////////////////////////////////////////////////////////////////////\r\nДругие стандартные файлы:\r\n\r\nStdAfx.h, StdAfx.cpp\r\n    Эти файлы используются для построения файла предкомпилированного заголовка (PCH) с именем RDPWrap.pch и файла предкомпилированных типов с именем StdAfx.obj.\r\n\r\n/////////////////////////////////////////////////////////////////////////////\r\nПрочие примечания.\r\n\r\nС помощью комментариев «TODO:» в мастере приложений обозначаются фрагменты исходного кода, которые необходимо дополнить или изменить.\r\n\r\n/////////////////////////////////////////////////////////////////////////////\r\n"
  },
  {
    "path": "src-x86-x64-Fusix/dllmain.cpp",
    "content": "// dllmain.cpp:      DLL.\n#include \"stdafx.h\"\n\nBOOL APIENTRY DllMain( HMODULE hModule,\n                       DWORD  ul_reason_for_call,\n                       LPVOID lpReserved\n\t\t\t\t\t )\n{\n\treturn true;\n}\n\n"
  },
  {
    "path": "src-x86-x64-Fusix/stdafx.cpp",
    "content": "// stdafx.cpp:  ,     \n// RDPWrap.pch   \n// stdafx.obj       \n\n#include \"stdafx.h\"\n\n// TODO:          STDAFX.H\n// ,     \n"
  },
  {
    "path": "src-x86-x64-Fusix/stdafx.h",
    "content": "// stdafx.h:       \n//      ,   , \n//   \n//\n\n#pragma once\n\n#include \"targetver.h\"\n\n#define WIN32_LEAN_AND_MEAN             //       Windows\n#define _CRT_SECURE_NO_WARNINGS\n\n\n//   Windows:\n#include <windows.h>\n#include <TlHelp32.h>\n\n\n// TODO:      ,   \n\ntypedef VOID\t(WINAPI* SERVICEMAIN)(DWORD, LPTSTR*);\ntypedef VOID\t(WINAPI* SVCHOSTPUSHSERVICEGLOBALS)(VOID*);\ntypedef HRESULT (WINAPI* SLGETWINDOWSINFORMATIONDWORD)(PCWSTR, DWORD*);"
  },
  {
    "path": "src-x86-x64-Fusix/targetver.h",
    "content": "#pragma once\n\n//  SDKDDKVer.h       Windows.\n\n//         Windows,  WinSDKVer.h \n//    _WIN32_WINNT      SDKDDKVer.h.\n\n#include <SDKDDKVer.h>\n"
  },
  {
    "path": "technical.txt",
    "content": "RDP Wrapper Library project by Stas'M\r\n\r\nTerminal Services supported versions\r\n6.0.X.X          (Windows Vista, any)                           [policy hook only]\r\n6.0.6000.16386   (Windows Vista)                                [policy hook + extended patch]\r\n6.0.6000.20723   (Windows Vista with KB944917)                  [todo]\r\n6.0.6001.18000   (Windows Vista SP1)                            [policy hook + extended patch]\r\n6.0.6001.22286   (Windows Vista SP1 with KB958612)              [todo]\r\n6.0.6001.22357   (Windows Vista SP1 with KB958612 v2)           [todo]\r\n6.0.6001.22323   (Windows Vista SP1 with KB960742)              [todo]\r\n6.0.6001.22392   (Windows Vista SP1 with KB968680)              [todo]\r\n6.0.6001.22565   (Windows Vista SP1 with KB977541)              [todo]\r\n6.0.6001.22635   (Windows Vista SP1 with KB970911)              [todo]\r\n6.0.6001.22801   (Windows Vista SP1 with KB2381675)             [todo]\r\n6.0.6002.18005   (Windows Vista SP2)                            [policy hook + extended patch]\r\n6.0.6002.22269   (Windows Vista SP2 with KB977541)              [todo]\r\n6.0.6002.22340   (Windows Vista SP2 with KB970911)              [todo]\r\n6.0.6002.22515   (Windows Vista SP2 with KB2381675)             [todo]\r\n6.0.6002.22641   (Windows Vista SP2 with KB2523307)             [todo]\r\n6.0.6002.22790   (Windows Vista SP2 with KB2672601)             [todo]\r\n6.0.6002.19214   (Windows Vista SP2 with KB3003743 GDR)         [policy hook + extended patch]\r\n6.0.6002.23521   (Windows Vista SP2 with KB3003743 LDR)         [policy hook + extended patch]\r\n6.1.X.X          (Windows 7, any)                               [policy hook only]\r\n6.1.7100.0       (Windows 7 Release Candidate)                  [todo]\r\n6.1.7600.16385   (Windows 7)                                    [policy hook + extended patch]\r\n6.1.7600.20661   (Windows 7 with KB951422)                      [todo]\r\n6.1.7600.21085   (Windows 7 with KB951422 v2)                   [todo]\r\n6.1.7600.20621   (Windows 7 with KB979470)                      [todo]\r\n6.1.7600.20890   (Windows 7 with KB2479710)                     [policy hook + extended patch]\r\n6.1.7600.21316   (Windows 7 with KB2750090)                     [policy hook + extended patch]\r\n6.1.7600.21420   (Windows 7 with KB2800789)                     [todo]\r\n6.1.7601.17514   (Windows 7 SP1)                                [policy hook + extended patch]\r\n6.1.7601.21855   (Windows 7 SP1 with KB951422 v2)               [todo]\r\n6.1.7601.21650   (Windows 7 SP1 with KB2479710)                 [policy hook + extended patch]\r\n6.1.7601.21866   (Windows 7 SP1 with KB2647409)                 [policy hook + extended patch]\r\n6.1.7601.22104   (Windows 7 SP1 with KB2750090)                 [policy hook + extended patch]\r\n6.1.7601.22213   (Windows 7 SP1 with KB2800789)                 [todo]\r\n6.1.7601.22476   (Windows 7 SP1 with KB2870165)                 [todo]\r\n6.1.7601.22435   (Windows 7 SP1 with KB2878424)                 [todo]\r\n6.1.7601.22477   (Windows 7 SP1 with KB2896256)                 [todo]\r\n6.1.7601.18540   (Windows 7 SP1 with KB2984972 GDR)             [policy hook + extended patch]\r\n6.1.7601.22750   (Windows 7 SP1 with KB2984972 LDR)             [policy hook + extended patch]\r\n6.1.7601.18637   (Windows 7 SP1 with KB3003743 GDR)             [policy hook + extended patch]\r\n6.1.7601.22843   (Windows 7 SP1 with KB3003743 LDR)             [policy hook + extended patch]\r\n6.1.7601.23403   (Windows 7 SP1 with KB3125574)                 [policy hook + extended patch]\r\n6.1.7601.24234   (Windows 7 SP1 with KB4462923)                 [policy hook + extended patch]\r\n6.2.8102.0       (Windows 8 Developer Preview)                  [policy hook + extended patch]\r\n6.2.8250.0       (Windows 8 Consumer Preview)                   [policy hook + extended patch]\r\n6.2.8400.0       (Windows 8 Release Preview)                    [policy hook + extended patch]\r\n6.2.9200.16384   (Windows 8)                                    [policy hook + extended patch]\r\n6.2.9200.17048   (Windows 8 with KB2973501 GDR)                 [policy hook + extended patch]\r\n6.2.9200.21166   (Windows 8 with KB2973501 LDR)                 [policy hook + extended patch]\r\n6.3.9431.0       (Windows 8.1 Preview)                          [init hook + extended patch]\r\n6.3.9600.16384   (Windows 8.1)                                  [init hook + extended patch]\r\n6.3.9600.17095   (Windows 8.1 with KB2959626)                   [init hook + extended patch]\r\n6.3.9600.17415   (Windows 8.1 with KB3000850)                   [init hook + extended patch]\r\n6.3.9600.18692   (Windows 8.1 with KB4022720)                   [init hook + extended patch]\r\n6.3.9600.18708   (Windows 8.1 with KB4025335)                   [init hook + extended patch]\r\n6.3.9600.18928   (Windows 8.1 with KB4088876)                   [init hook + extended patch]\r\n6.3.9600.19093   (Windows 8.1 with KB4343891)                   [init hook + extended patch]\r\n6.4.9841.0       (Windows 10 Technical Preview)                 [init hook + extended patch]\r\n6.4.9860.0       (Windows 10 Technical Preview UP1)             [init hook + extended patch]\r\n6.4.9879.0       (Windows 10 Technical Preview UP2)             [init hook + extended patch]\r\n10.0.9926.0      (Windows 10 Pro Technical Preview)             [init hook + extended patch]\r\n10.0.10041.0     (Windows 10 Pro Technical Preview UP1)         [init hook + extended patch]\r\n10.0.10049.0     (Windows 10 Pro Technical Preview UP2)         [todo]\r\n10.0.10061.0     (Windows 10 Pro Technical Preview UP3)         [todo]\r\n10.0.10240.16384 (Windows 10 RTM)                               [init hook + extended patch]\r\n10.0.10525.0     (Windows 10 th2_release.150812-1658)           [todo]\r\n10.0.10532.0     (Windows 10 th2_release.150822-1406)           [todo]\r\n10.0.10547.0     (Windows 10 th2_release.150913-1511)           [todo]\r\n10.0.10586.0     (Windows 10 th2_release.151029-1700)           [init hook + extended patch]\r\n10.0.10586.589   (Windows 10 th2_release.160906-1759)           [init hook + extended patch]\r\n10.0.11082.1000  (Windows 10 rs1_release.151210-2021)           [init hook + extended patch]\r\n10.0.11102.1000  (Windows 10 rs1_release.160113-1800)           [init hook + extended patch]\r\n10.0.14251.1000  (Windows 10 rs1_release.160124-1059)           [init hook + extended patch]\r\n10.0.14271.1000  (Windows 10 rs1_release.160218-2310)           [init hook + extended patch]\r\n10.0.14279.1000  (Windows 10 rs1_release.160229-1700)           [init hook + extended patch]\r\n10.0.14295.1000  (Windows 10 rs1_release.160318-1628)           [init hook + extended patch]\r\n10.0.14300.1000  (Windows Server 2016 Technical Preview 5)      [init hook + extended patch]\r\n10.0.14316.1000  (Windows 10 rs1_release.160402-2227)           [init hook + extended patch]\r\n10.0.14328.1000  (Windows 10 rs1_release.160418-1609)           [init hook + extended patch]\r\n10.0.14332.1001  (Windows 10 rs1_release.160422-1940)           [init hook + extended patch]\r\n10.0.14342.1000  (Windows 10 rs1_release.160506-1708)           [init hook + extended patch]\r\n10.0.14352.1002  (Windows 10 rs1_release.160522-1930)           [init hook + extended patch]\r\n10.0.14366.0     (Windows 10 rs1_release.160610-1700)           [init hook + extended patch]\r\n10.0.14367.0     (Windows 10 rs1_release.160613-1700)           [init hook + extended patch]\r\n10.0.14372.0     (Windows 10 rs1_release.160620-2342)           [init hook + extended patch]\r\n10.0.14379.0     (Windows 10 rs1_release.160627-1607)           [init hook + extended patch]\r\n10.0.14383.0     (Windows 10 rs1_release.160701-1839)           [init hook + extended patch]\r\n10.0.14385.0     (Windows 10 rs1_release.160706-1700)           [init hook + extended patch]\r\n10.0.14388.0     (Windows 10 rs1_release.160709-1635)           [init hook + extended patch]\r\n10.0.14393.0     (Windows 10 rs1_release.160715-1616)           [init hook + extended patch]\r\n10.0.14393.1198  (Windows 10 rs1_release_sec.170427-1353)       [init hook + extended patch]\r\n10.0.14393.1737  (Windows 10 rs1_release_inmarket.170914-1249)  [init hook + extended patch]\r\n10.0.14393.2457  (Windows 10 rs1_release_inmarket.180822-1743)  [init hook + extended patch]\r\n10.0.14901.1000  (Windows 10 rs_prerelease.160805-1700)         [init hook + extended patch]\r\n10.0.14905.1000  (Windows 10 rs_prerelease.160811-1739)         [init hook + extended patch]\r\n10.0.14915.1000  (Windows 10 rs_prerelease.160826-1902)         [init hook + extended patch]\r\n10.0.14926.1000  (Windows 10 rs_prerelease.160910-1529)         [init hook + extended patch]\r\n10.0.14931.1000  (Windows 10 rs_prerelease.160916-1700)         [init hook + extended patch]\r\n10.0.14936.1000  (Windows 10 rs_prerelease.160923-1700)         [init hook + extended patch]\r\n10.0.14942.1000  (Windows 10 rs_prerelease.161003-1929)         [init hook + extended patch]\r\n10.0.14946.1000  (Windows 10 rs_prerelease.161007-1700)         [init hook + extended patch]\r\n10.0.14951.1000  (Windows 10 rs_prerelease.161014-1700)         [init hook + extended patch]\r\n10.0.14955.1000  (Windows 10 rs_prerelease.161020-1700)         [init hook + extended patch]\r\n10.0.14959.1000  (Windows 10 rs_prerelease.161026-1700)         [init hook + extended patch]\r\n10.0.14965.1001  (Windows 10 rs_prerelease.161104-1700)         [init hook + extended patch]\r\n10.0.14971.1000  (Windows 10 rs_prerelease.161111-1700)         [init hook + extended patch]\r\n10.0.14986.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.14997.1001  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.15002.1001  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.15007.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.15014.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.15019.1000  (Windows 10 rs_prerelease.170121-1513)         [init hook + extended patch]\r\n10.0.15025.1000  (Windows 10 rs_prerelease.170127-1750)         [init hook + extended patch]\r\n10.0.15031.0     (Windows 10 rs2_release.170204-1546)           [init hook + extended patch]\r\n10.0.15042.0     (Windows 10 rs2_release.170219-2329)           [init hook + extended patch]\r\n10.0.15046.0     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.15048.0     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.15055.0     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.15058.0     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.15061.0     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.15063.0     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.15063.296   (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.15063.994   (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.15063.1155  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16179.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16184.1001  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16199.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16215.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16232.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16237.1001  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16241.1001  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16251.0     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16251.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16257.1     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16257.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16273.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16275.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16278.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16281.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16288.1     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16291.0     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16294.1     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16296.0     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16299.0     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16299.15    (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16353.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.16362.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.17004.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.17017.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.17025.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.17035.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.17040.1000  (Windows 10 WinBuild.160101.0800)              [todo]\r\n10.0.17046.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.17063.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.17074.1002  (Windows 10 WinBuild.160101.0800)              [todo]\r\n10.0.17083.1000  (Windows 10 WinBuild.160101.0800)              [todo]\r\n10.0.17115.1     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.17128.1     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.17133.1     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.17134.1     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.17723.1000  (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n10.0.17763.1     (Windows 10 WinBuild.160101.0800)              [init hook + extended patch]\r\n\r\nSource code changelog (rdpwrap library):\r\n\r\n2018.10.10 :\r\n- added support for termsrv.dll 6.1.7601.24234 x86\r\n\r\n2018.10.04 :\r\n- added support for termsrv.dll 10.0.14393.2457 x86\r\n\r\n2018.10.03 :\r\n- added support for termsrv.dll 6.1.7601.24234 x64\r\n- added support for termsrv.dll 10.0.15063.994 x64\r\n- added support for termsrv.dll 10.0.17723.1000 x64\r\n- added support for termsrv.dll 10.0.17763.1\r\n\r\n2018.09.10 :\r\n- added support for termsrv.dll 6.1.7600.20890\r\n- added support for termsrv.dll 6.1.7600.21316\r\n- added support for termsrv.dll 6.1.7601.21650\r\n- added support for termsrv.dll 6.1.7601.21866\r\n- added support for termsrv.dll 6.1.7601.22104\r\n- added support for termsrv.dll 6.3.9600.19093\r\n- added support for termsrv.dll 10.0.14393.2457 x64\r\n- added support for termsrv.dll 10.0.15063.1155 x64\r\n\r\n2018.05.16 :\r\n- added support for termsrv.dll 10.0.17115.1\r\n- added support for termsrv.dll 10.0.17128.1\r\n- added support for termsrv.dll 10.0.17133.1\r\n- added support for termsrv.dll 10.0.17134.1\r\n\r\n2018.03.26 :\r\n- added support for termsrv.dll 6.3.9600.18928 by 1nd1g0\r\n\r\n2017.12.27 :\r\n- added support for termsrv.dll 10.0.17017.1000\r\n- added support for termsrv.dll 10.0.17025.1000\r\n- added support for termsrv.dll 10.0.17035.1000\r\n- added support for termsrv.dll 10.0.17046.1000\r\n- added support for termsrv.dll 10.0.17063.1000\r\n\r\n2017.10.13 :\r\n- added support for termsrv.dll 10.0.14393.1737\r\n- added support for termsrv.dll 10.0.16299.0\r\n- added support for termsrv.dll 10.0.16299.15\r\n- added support for termsrv.dll 10.0.17004.1000\r\n\r\n2017.09.24 :\r\n- added support for termsrv.dll 10.0.16291.0\r\n- added support for termsrv.dll 10.0.16294.1\r\n- added support for termsrv.dll 10.0.16296.0\r\n- added support for termsrv.dll 10.0.16362.1000\r\n\r\n2017.09.15 :\r\n- added support for termsrv.dll 10.0.16288.1\r\n\r\n2017.09.06 :\r\n- added support for termsrv.dll 10.0.16273.1000\r\n- added support for termsrv.dll 10.0.16275.1000\r\n- added support for termsrv.dll 10.0.16278.1000\r\n- added support for termsrv.dll 10.0.16281.1000\r\n- added support for termsrv.dll 10.0.16353.1000\r\n\r\n2017.08.04 :\r\n- added support for termsrv.dll 10.0.16257.1\r\n- added support for termsrv.dll 10.0.16257.1000\r\n\r\n2017.07.30 :\r\n- added support for termsrv.dll 6.3.9600.18708\r\n- added support for termsrv.dll 10.0.16232.1000\r\n- added support for termsrv.dll 10.0.16237.1001\r\n- added support for termsrv.dll 10.0.16241.1001\r\n- added support for termsrv.dll 10.0.16251.0\r\n- added support for termsrv.dll 10.0.16251.1000\r\n\r\n2017.06.29 :\r\n- added support for termsrv.dll 6.3.9600.18692\r\n\r\n2017.06.10 :\r\n- added support for termsrv.dll 10.0.15063.296\r\n- added support for termsrv.dll 10.0.16215.1000\r\n\r\n2017.05.29 :\r\n- added support for termsrv.dll 10.0.16199.1000\r\n\r\n2017.05.17 :\r\n- added support for termsrv.dll 10.0.14997.1001 x64\r\n\r\n2017.05.12 :\r\n- added support for termsrv.dll 10.0.14393.1198 x86\r\n\r\n2017.05.03 :\r\n- added support for termsrv.dll 10.0.16179.1000\r\n- added support for termsrv.dll 10.0.16184.1001\r\n\r\n2017.03.22 :\r\n- added support for termsrv.dll 10.0.15063.0\r\n\r\n2017.03.21 :\r\n- added support for termsrv.dll 10.0.15061.0\r\n\r\n2017.03.16 :\r\n- added support for termsrv.dll 10.0.15058.0\r\n\r\n2017.03.14 :\r\n- added support for termsrv.dll 10.0.15055.0\r\n\r\n2017.03.05 :\r\n- added support for termsrv.dll 10.0.15048.0\r\n\r\n2017.03.02 :\r\n- added support for termsrv.dll 10.0.15046.0\r\n\r\n2017.03.01 :\r\n- added support for termsrv.dll 10.0.15031.0\r\n- added support for termsrv.dll 10.0.15042.0\r\n\r\n2017.02.03 :\r\n- added support for termsrv.dll 10.0.15025.1000 x64\r\n\r\n2017.01.28 :\r\n- added support for termsrv.dll 10.0.15019.1000\r\n\r\n2017.01.21 :\r\n- added support for termsrv.dll 10.0.15014.1000\r\n\r\n2017.01.15 :\r\n- added support for termsrv.dll 10.0.15007.1000\r\n\r\n2017.01.12 :\r\n- added support for termsrv.dll 10.0.15002.1001\r\n\r\n2016.12.23 :\r\n- added support for termsrv.dll 10.0.14986.1000\r\n\r\n2016.11.19 :\r\n- added support for termsrv.dll 10.0.14959.1000\r\n- added support for termsrv.dll 10.0.14965.1001\r\n- added support for termsrv.dll 10.0.14971.1000\r\n\r\n2016.10.28 :\r\n- added support for termsrv.dll 10.0.14955.1000\r\n\r\n2016.10.21 :\r\n- added support for termsrv.dll 10.0.14951.1000\r\n\r\n2016.10.19 :\r\n- added support for termsrv.dll 10.0.14946.1000\r\n\r\n2016.10.08 :\r\n- added support for termsrv.dll 10.0.14942.1000\r\n\r\n2016.09.30 :\r\n- added support for termsrv.dll 10.0.14936.1000\r\n\r\n2016.09.27 :\r\n- added support for termsrv.dll 10.0.14931.1000\r\n\r\n2016.09.15 :\r\n- added support for termsrv.dll 10.0.14926.1000\r\n\r\n2016.09.14 :\r\n- added support for termsrv.dll 10.0.10586.589\r\n\r\n2016.09.03 :\r\n- added support for termsrv.dll 10.0.14915.1000\r\n\r\n2016.08.28 :\r\n- added support for termsrv.dll 6.1.7601.23403\r\n- added support for termsrv.dll 10.0.14901.1000\r\n- added support for termsrv.dll 10.0.14905.1000\r\n\r\n2016.08.12 :\r\n- added support for termsrv.dll 10.0.14385.0\r\n\r\n2016.08.01 :\r\n- preparing the release\r\n\r\n2016.07.23 :\r\n- added online install mode to installer\r\n- added feature to keep settings on uninstall\r\n- fixed update firewall rule on port change in config tool\r\n- added feature to hide users on logon\r\n\r\n2016.07.22 :\r\n- added support for termsrv.dll 10.0.14393.0\r\n\r\n2016.07.15 :\r\n- added support for termsrv.dll 10.0.14383.0\r\n- added support for termsrv.dll 10.0.14388.0\r\n\r\n2016.07.06 :\r\n- added support for termsrv.dll 10.0.14379.0\r\n\r\n2016.06.27 :\r\n- added support for termsrv.dll 10.0.14372.0 x86\r\n\r\n2016.06.26 :\r\n- added support for termsrv.dll 10.0.14372.0 x64 by kbmorris\r\n\r\n2016.06.17 :\r\n- fixed issue with termsrv.dll 10.0.14352.1002\r\n- added support for termsrv.dll 10.0.14366.0\r\n- added support for termsrv.dll 10.0.14367.0\r\n\r\n2016.05.30 :\r\n- added support for termsrv.dll 10.0.14352.1002\r\n\r\n2016.05.14 :\r\n- added support for termsrv.dll 10.0.14342.1000\r\n\r\n2016.05.08 :\r\n- added support for termsrv.dll 10.0.14300.1000 x64\r\n- added support for termsrv.dll 10.0.14328.1000\r\n\r\n2016.04.29 :\r\n- added support for termsrv.dll 10.0.14332.1001 by maxpiva\r\n\r\n2016.04.14 :\r\n- added support for termsrv.dll 10.0.14316.1000\r\n\r\n2016.04.06 :\r\n- added support for termsrv.dll 10.0.14295.1000\r\n\r\n2016.03.07 :\r\n- added experimental codes for ARMv7 architecture (see rdpwrap-arm-kb.ini)\r\n- Windows RT / termsrv.dll 6.2.9200.16384\r\n- Windows RT 8.1 / termsrv.dll 6.3.9600.16384\r\n- Windows RT 8.1 / termsrv.dll 6.3.9600.17095\r\n\r\n2016.03.06 :\r\n- added support for termsrv.dll 10.0.14279.1000\r\n\r\n2016.02.29 :\r\n- added support for termsrv.dll 10.0.14271.1000\r\n\r\n2016.01.28 :\r\n- added support for termsrv.dll 10.0.14251.1000\r\n\r\n2016.01.26 :\r\n- added support for termsrv.dll 10.0.11102.1000\r\n\r\n2016.01.15 :\r\n- updated messages in the installer\r\n- added support for termsrv.dll 10.0.11082.1000\r\n\r\n2015.11.14 :\r\n- added support for termsrv.dll 10.0.10586.0\r\n\r\n2015.08.11 :\r\n- embed new rdpclip versions in the installer (for NT 6.0 and 6.1)\r\n- preparing the release\r\n\r\n2015.08.07 :\r\n- added INI update feature to installer\r\n\r\n2015.07.30 :\r\n- fixed issue with Windows 10 Home x86 (wrong LocalOnly offset was specified in INI file)\r\n\r\n2015.07.17 :\r\n- added support for termsrv.dll 10.0.10240.16384\r\n- added HOW TO hints to KB (so other reverse engineers can do this hard work more easier)\r\n\r\n2015.07.16 :\r\n- moved all comments from INI file to Knowledge Base text file\r\n- now INI file have smaller size\r\n- updated RDP checker: changed IP Address to 127.0.0.2 (sometimes client doesn't want to connect .1), updated text message\r\n- updated RDP config: list all possible shadowing modes, also write group policy\r\n- updated installer: added workaround for 1056 error\r\n- updated copyright years in source code\r\n- obtained files from build 10.0.10240.16384\r\n- researching Windows 10 RTM\r\n\r\n2015.03.23 :\r\n- researching Windows 10 Pro Technical Preview UP1\r\n- added support for termsrv.dll 10.0.10041.0\r\n\r\n2015.03.20 :\r\n- new build 10.0.10041.0 was released, obtaining files...\r\n\r\n2015.01.26 :\r\n- researching Windows 10 Pro Technical Preview (10.0.9926.0 x86)\r\n- added support for termsrv.dll 10.0.9926.0 (x86)\r\n\r\n2015.01.22 :\r\n- v-yadli contributed offsets for version 10.0.9926.0 (x64)\r\n\r\n2014.12.13 :\r\n- added more policy values to INI file\r\n\r\n2014.12.10 :\r\n- C++ version seems to work well now!\r\n- added support for termsrv.dll 6.4.9879.0\r\n- preparing the new release\r\n\r\n2014.12.09 :\r\n- many bug fixes in C++ version, you can track it in the git history :)\r\n- it can be compiled now :D\r\n- we are getting closer to the finish line!\r\n\r\n2014.12.03 :\r\n- added INI reader by Fusix for C++ version\r\n- asulwer also helped with the development\r\n\r\n2014.11.25 :\r\n- corrected some typos in INI file\r\n- added EasyPrint policy value\r\n\r\n2014.11.24 :\r\n- added support for termsrv.dll 6.3.9600.17415\r\n\r\n2014.11.21 :\r\n- new LiteINI module to read INI files\r\n- added support to store patch settings in INI file\r\n- version support can be extended without recompilation\r\n- C++ version needs to be updated\r\n\r\n2014.11.20 :\r\n- improved comments\r\n- researching KB3000850\r\n- found required files\r\n- improving RDPWrap...\r\n- placing signatures, offsets, values, etc in separate config file\r\n- working with code\r\n\r\n2014.11.13 :\r\n- researching KB3003743\r\n- added support for version 6.0.6002.19214\r\n- added support for version 6.0.6002.23521\r\n- added support for version 6.1.7601.18637\r\n- added support for version 6.1.7601.22843\r\n\r\n2014.11.02 :\r\n- researching termsrv.dll 6.4.9860.0\r\n- done\r\n\r\n2014.10.19 :\r\n- added support for version 6.0.6000.16386 (x64)\r\n- added support for version 6.0.6001.18000 (x64)\r\n- added support for version 6.1.7600.16385\r\n\r\n2014.10.18 :\r\n- corrected some typos in source\r\n- simplified signature constants\r\n- added support for version 6.0.6000.16386 (x86)\r\n- added support for version 6.0.6001.18000 (x86)\r\n- added support for version 6.0.6002.18005\r\n- added support for version 6.1.7601.17514\r\n- added support for version 6.1.7601.18540\r\n- added support for version 6.1.7601.22750\r\n- added support for version 6.2.9200.17048\r\n- added support for version 6.2.9200.21166\r\n\r\n2014.10.17 :\r\n- collecting information about all versions of Terminal Services beginning from Vista\r\n- added [todo] to the versions list\r\n\r\n2014.10.16 :\r\n- got new updates: KB2984972 for Win 7 (still works with 2 concurrent users) and KB2973501 for Win 8 (doesn't work)\r\n\r\n2014.10.02 :\r\n- researching Windows 10 TP Remote Desktop\r\n- done! even without debugging symbols ^^)\r\n\r\n2014.07.20 :\r\n- added support for Windows 8 Release Preview\r\n- added support for Windows 8 Consumer Preview\r\n- added support for Windows 8 Developer Preview\r\n\r\n2014.07.19 :\r\n- improved patching of Windows 8\r\n- added policy patches\r\n- will patch CDefPolicy::Query\r\n- will patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n\r\n2014.07.18 :\r\n- researched patched files from MDL forum\r\n- CSLQuery::GetMaxSessions requires no patching\r\n- it's better to change the default policy, so...\r\n- will patch CDefPolicy::Query\r\n- will patch CEnforcementCore::GetInstanceOfTSLicense\r\n- will patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled\r\n- the function CSLQuery::Initialize is hooked correctly\r\n\r\n2014.07.17 :\r\n- will hook only CSLQuery::Initialize function\r\n- CSLQuery::GetMaxSessions will be patched\r\n- added x86 signatures for 6.3.9431.0 (Windows 8.1 Preview)\r\n\r\n2014.07.16 :\r\n- changing asm opcodes is bad, will hook CSL functions\r\n\r\n2014.07.15 :\r\n- added x86 signatures for 6.3.9600.16384 (Windows 8.1)\r\n2014.07.15 :\r\n- added x86 signatures for 6.3.9600.17095 (Windows 8.1 with KB2959626)\r\n"
  }
]