35 Commits
v1.5 ... v1.6

Author SHA1 Message Date
5553d07206 v1.6 release notes 2015-08-12 19:39:06 +03:00
216255b3b4 Pre-release updates 2015-08-11 05:32:35 +03:00
e11b3c7354 Implement simple update routine 2015-08-07 04:33:37 +03:00
f534a1c8fc Merge pull request #44 from WisdomWolf/master
Fix for INI File (CR-LF and last line)
2015-08-01 15:36:16 +03:00
d4d5111711 maybe underscore? 2015-07-31 23:42:14 -04:00
4bf2866b49 added period to last line to preserve CR-LF when viewed on GitHub 2015-07-31 23:40:53 -04:00
7c52a27ba5 Merge branch 'master' of github.com:WisdomWolf/rdpwrap 2015-07-31 23:39:41 -04:00
e6686b3b35 corrected CR-LF at end of ini file 2015-07-31 23:39:10 -04:00
1f8e2b9e65 corrected CR-LF at end of ini file 2015-07-31 23:37:41 -04:00
946bd7f8a6 Update technical 2015-07-30 01:15:55 +03:00
b9149eef02 Fix wrong LocalOnly x86 offset 2015-07-30 01:09:12 +03:00
80387dcc31 Fix installer: check ImagePath without extension 2015-07-17 21:59:20 +03:00
8ac3396165 Small readme fix 2015-07-17 19:06:57 +03:00
8be10a125b Update readme 2015-07-17 18:50:40 +03:00
7baa979752 Update readme 2015-07-17 03:45:22 +03:00
425fc02fec New batch scripts 2015-07-17 02:39:09 +03:00
659ba3dbcf RDPCheck: update text 2015-07-17 02:35:05 +03:00
efe2872a26 Update INI modification date 2015-07-17 02:29:20 +03:00
ca71d4ace4 Small fix 2015-07-17 02:21:51 +03:00
a42b740946 More tech details 2015-07-17 02:19:07 +03:00
fca45f61e7 Update tech log 2015-07-17 02:06:27 +03:00
5062ff6c75 Update INI
- Added support for build 10.0.10240.16384
- Added HOW TO hints to KB
2015-07-17 01:28:23 +03:00
9a7c501ca9 Fix readme 2015-07-16 23:32:16 +03:00
adabe322c3 Update apps 2015-07-16 23:17:41 +03:00
eca971de03 Fix previous commit 2015-07-16 22:15:14 +03:00
6f23a18a24 Update INI
Move comments to KB file
Actual INI now have smaller size
2015-07-16 22:07:21 +03:00
09bfc748f4 Update readme 2015-07-16 21:48:52 +03:00
97d0b92054 Update tech log 2015-07-16 21:43:08 +03:00
867c271cb3 Readme: Update issues section 2015-06-23 20:03:14 +03:00
fd56533897 Add support for 10.0.10041.0 2015-03-23 18:13:24 +03:00
782dc346a9 New build has been discovered, obtaining files 2015-03-23 15:28:50 +03:00
ca36e9f49f Support for 10.0.9926.0 (x86) 2015-01-27 14:25:29 +03:00
513a7a1ebf 10.0.9926.0 x64 contributed by v-yadli 2015-01-24 20:36:45 +03:00
657ee646d5 Config: update policy values 2014-12-13 14:39:58 +03:00
5a37f663bc Updates discovered 2014-12-11 22:44:05 +03:00
22 changed files with 2839 additions and 1520 deletions

14
.gitignore vendored
View File

@ -1,6 +1,12 @@
# Unnecessary files
*.~pas
*.dproj.local
# Delphi local files (user-specific info)
*.local
*.identcache
# Delphi history and backups
__history/
*.~*
# Compiled binaries
*.dcu
*.exe
*.dll

View File

