diff --git a/README.md b/README.md
index 7e74150..adfac2c 100644
--- a/README.md
+++ b/README.md
@@ -189,6 +189,7 @@ Change log:
• 10.0.10586.0 (Windows 10 TH2 Release 151029-1700)
• 10.0.11082.1000 (Windows 10 RS1 Release 151210-2021)
• 10.0.11102.1000 (Windows 10 RS1 Release 160113-1800)
+• 10.0.14251.1000 (Windows 10 RS1 Release 160124-1059)
Confirmed working on:
• Windows Vista Starter (x86 - Service Pack 1 and higher)
diff --git a/res/rdpwrap-ini-kb.txt b/res/rdpwrap-ini-kb.txt
index 6fc8849..43d9545 100644
--- a/res/rdpwrap-ini-kb.txt
+++ b/res/rdpwrap-ini-kb.txt
@@ -1,6 +1,6 @@
[Main]
; Last updated date
-Updated=2016-01-26
+Updated=2016-01-28
; Address to log file (RDP Wrapper will write it, if exists)
LogFile=\rdpwrap.txt
; Hook SLPolicy API on Windows NT 6.0
@@ -850,6 +850,10 @@ SLPolicyFunc.x64=New_Win8SL
; 2. All xrefs will point to this function
; 3. Go to function beginning and check ; CODE XREF string, it will point to GetInstanceOfTSLicense function
; 4. Follow CODE XREF, switch to graph view, the next block below is to patch
+; Another way:
+; 1. Search text: CEnforcementCore::GetInstanceOfTSLicense FAILED - License type me
+; 2. All xrefs will point to GetInstanceOfTSLicense
+; 3. Follow xref, the previous block above is to patch
; Patch CEnforcementCore::GetInstanceOfTSLicense
; .text:1008A604 call ?IsLicenseTypeLocalOnly@CSLQuery@@SGJAAU_GUID@@PAH@Z ; CSLQuery::IsLicenseTypeLocalOnly(_GUID &,int *)
@@ -1526,6 +1530,36 @@ SLInitHook.x64=1
SLInitOffset.x64=D160
SLInitFunc.x64=New_CSLQuery_Initialize
+[10.0.14251.1000]
+; Patch CEnforcementCore::GetInstanceOfTSLicense
+LocalOnlyPatch.x86=1
+LocalOnlyOffset.x86=A5D58
+LocalOnlyCode.x86=jmpshort
+LocalOnlyPatch.x64=1
+LocalOnlyOffset.x64=95CD1
+LocalOnlyCode.x64=jmpshort
+; Patch CSessionArbitrationHelper::IsSingleSessionPerUserEnabled
+SingleUserPatch.x86=1
+SingleUserOffset.x86=35A85
+SingleUserCode.x86=nop
+SingleUserPatch.x64=1
+SingleUserOffset.x64=2A9C4
+SingleUserCode.x64=Zero
+; Patch CDefPolicy::Query
+DefPolicyPatch.x86=1
+DefPolicyOffset.x86=30159
+DefPolicyCode.x86=CDefPolicy_Query_eax_ecx
+DefPolicyPatch.x64=1
+DefPolicyOffset.x64=1B5D5
+DefPolicyCode.x64=CDefPolicy_Query_eax_rcx
+; Hook CSLQuery::Initialize
+SLInitHook.x86=1
+SLInitOffset.x86=44FD2
+SLInitFunc.x86=New_CSLQuery_Initialize
+SLInitHook.x64=1
+SLInitOffset.x64=D160
+SLInitFunc.x64=New_CSLQuery_Initialize
+
[SLInit]
; Is server
bServerSku=1
@@ -1797,3 +1831,22 @@ bFUSEnabled.x64 =F2440
bServerSku.x64 =F244C
lMaxUserSessions.x64 =F2450
bAppServerAllowed.x64 =F2454
+
+[10.0.14251.1000-SLInit]
+bInitialized.x86 =C1F5C
+bServerSku.x86 =C1F60
+lMaxUserSessions.x86 =C1F64
+bAppServerAllowed.x86 =C1F68
+bRemoteConnAllowed.x86=C1F6C
+bMultimonAllowed.x86 =C1F70
+ulMaxDebugSessions.x86=C1F74
+bFUSEnabled.x86 =C1F78
+
+bInitialized.x64 =F2430
+bRemoteConnAllowed.x64=F2434
+bMultimonAllowed.x64 =F2438
+ulMaxDebugSessions.x64=F243C
+bFUSEnabled.x64 =F2440
+bServerSku.x64 =F244C
+lMaxUserSessions.x64 =F2450
+bAppServerAllowed.x64 =F2454
diff --git a/res/rdpwrap.ini b/res/rdpwrap.ini
index ca39278..6a3d7f3 100644
--- a/res/rdpwrap.ini
+++ b/res/rdpwrap.ini
@@ -2,7 +2,7 @@
; Do not modify without special knowledge
[Main]
-Updated=2016-01-26
+Updated=2016-01-28
LogFile=\rdpwrap.txt
SLPolicyHookNT60=1
SLPolicyHookNT61=1
@@ -647,6 +647,32 @@ SLInitHook.x64=1
SLInitOffset.x64=D160
SLInitFunc.x64=New_CSLQuery_Initialize
+[10.0.14251.1000]
+LocalOnlyPatch.x86=1
+LocalOnlyOffset.x86=A5D58
+LocalOnlyCode.x86=jmpshort
+LocalOnlyPatch.x64=1
+LocalOnlyOffset.x64=95CD1
+LocalOnlyCode.x64=jmpshort
+SingleUserPatch.x86=1
+SingleUserOffset.x86=35A85
+SingleUserCode.x86=nop
+SingleUserPatch.x64=1
+SingleUserOffset.x64=2A9C4
+SingleUserCode.x64=Zero
+DefPolicyPatch.x86=1
+DefPolicyOffset.x86=30159
+DefPolicyCode.x86=CDefPolicy_Query_eax_ecx
+DefPolicyPatch.x64=1
+DefPolicyOffset.x64=1B5D5
+DefPolicyCode.x64=CDefPolicy_Query_eax_rcx
+SLInitHook.x86=1
+SLInitOffset.x86=44FD2
+SLInitFunc.x86=New_CSLQuery_Initialize
+SLInitHook.x64=1
+SLInitOffset.x64=D160
+SLInitFunc.x64=New_CSLQuery_Initialize
+
[SLInit]
bServerSku=1
bRemoteConnAllowed=1
@@ -903,3 +929,22 @@ bFUSEnabled.x64 =F2440
bServerSku.x64 =F244C
lMaxUserSessions.x64 =F2450
bAppServerAllowed.x64 =F2454
+
+[10.0.14251.1000-SLInit]
+bInitialized.x86 =C1F5C
+bServerSku.x86 =C1F60
+lMaxUserSessions.x86 =C1F64
+bAppServerAllowed.x86 =C1F68
+bRemoteConnAllowed.x86=C1F6C
+bMultimonAllowed.x86 =C1F70
+ulMaxDebugSessions.x86=C1F74
+bFUSEnabled.x86 =C1F78
+
+bInitialized.x64 =F2430
+bRemoteConnAllowed.x64=F2434
+bMultimonAllowed.x64 =F2438
+ulMaxDebugSessions.x64=F243C
+bFUSEnabled.x64 =F2440
+bServerSku.x64 =F244C
+lMaxUserSessions.x64 =F2450
+bAppServerAllowed.x64 =F2454
diff --git a/technical.txt b/technical.txt
index a7b37ca..1160def 100644
--- a/technical.txt
+++ b/technical.txt
@@ -66,12 +66,16 @@ Terminal Services supported versions
10.0.10586.0 (Windows 10 th2_release.151029-1700) [init hook + extended patch]
10.0.11082.1000 (Windows 10 rs1_release.151210-2021) [init hook + extended patch]
10.0.11102.1000 (Windows 10 rs1_release.160113-1800) [init hook + extended patch]
+10.0.14251.1000 (Windows 10 rs1_release.160124-1059) [init hook + extended patch]
Known failures
6.0.6000.16386 (Windows Vista RTM x86, crashes on logon attempt)
Source code changelog (rdpwrap library):
+2016.01.28 :
+- added support for termsrv.dll 10.0.14251.1000
+
2016.01.26 :
- added support for termsrv.dll 10.0.11102.1000