Windows2008用作终端服务器非常不错,不但远程管理起来方便,还支持RemoteApp。有了RemoteApp,可以减少Windows用户Session的消耗,提高服务器的性能,不必像Windows2003那样一个启动一个远程程序就耗费一个Session。可惜某些老旧的程序或者写的不好的程序不能在Windows2008上运行,如果把这些程序部署到Windows2003上,就不能使用RemoteApp。
Windows2003不支持RemoteApp,我们能不能让它支持RemoteApp?办法倒是有,不过不太理想。
方法一是使用类似rdesktop的技术,在服务器上运行一个Agent,监控程序的窗口变化,然后把窗口的变化发送到客户端,客户端对mstsc.exe的窗口进行更新处理,去掉无关的部分。这样做使窗口看起来像是RemoteApp的那种窗口,不过有很多限制,效果也不好。
方法二是手工修改Windows2003的系统文件,把XP的KB961742补丁移植到Windows2003。这个方法工作量较大,因为需要分析修改的文件较多(winlogon,rdpinit,rdpshell等)。而且修改后的文件还不能被后续的windows补丁更改,比较麻烦。
其实WindowsXP完全可以当作一个终端服务器来用,只要把终端服务的licence限制去掉即可。去掉终端服务的licence限制很容易,网上也有这方面的文章(xp vista win7 termsrv.dll 爆破法),还有现成的工具(Universal Termsrv.dll Patch)下载。网上的方法都是直接替换系统文件termsrv.dll,也可以修改TermService服务的ServiceDll注册表键值,把ServiceDll的值指向修改后的termsrv.dll文件的路径。去掉限制后WindowsXP就可以当作终端服务器来用了。
补丁KB961742可以让XP支持RemoteApp,安装补丁KB961742后,一个支持RemoteApp的WindowsXP终端服务器就打造完成了。
因为WindowsXP上没有终端服务管理器工具,终端服务器的配置需要通过注册表来手工修改。终端服务器的配置都在“HKLM/SYSTEM/CurrentControlSet/Control/Terminal Server“和“HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Terminal Server”下面。
如果目的终端服务器是WindowsXP,创建rdp文件时要注意加上下面的项:
remoteapplicationmode:i:1
Alternate shell:s:rdpinit.exe
RemoteApplicationName:s:程序名
RemoteApplicationProgram:s:程序路径
DisableRemoteAppCapsCheck:i:1
Prompt for Credentials on Client:i:1