@ -17,6 +17,8 @@ Screenshots:<br>
<a href="http://stascorp.com/images/rdpwrap/Win81P.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin81P.jpg"></a>&nbsp;
<a href="http://stascorp.com/images/rdpwrap/Win81.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin81.jpg"></a>&nbsp;
<a href="http://stascorp.com/images/rdpwrap/Win10TP.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin10TP.jpg"></a>&nbsp;
<a href="http://stascorp.com/images/rdpwrap/Win10PTP.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin10PTP.jpg"></a>&nbsp;
<a href="http://stascorp.com/images/rdpwrap/Win10.png" target="_blank"><img src="http://stascorp.com/images/rdpwrap/pWin10.jpg"></a>&nbsp;
</div><br>
This solution was inspired by <a href="http://forums.mydigitallife.info/threads/39411-Windows-Product-Policy-Editor" target="_blank">Windows Product Policy Editor</a>, big thanks to <b>kost</b> :)<br>
- binarymaster<br>
@ -51,6 +53,10 @@ Building the binaries:<br>
• Adding «Remote Desktop Users» group:<br>
<a href="http://superuser.com/questions/680572/" target="_blank">http://superuser.com/questions/680572/</a><br>
<br>
<b>Tutorial videos:</b><br>
<a href="http://www.youtube.com/watch?v=W9BpbEt1yJw" target="_blank">Updating RDP Wrapper INI file manually</a><br>
<a href="http://www.youtube.com/watch?v=FiD86tmRBtk" target="_blank">How to find offsets for new termsrv.dll versions</a><br>
<br>
Files description:<br>
<br>
<table style="border-collapse: collapse; width: 100%; border: 1px solid black;" width="" align="">
@ -60,10 +66,26 @@ Files description:<br>
<tr><td style="border: 1px solid black;"><b>RDPConf.exe</b></td><td style="border: 1px solid black;">RDP Wrapper Configuration</td></tr>
<tr><td style="border: 1px solid black;"><b>install.bat</b></td><td style="border: 1px solid black;">Quick install batch file</td></tr>
<tr><td style="border: 1px solid black;"><b>uninstall.bat</b></td><td style="border: 1px solid black;">Quick uninstall batch file</td></tr>
<tr><td style="border: 1px solid black;"><b>update.bat</b></td><td style="border: 1px solid black;">Quick update batch file</td></tr>
</tbody>
</table><br>
Change log:<br>
<br>
<b><u>2015.08.12</u></b><br>
• Version 1.6<br>
• Added support for Windows 10<br>
• INI file has smaller size now - all comments are moved to KB file<br>
• Installer updated<br>
• Added workaround for 1056 error (although it isn't an error)<br>
• Added update support to installer<br>
• Newest RDPClip versions are included with installer<br>
• RDP Checker updated<br>
• Changed connect IP to 127.0.0.2<br>
• Updated some text messages<br>
• RDP Config updated<br>
• Added all possible shadowing modes<br>
• Also it will write settings to the group policy<br>
<br>
<b><u>2014.12.11</u></b><br>
• Version 1.5<br>
• Added INI config support<br>
@ -161,14 +183,17 @@ Change log:<br>
<u>6.4.9841.0</u> (Windows 10 Technical Preview)<br>
<u>6.4.9860.0</u> (Windows 10 Technical Preview Update 1)<br>
<u>6.4.9879.0</u> (Windows 10 Technical Preview Update 2)<br>
<u>10.0.9926.0</u> (Windows 10 Pro Technical Preview)<br>
<u>10.0.10041.0</u> (Windows 10 Pro Technical Preview Update 1)<br>
<u>10.0.10240.16384</u> (Windows 10 RTM)<br>
<br>
<b>Confirmed working on:</b><br>
• Windows Vista Starter (x86 - Service Pack 1 and higher)<br>
• Windows Vista Home Basic (x86 - Service Pack 1 and higher)<br>
• Windows Vista Home Premium (x86 - Service Pack 1 and higher)<br>
• Windows Vista Business (x86 - Service Pack 1 and higher)<br>
• Windows Vista Enterprise (x86 - Service Pack 1 and higher)<br>
• Windows Vista Ultimate (x86 - Service Pack 1 and higher)<br>
• Windows Vista Home Basic<br>
• Windows Vista Home Premium<br>
• Windows Vista Business<br>
• Windows Vista Enterprise<br>
• Windows Vista Ultimate<br>
• Windows 7 Starter<br>
• Windows 7 Home Basic<br>
• Windows 7 Home Premium<br>
@ -184,13 +209,23 @@ Change log:<br>
• Windows 8 Enterprise<br>
• Windows 8.1 Preview<br>
• Windows 8.1<br>
• Windows 8.1 Connected (with Bing)<br>
• Windows 8.1 Single Language<br>
• Windows 8.1 Connected Single Language (with Bing)<br>
• Windows 8.1 Pro<br>
• Windows 8.1 Enterprise<br>
• Windows 10 Technical Preview<br>
• Windows 10 Pro Technical Preview<br>
• Windows 10 Home<br>
• Windows 10 Pro<br>
• Windows 10 Enterprise<br>
<br>
<b>Working partially:</b><br>
Windows Vista Starter RTM x86 (termsrv.dll 6.0.6000.16386 : RDP works, but termsrv.dll crashes on logon attempt)<br>
<b>Known issues:</b><br>
Beginning with Windows 8 (non-server editions) you can't connect to existing sessions (they will be logged out by system)<br>
• RDP works, but termsrv.dll crashes on logon attempt - Windows Vista Starter RTM x86 (termsrv.dll 6.0.6000.16386)<br>
• If Terminal Services hangs at startup, try to add <b>rdpwrap.dll</b> to antivirus exclusions. Also try to isolate RDP Wrapper from other shared services by the command:<br>
<tt>sc config TermService type= own</tt><br>
• RDP Wrapper Installer can be removed by AVG Free Antivirus after reboot - add it to exclusions.<br>
<br>
<u>Installation instructions:</u><br>
1. Download latest release binaries and unpack files<br>

14
bin/install.bat Normal file
View File

@ -0,0 +1,14 @@
@echo off
if not exist "%~dp0RDPWInst.exe" goto :error
"%~dp0RDPWInst" -i
echo ______________________________________________________________
echo.
echo You can check RDP functionality with RDPCheck program.
echo Also you can configure advanced settings with RDPConf program.
echo.
goto :anykey
:error
echo [-] Installer executable not found.
echo Please extract all files from the downloaded package or check your anti-virus.
:anykey
pause

10
bin/uninstall.bat Normal file
View File

@ -0,0 +1,10 @@
@echo off
if not exist "%~dp0RDPWInst.exe" goto :error
"%~dp0RDPWInst" -u
echo.
goto :anykey
:error
echo [-] Installer executable not found.
echo Please extract all files from the downloaded package or check your anti-virus.
:anykey
pause

10
bin/update.bat Normal file
View File

@ -0,0 +1,10 @@
@echo off
if not exist "%~dp0RDPWInst.exe" goto :error
"%~dp0RDPWInst" -w
echo.
goto :anykey
:error
echo [-] Installer executable not found.
echo Please extract all files from the downloaded package or check your anti-virus.
:anykey
pause

Binary file not shown.

Binary file not shown.

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
{
Copyright 2014 Stas'M Corp.
Copyright 2015 Stas'M Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@ -25,7 +25,8 @@ uses
Windows,
Classes,
WinSvc,
Registry;
Registry,
WinInet;
function EnumServicesStatusEx(
hSCManager: SC_HANDLE;
@ -159,7 +160,8 @@ begin
end;
TermServiceHost := Reg.ReadString('ImagePath');
Reg.CloseKey;
if Pos('svchost.exe', LowerCase(TermServiceHost)) = 0 then
if (Pos('svchost.exe', LowerCase(TermServiceHost)) = 0)
and (Pos('svchost -k', LowerCase(TermServiceHost)) = 0) then
begin
Reg.Free;
Writeln('[-] TermService is hosted in a custom application (BeTwin, etc.) - unsupported.');
@ -282,32 +284,45 @@ var
hSvc: THandle;
Code: DWORD;
pch: PWideChar;
procedure ExitError(Func: String; ErrorCode: DWORD);
begin
if hSC > 0 then
CloseServiceHandle(hSC);
if hSvc > 0 then
CloseServiceHandle(hSvc);
Writeln('[-] ', Func, ' error (code ', ErrorCode, ').');
end;
begin
hSC := 0;
hSvc := 0;
Writeln('[*] Starting ', SvcName, '...');
hSC := OpenSCManager(nil, SERVICES_ACTIVE_DATABASE, SC_MANAGER_CONNECT);
if hSC = 0 then
begin
Code := GetLastError;
Writeln('[-] OpenSCManager error (code ', Code, ').');
ExitError('OpenSCManager', GetLastError);
Exit;
end;
hSvc := OpenService(hSC, PWideChar(SvcName), SERVICE_START);
if hSvc = 0 then
begin
CloseServiceHandle(hSC);
Code := GetLastError;
Writeln('[-] OpenService error (code ', Code, ').');
ExitError('OpenService', GetLastError);
Exit;
end;
pch := nil;
if not StartService(hSvc, 0, pch) then begin
CloseServiceHandle(hSvc);
CloseServiceHandle(hSC);
Code := GetLastError;
Writeln('[-] StartService error (code ', Code, ').');
Exit;
if Code = 1056 then begin // Service already started
Sleep(2000); // or SCM hasn't registered killed process
if not StartService(hSvc, 0, pch) then begin
ExitError('StartService', Code);
Exit;
end;
end else begin
ExitError('StartService', Code);
Exit;
end;
end;
CloseServiceHandle(hSvc);
CloseServiceHandle(hSC);
@ -591,6 +606,8 @@ begin
end;
procedure ExtractFiles;
var
RDPClipRes: String;
begin
if not DirectoryExists(ExtractFilePath(ExpandPath(WrapPath))) then
if ForceDirectories(ExtractFilePath(ExpandPath(WrapPath))) then
@ -601,18 +618,26 @@ begin
Halt(0);
end;
ExtractRes('config', ExtractFilePath(ExpandPath(WrapPath)) + 'rdpwrap.ini');
RDPClipRes := '';
case Arch of
32: begin
ExtractRes('rdpw32', ExpandPath(WrapPath));
if not FileExists(ExpandPath('%SystemRoot%\System32\rdpclip.exe')) then
ExtractRes('rdpclip32', ExpandPath('%SystemRoot%\System32\rdpclip.exe'));
if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 0) then
RDPClipRes := 'rdpclip6032';
if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 1) then
RDPClipRes := 'rdpclip6132';
end;
64: begin
ExtractRes('rdpw64', ExpandPath(WrapPath));
if not FileExists(ExpandPath('%SystemRoot%\System32\rdpclip.exe')) then
ExtractRes('rdpclip64', ExpandPath('%SystemRoot%\System32\rdpclip.exe'));
if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 0) then
RDPClipRes := 'rdpclip6064';
if (FV.Version.w.Major = 6) and (FV.Version.w.Minor = 1) then
RDPClipRes := 'rdpclip6164';
end;
end;
if RDPClipRes <> '' then
if not FileExists(ExpandPath('%SystemRoot%\System32\rdpclip.exe')) then
ExtractRes(RDPClipRes, ExpandPath('%SystemRoot%\System32\rdpclip.exe'));
end;
procedure DeleteFiles;
@ -878,18 +903,141 @@ begin
ExecWait('netsh advfirewall firewall delete rule name="Remote Desktop"');
end;
function CheckINIDate(Filename, Content: String; var Date: Integer): Boolean;
var
Str: TStringList;
I: Integer;
begin
Result := False;
Str := TStringList.Create;
if Filename <> '' then begin
try
Str.LoadFromFile(Filename);
except
Writeln('[-] Failed to read INI file.');
Exit;
end;
end else
Str.Text := Content;
for I := 0 to Str.Count - 1 do
if Pos('Updated=', Str[I]) = 1 then
Break;
if I >= Str.Count then begin
Writeln('[-] Failed to check INI date.');
Exit;
end;
Content := StringReplace(Str[I], 'Updated=', '', []);
Content := StringReplace(Content, '-', '', [rfReplaceAll]);
Str.Free;
try
Date := StrToInt(Content);
except
Writeln('[-] Wrong INI date format.');
Exit;
end;
Result := True;
end;
function GitINIFile(var Content: String): Boolean;
const
URL = 'https://raw.githubusercontent.com/binarymaster/rdpwrap/master/res/rdpwrap.ini';
var
NetHandle: HINTERNET;
UrlHandle: HINTERNET;
Str: String;
Buf: Array[0..1023] of Byte;
BytesRead: DWORD;
begin
Result := False;
Content := '';
NetHandle := InternetOpen('RDP Wrapper Update', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if not Assigned(NetHandle) then
Exit;
UrlHandle := InternetOpenUrl(NetHandle, PChar(URL), nil, 0, INTERNET_FLAG_RELOAD, 0);
if not Assigned(UrlHandle) then
begin
InternetCloseHandle(NetHandle);
Exit;
end;
repeat
InternetReadFile(UrlHandle, @Buf[0], SizeOf(Buf), BytesRead);
SetString(Str, PAnsiChar(@Buf[0]), BytesRead);
Content := Content + Str;
until BytesRead = 0;
InternetCloseHandle(UrlHandle);
InternetCloseHandle(NetHandle);
Result := True;
end;
procedure CheckUpdate;
var
INIPath, S: String;
Str: TStringList;
I, OldDate, NewDate: Integer;
begin
INIPath := ExtractFilePath(ExpandPath(TermServicePath)) + 'rdpwrap.ini';
if not CheckINIDate(INIPath, '', OldDate) then
Halt(ERROR_ACCESS_DENIED);
Writeln('[*] Current update date: ',
Format('%d.%.2d.%.2d', [OldDate div 10000, OldDate div 100 mod 100, OldDate mod 100]));
if not GitINIFile(S) then begin
Writeln('[-] Failed to download latest INI from GitHub.');
Halt(ERROR_ACCESS_DENIED);
end;
if not CheckINIDate('', S, NewDate) then
Halt(ERROR_ACCESS_DENIED);
Writeln('[*] Latest update date: ',
Format('%d.%.2d.%.2d', [NewDate div 10000, NewDate div 100 mod 100, NewDate mod 100]));
if NewDate = OldDate then
Writeln('[*] Everything is up to date.')
else
if NewDate > OldDate then begin
Writeln('[+] New update is available, updating...');
CheckTermsrvProcess;
Writeln('[*] Terminating service...');
AddPrivilege('SeDebugPrivilege');
KillProcess(TermServicePID);
Sleep(1000);
if Length(ShareSvc) > 0 then
for I := 0 to Length(ShareSvc) - 1 do
SvcStart(ShareSvc[I]);
Sleep(500);
Str := TStringList.Create;
Str.Text := S;
try
Str.SaveToFile(INIPath);
except
Writeln('[-] Failed to write INI file.');
Halt(ERROR_ACCESS_DENIED);
end;
Str.Free;
SvcStart(TermService);
Writeln('[+] Update completed.');
end else
Writeln('[*] Your INI file is newer than public file. Are you a developer? :)');
end;
var
I: Integer;
begin
Writeln('RDP Wrapper Library v1.5');
Writeln('Installer v2.2');
Writeln('Copyright (C) Stas''M Corp. 2014');
Writeln('Copyright (C) Stas''M Corp. 2015');
Writeln('');
if (ParamCount < 1)
or (
(ParamStr(1) <> '-l')
and (ParamStr(1) <> '-i')
and (ParamStr(1) <> '-w')
and (ParamStr(1) <> '-u')
and (ParamStr(1) <> '-r')
) then
@ -900,6 +1048,7 @@ begin
Writeln('-l display the license agreement');
Writeln('-i install wrapper to Program Files folder (default)');
Writeln('-i -s install wrapper to System32 folder');
Writeln('-w get latest update for INI file');
Writeln('-u uninstall wrapper');
Writeln('-r force restart Terminal Services');
Exit;
@ -1018,6 +1167,18 @@ begin
Writeln('[+] Successfully uninstalled.');
end;
if ParamStr(1) = '-w' then
begin
if not Installed then
begin
Writeln('[*] RDP Wrapper Library is not installed.');
Halt(ERROR_INVALID_FUNCTION);
end;
Writeln('[*] Checking for updates...');
CheckUpdate;
end;
if ParamStr(1) = '-r' then
begin
Writeln('[*] Restarting...');

View File

@ -20,8 +20,9 @@
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_ExeOutput>..\bin\</DCC_ExeOutput>
<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>
<DCC_DependencyCheckOutputName>RDPWInst.exe</DCC_DependencyCheckOutputName>
<DCC_DependencyCheckOutputName>..\bin\RDPWInst.exe</DCC_DependencyCheckOutputName>
<DCC_ImageBase>00400000</DCC_ImageBase>
<DCC_Platform>x86</DCC_Platform>
</PropertyGroup>
@ -41,14 +42,14 @@
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Release">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<ProjectExtensions>
@ -60,7 +61,7 @@
<Parameters Name="UseLauncher">False</Parameters>
<Parameters Name="LoadAllSymbols">True</Parameters>
<Parameters Name="LoadUnspecifiedSymbols">False</Parameters>
<Parameters Name="RunParams">-i</Parameters>
<Parameters Name="RunParams">-w</Parameters>
</Parameters>
<VersionInfo>
<VersionInfo Name="IncludeVerInfo">False</VersionInfo>

Binary file not shown.

View File

@ -1,5 +1,5 @@
{
Copyright 2014 Stas'M Corp.
Copyright 2015 Stas'M Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@ -44,13 +44,12 @@ implementation
procedure TFrm.FormCreate(Sender: TObject);
var
Reg: TRegistry;
Port: Integer;
begin
RDP.DisconnectedText := 'Disconnected.';
RDP.ConnectingText := 'Connecting...';
RDP.ConnectedStatusText := 'Connected.';
RDP.UserName := '';
RDP.Server := '127.0.0.1';
RDP.Server := '127.0.0.2';
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
@ -132,8 +131,8 @@ begin
$1707: ErrStr := 'Delegation of credentials to the target server is not allowed unless mutual authentication has been achieved.';
$2207: ErrStr := 'The smart card is blocked.';
$1C07: ErrStr := 'An incorrect PIN was presented to the smart card.';
$B09: ErrStr := 'Network Level Authentication is required.';
$708: ErrStr := 'The RDP seems to work, but your client doesn''t support loopback connections. Try to connect to your PC from another device in the network.';
$B09: ErrStr := 'Network Level Authentication is required, run RDPCheck as administrator.';
$708: ErrStr := 'RDP is working, but the client doesn''t allow loopback connections. Try to connect to your PC from another device in the network.';
else ErrStr := 'Unknown code 0x'+IntToHex(discReason, 1);
end;
if (discReason > 2) then

View File

@ -20,8 +20,9 @@
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_ExeOutput>..\bin\</DCC_ExeOutput>
<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>
<DCC_DependencyCheckOutputName>RDPCheck.exe</DCC_DependencyCheckOutputName>
<DCC_DependencyCheckOutputName>..\bin\RDPCheck.exe</DCC_DependencyCheckOutputName>
<DCC_ImageBase>00400000</DCC_ImageBase>
<DCC_Platform>x86</DCC_Platform>
</PropertyGroup>
@ -44,14 +45,14 @@
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Release">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<ProjectExtensions>
@ -68,7 +69,7 @@
<VersionInfo Name="IncludeVerInfo">True</VersionInfo>
<VersionInfo Name="AutoIncBuild">False</VersionInfo>
<VersionInfo Name="MajorVer">2</VersionInfo>
<VersionInfo Name="MinorVer">1</VersionInfo>
<VersionInfo Name="MinorVer">2</VersionInfo>
<VersionInfo Name="Release">0</VersionInfo>
<VersionInfo Name="Build">0</VersionInfo>
<VersionInfo Name="Debug">False</VersionInfo>
@ -82,13 +83,13 @@
<VersionInfoKeys>
<VersionInfoKeys Name="CompanyName">Stas&apos;M Corp.</VersionInfoKeys>
<VersionInfoKeys Name="FileDescription">Local RDP Checker</VersionInfoKeys>
<VersionInfoKeys Name="FileVersion">2.1.0.0</VersionInfoKeys>
<VersionInfoKeys Name="FileVersion">2.2.0.0</VersionInfoKeys>
<VersionInfoKeys Name="InternalName">RDPCheck</VersionInfoKeys>
<VersionInfoKeys Name="LegalCopyright">Copyright © Stas&apos;M Corp. 2014</VersionInfoKeys>
<VersionInfoKeys Name="LegalCopyright">Copyright © Stas&apos;M Corp. 2015</VersionInfoKeys>
<VersionInfoKeys Name="LegalTrademarks">Stas&apos;M Corp.</VersionInfoKeys>
<VersionInfoKeys Name="OriginalFilename">RDPCheck.exe</VersionInfoKeys>
<VersionInfoKeys Name="ProductName">RDP Host Support</VersionInfoKeys>
<VersionInfoKeys Name="ProductVersion">1.3.0.0</VersionInfoKeys>
<VersionInfoKeys Name="ProductVersion">1.6.0.0</VersionInfoKeys>
<VersionInfoKeys Name="Comments">http://stascorp.com</VersionInfoKeys>
</VersionInfoKeys>
<Excluded_Packages>

Binary file not shown.

View File

@ -3,7 +3,7 @@ object MainForm: TMainForm
Top = 0
BorderStyle = bsDialog
Caption = 'RDP Wrapper Configuration'
ClientHeight = 326
ClientHeight = 352
ClientWidth = 351
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
@ -27,7 +27,7 @@ object MainForm: TMainForm
end
object bOK: TButton
Left = 10
Top = 293
Top = 319
Width = 75
Height = 25
Caption = 'OK'
@ -37,7 +37,7 @@ object MainForm: TMainForm
end
object bCancel: TButton
Left = 91
Top = 293
Top = 319
Width = 75
Height = 25
Caption = 'Cancel'
@ -47,7 +47,7 @@ object MainForm: TMainForm
end
object bApply: TButton
Left = 172
Top = 293
Top = 319
Width = 75
Height = 25
Caption = 'Apply'
@ -66,7 +66,7 @@ object MainForm: TMainForm
end
object rgNLA: TRadioGroup
Left = 8
Top = 135
Top = 132
Width = 335
Height = 73
Caption = 'Security Mode'
@ -88,14 +88,16 @@ object MainForm: TMainForm
end
object rgShadow: TRadioGroup
Left = 8
Top = 214
Top = 208
Width = 335
Height = 73
Height = 105
Caption = 'Session Shadowing Mode'
Items.Strings = (
'Disable Shadowing'
'Shadowing will request user'#39's permission'
'Shadow sessions immediately')
'Full access with user'#39's permission'
'Full access without permission'
'View only with user'#39's permission'
'View only without permission')
TabOrder = 6
OnClick = cbAllowTSConnectionsClick
end
@ -112,7 +114,7 @@ object MainForm: TMainForm
end
object bLicense: TButton
Left = 253
Top = 293
Top = 319
Width = 87
Height = 25
Caption = 'View license...'

View File

@ -1,5 +1,5 @@
{
Copyright 2014 Stas'M Corp.
Copyright 2015 Stas'M Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@ -439,6 +439,15 @@ begin
end;
end;
Reg.CloseKey;
Reg.OpenKey('\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services', True);
if rgShadow.ItemIndex >= 0 then begin
try
Reg.WriteInteger('Shadow', rgShadow.ItemIndex);
except
end;
end;
Reg.CloseKey;
Reg.Free;
end;

View File

@ -20,8 +20,9 @@
<Base>true</Base>
</PropertyGroup>
<PropertyGroup Condition="'$(Base)'!=''">
<DCC_ExeOutput>..\bin\</DCC_ExeOutput>
<DCC_UnitAlias>WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;$(DCC_UnitAlias)</DCC_UnitAlias>
<DCC_DependencyCheckOutputName>RDPConf.exe</DCC_DependencyCheckOutputName>
<DCC_DependencyCheckOutputName>..\bin\RDPConf.exe</DCC_DependencyCheckOutputName>
<DCC_ImageBase>00400000</DCC_ImageBase>
<DCC_Platform>x86</DCC_Platform>
</PropertyGroup>
@ -47,14 +48,14 @@
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Release">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<ProjectExtensions>

Binary file not shown.

Binary file not shown.

View File

@ -42,14 +42,14 @@
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Release">
<Key>Cfg_1</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
<BuildConfiguration Include="Debug">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>
</BuildConfiguration>
</ItemGroup>
<Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
<ProjectExtensions>

View File

@ -1,50 +1,112 @@
RDP Wrapper Library project by Stas'M
Terminal Services supported versions
6.0.X.X (Windows Vista, any) [policy hook only]
6.0.6000.16386 (Windows Vista) [policy hook + extended patch]
6.0.6001.18000 (Windows Vista SP1) [policy hook + extended patch]
6.0.6001.22565 (Windows Vista SP1 with KB977541) [todo]
6.0.6001.22635 (Windows Vista SP1 with KB970911) [todo]
6.0.6001.22801 (Windows Vista SP1 with KB2381675) [todo]
6.0.6002.18005 (Windows Vista SP2) [policy hook + extended patch]
6.0.6002.22269 (Windows Vista SP2 with KB977541) [todo]
6.0.6002.22340 (Windows Vista SP2 with KB970911) [todo]
6.0.6002.22515 (Windows Vista SP2 with KB2381675) [todo]
6.0.6002.22641 (Windows Vista SP2 with KB2523307) [todo]
6.0.6002.19214 (Windows Vista SP2 with KB3003743 GDR) [policy hook + extended patch]
6.0.6002.23521 (Windows Vista SP2 with KB3003743 LDR) [policy hook + extended patch]
6.1.X.X (Windows 7, any) [policy hook only]
6.1.7600.16385 (Windows 7) [policy hook + extended patch]
6.1.7600.20890 (Windows 7 with KB2479710) [todo]
6.1.7600.21316 (Windows 7 with KB2750090) [todo]
6.1.7601.17514 (Windows 7 SP1) [policy hook + extended patch]
6.1.7601.21650 (Windows 7 SP1 with KB2479710) [todo]
6.1.7601.21866 (Windows 7 SP1 with KB2647409) [todo]
6.1.7601.22104 (Windows 7 SP1 with KB2750090) [todo]
6.1.7601.18540 (Windows 7 SP1 with KB2984972 GDR) [policy hook + extended patch]
6.1.7601.22750 (Windows 7 SP1 with KB2984972 LDR) [policy hook + extended patch]
6.1.7601.18637 (Windows 7 SP1 with KB3003743 GDR) [policy hook + extended patch]
6.1.7601.22843 (Windows 7 SP1 with KB3003743 LDR) [policy hook + extended patch]
6.2.8102.0 (Windows 8 Developer Preview) [policy hook + extended patch]
6.2.8250.0 (Windows 8 Consumer Preview) [policy hook + extended patch]
6.2.8400.0 (Windows 8 Release Preview) [policy hook + extended patch]
6.2.9200.16384 (Windows 8) [policy hook + extended patch]
6.2.9200.17048 (Windows 8 with KB2973501 GDR) [policy hook + extended patch]
6.2.9200.21166 (Windows 8 with KB2973501 LDR) [policy hook + extended patch]
6.3.9431.0 (Windows 8.1 Preview) [init hook + extended patch]
6.3.9600.16384 (Windows 8.1) [init hook + extended patch]
6.3.9600.17095 (Windows 8.1 with KB2959626) [init hook + extended patch]
6.3.9600.17415 (Windows 8.1 with KB3000850) [init hook + extended patch]
6.4.9841.0 (Windows 10 Technical Preview) [init hook + extended patch]
6.4.9860.0 (Windows 10 Technical Preview Update 1) [init hook + extended patch]
6.4.9879.0 (Windows 10 Technical Preview Update 2) [init hook + extended patch]
6.0.X.X (Windows Vista, any) [policy hook only]
6.0.6000.16386 (Windows Vista) [policy hook + extended patch]
6.0.6000.20723 (Windows Vista with KB944917) [todo]
6.0.6001.18000 (Windows Vista SP1) [policy hook + extended patch]
6.0.6001.22286 (Windows Vista SP1 with KB958612) [todo]
6.0.6001.22357 (Windows Vista SP1 with KB958612 v2) [todo]
6.0.6001.22323 (Windows Vista SP1 with KB960742) [todo]
6.0.6001.22392 (Windows Vista SP1 with KB968680) [todo]
6.0.6001.22565 (Windows Vista SP1 with KB977541) [todo]
6.0.6001.22635 (Windows Vista SP1 with KB970911) [todo]
6.0.6001.22801 (Windows Vista SP1 with KB2381675) [todo]
6.0.6002.18005 (Windows Vista SP2) [policy hook + extended patch]
6.0.6002.22269 (Windows Vista SP2 with KB977541) [todo]
6.0.6002.22340 (Windows Vista SP2 with KB970911) [todo]
6.0.6002.22515 (Windows Vista SP2 with KB2381675) [todo]
6.0.6002.22641 (Windows Vista SP2 with KB2523307) [todo]
6.0.6002.22790 (Windows Vista SP2 with KB2672601) [todo]
6.0.6002.19214 (Windows Vista SP2 with KB3003743 GDR) [policy hook + extended patch]
6.0.6002.23521 (Windows Vista SP2 with KB3003743 LDR) [policy hook + extended patch]
6.1.X.X (Windows 7, any) [policy hook only]
6.1.7100.0 (Windows 7 Release Candidate) [todo]
6.1.7600.16385 (Windows 7) [policy hook + extended patch]
6.1.7600.20661 (Windows 7 with KB951422) [todo]
6.1.7600.21085 (Windows 7 with KB951422 v2) [todo]
6.1.7600.20621 (Windows 7 with KB979470) [todo]
6.1.7600.20890 (Windows 7 with KB2479710) [todo]
6.1.7600.21316 (Windows 7 with KB2750090) [todo]
6.1.7600.21420 (Windows 7 with KB2800789) [todo]
6.1.7601.17514 (Windows 7 SP1) [policy hook + extended patch]
6.1.7601.21855 (Windows 7 SP1 with KB951422 v2) [todo]
6.1.7601.21650 (Windows 7 SP1 with KB2479710) [todo]
6.1.7601.21866 (Windows 7 SP1 with KB2647409) [todo]
6.1.7601.22104 (Windows 7 SP1 with KB2750090) [todo]
6.1.7601.22213 (Windows 7 SP1 with KB2800789) [todo]
6.1.7601.22476 (Windows 7 SP1 with KB2870165) [todo]
6.1.7601.22435 (Windows 7 SP1 with KB2878424) [todo]
6.1.7601.22477 (Windows 7 SP1 with KB2896256) [todo]
6.1.7601.18540 (Windows 7 SP1 with KB2984972 GDR) [policy hook + extended patch]
6.1.7601.22750 (Windows 7 SP1 with KB2984972 LDR) [policy hook + extended patch]
6.1.7601.18637 (Windows 7 SP1 with KB3003743 GDR) [policy hook + extended patch]
6.1.7601.22843 (Windows 7 SP1 with KB3003743 LDR) [policy hook + extended patch]
6.2.8102.0 (Windows 8 Developer Preview) [policy hook + extended patch]
6.2.8250.0 (Windows 8 Consumer Preview) [policy hook + extended patch]
6.2.8400.0 (Windows 8 Release Preview) [policy hook + extended patch]
6.2.9200.16384 (Windows 8) [policy hook + extended patch]
6.2.9200.17048 (Windows 8 with KB2973501 GDR) [policy hook + extended patch]
6.2.9200.21166 (Windows 8 with KB2973501 LDR) [policy hook + extended patch]
6.3.9431.0 (Windows 8.1 Preview) [init hook + extended patch]
6.3.9600.16384 (Windows 8.1) [init hook + extended patch]
6.3.9600.17095 (Windows 8.1 with KB2959626) [init hook + extended patch]
6.3.9600.17415 (Windows 8.1 with KB3000850) [init hook + extended patch]
6.4.9841.0 (Windows 10 Technical Preview) [init hook + extended patch]
6.4.9860.0 (Windows 10 Technical Preview UP1) [init hook + extended patch]
6.4.9879.0 (Windows 10 Technical Preview UP2) [init hook + extended patch]
10.0.9926.0 (Windows 10 Pro Technical Preview) [init hook + extended patch]
10.0.10041.0 (Windows 10 Pro Technical Preview UP1) [init hook + extended patch]
10.0.10049.0 (Windows 10 Pro Technical Preview UP2) [todo]
10.0.10061.0 (Windows 10 Pro Technical Preview UP3) [todo]
10.0.10240.16384 (Windows 10 RTM) [init hook + extended patch]
Known failures
6.0.6000.16386 (Windows Vista RTM x86, crashes on logon attempt)
Source code changelog (rdpwrap library):
2015.08.11 :
- embed new rdpclip versions in the installer (for NT 6.0 and 6.1)
- preparing the release
2015.08.07 :
- added INI update feature to installer
2015.07.30 :
- fixed issue with Windows 10 Home x86 (wrong LocalOnly offset was specified in INI file)
2015.07.17 :
- added support for termsrv.dll 10.0.10240.16384
- added HOW TO hints to KB (so other reverse engineers can do this hard work more easier)
2015.07.16 :
- moved all comments from INI file to Knowledge Base text file
- now INI file have smaller size
- updated RDP checker: changed IP Address to 127.0.0.2 (sometimes client doesn't want to connect .1), updated text message
- updated RDP config: list all possible shadowing modes, also write group policy
- updated installer: added workaround for 1056 error
- updated copyright years in source code
- obtained files from build 10.0.10240.16384
- researching Windows 10 RTM
2015.03.23 :
- researching Windows 10 Pro Technical Preview UP1
- added support for termsrv.dll 10.0.10041.0
2015.03.20 :
- new build 10.0.10041.0 was released, obtaining files...
2015.01.26 :
- researching Windows 10 Pro Technical Preview (10.0.9926.0 x86)
- added support for termsrv.dll 10.0.9926.0 (x86)
2015.01.22 :
- v-yadli contributed offsets for version 10.0.9926.0 (x64)
2014.12.13 :
- added more policy values to INI file
2014.12.10 :
- C++ version seems to work well now!
- added support for termsrv.dll 6.4.9879.0