@echo off
setlocal EnableDelayedExpansion
echo RDP Wrapper Library Installer v1.0
echo Copyright (C) Stas'M Corp. 2013
echo.

set PROCESSOR_ARCHITECTURE | find "x86" > nul
if !errorlevel!==0 (
	goto WOW64CHK
) else (
	goto UNSUPPORTED
)

:WOW64CHK
echo [*] Check if running WOW64 subsystem...
set PROCESSOR_ARCHITEW6432 > nul
if !errorlevel!==0 (
	goto UNSUPPORTED
) else (
	goto SUPPORTED
)

:SUPPORTED
echo [+] Processor architecture is Intel x86 [supported]
goto INSTALL

:UNSUPPORTED
echo [-] Unsupported processor architecture
goto END

:INSTALL
echo [*] Installing...
if not exist rdpwrap.dll (
	echo [-] Error: rdpwrap.dll file not found
	goto END
)
echo [*] Copying file to Program Files...
md "%ProgramFiles%\RDP Wrapper"
xcopy /y rdpwrap.dll "%ProgramFiles%\RDP Wrapper\"
if not !errorlevel!==0 (
	echo [-] Failed to copy rdpwrap.dll to Program Files folder
	goto END
)
echo [*] Modifying registry...
reg add "HKLM\SYSTEM\CurrentControlSet\Services\TermService\Parameters" /v ServiceDll /t REG_EXPAND_SZ /d "%ProgramFiles%\RDP Wrapper\rdpwrap.dll" /f
if not !errorlevel!==0 (
	echo [-] Failed to modify registry
	goto END
)
echo [*] Setting firewall configuration...
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
netsh advfirewall firewall add rule name="Remote Desktop" dir=in protocol=tcp localport=3389 profile=any action=allow
echo [*] Looking for TermService PID...
tasklist /SVC /FI "SERVICES eq TermService" | find "PID" /V
echo.
if !errorlevel!==0 (
	goto DONE
) else (
	goto SVCSTART
)

:SVCSTART
echo [*] TermService is stopped. Starting it...
sc config TermService start= auto | find "1060" > nul
if !errorlevel!==0 (
	echo [-] TermService is not installed. You need to install it manually.
	goto END
) else (
	net start TermService
	goto DONE
)

:DONE
echo [+] Installation complete!
echo Now reboot or restart service.
echo.
echo To reboot computer type:
echo shutdown /r
echo.
echo To restart TermService type:
echo taskkill /f /pid 1234         ^(replace 1234 with real PID which is shown above^)
echo net start TermService
echo.
echo If second method is used, and there are another services sharing svchost.exe,
echo you must start it too:
echo net start Service1
echo net start Service2
echo etc.
goto END

:END