标题：terminal service
介绍
终端服务 
允许多位用户连接并控制一台机器，并且在远程计算机上显示桌面和应用程序。这是远程桌面(包括管理员的远程桌面)、快速用户转换、远程协助和终端服务器的基础结构。 
细节操作
Terminal Services中有许多不为人知的细节操作。 在Terminal Services会话中，我们依然可以使用快捷键，不过快捷键和本机有所区别，具体为： CTRL+ALT+END 打开“Windows 安全”对话框。 ALT+PAGE UP 从左向右在程序之间切换。 ALT+PAGE DOWN 从右向左在程序之间切换。 ALT+INSERT 按启动顺序来回切换程序。 ALT+HOME 显示“开始”菜单。 CTRL+ALT+BREAK 在窗口（如果适用）和全屏显示之间切换客户端。 ALT+DELETE 显示窗口的弹出式菜单。 CTRL+ALT+减号 (-) 将客户端活动窗口的快照放在“终端”服务器的剪贴板上（与在本地计算机上按下 ALT+PrintScrn 键时的功能相同）。 CTRL+ALT+加号 (+) 将整个客户端窗口区域的快照放在“终端”服务器的剪贴板上（与在本地计算机上按下 PrintScrn 键时的功能相同）。 注意: 在NEC98 计算机中，这些快捷键在以下两种情况下会有些不同： CTRL+ALT+BREAK由 F12 键代替。 CTRL+ALT+END 由 F15 键代替。 
修改Terminal Services的默认端口： 在注册表下[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Terminal Server \ Wds \ rdpwd \ Tds \ tcp]中的PortNumber键值中，选择10进制状态，就可以看到终端的默认端口3389，接着你就可以根据个人的情况的进行修改了。 
修改完成之后，以后客户端要连接服务器时只需要在IP地址后面加上冒号，在填上修改以后的端口号即可。 
修改Terminal Services的默认端口号，能在一定程度上加强Terminal Services的安全性。 
终端中，在CMD中键入quser(即query user)，便可以查看当前终端中的会话，其中带“console”是中断服务器本地用户，其余都是远程会话。如果键入logoff ID便可以注销远程用户的会话。 当连上终端服务器之后，如果可以编辑如下一个批处理文件： ：begin query user| find “console” if errorlevel 1 logoff 1&&logoff 2 goto begin 这段批处理的意思也非常简单，如果query user(既quser)出现console字样（既管理员本地登陆），马上切断ID为1 和2的用户的会话。这是黑客们常用的一个手段，思路很巧妙，这样管理员很难发现自己的服务器被非法访问过。 
运行这段批处理后： echo [Components]>c:\backe echo TSEnable=on >>c:\backe sysocmgr /I:c:\winnt\inf /u:c:\backe /q /r 过一段时间系统就会以不弹出任何窗口的形式安装上终端服务。当计算机从新启动以后，就可以连接上。如果，你想让设置立即生效，可以在最后一句省略掉“r”参数，这样当安装完成以后，远程计算机会自动从新启动。
使用技巧
微软的win2000服务器版中带了一个终端服务Terminal Service，这个服务基于远程桌面协议RDP，他的速度非常快，也很稳定，是一个比较好的远程管理软件，不过这个终端服务有几个不方便的地方： 第一是没有改端口的地方，终端服务只能使用默认得3389端口。对于一个谨慎地管理员来说，服务器开着3389端口，随便哪个人都能上去试试密码；再加上前些时候微软输入法的漏洞，不需密码就是System权限。第二是没有完善的功能日志，这样什么人什么时候连结上都不知道。 其实这两个问题都可以非常容易的解决： 对于端口问题，微软提供了一个方法允许用户自己更改服务器端和客户端的端口： 1、第一步，更改终端服务的服务器端设置。 打开注册表，找到类似这样的键值HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server\Wds\Repwd\Tds\Tcp, 看到那个PortNumber没有？0xd3d，这个是16进制，就是3389啦，我改...这个值是RDP(远程桌面协议)的默认值，也就是说用来配置以后新建的RDP服务的，要改已经建立的RDP服务，我们去下一个键值： HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations这里应该有一个或多个类似RDP-TCP的子健（取决于你建立了多少个RDP服务），一样改掉PortNumber。 (转者注:在这里可以在HKEY_LOCAL_MACHINE下面通过搜索3389来找到所有的portnumber项)2、第二步，改客户端。 服务端改了端口而客户端端口没有改变，我们岂不是白瞪眼？再来改客户端：打开客户端连接管理器，按照正常的步骤建立一个客户端连接的快捷方式，选中这个连接，然后在“文件”菜单里选择“导出”（Menu－>File->Export），这个操作会生成一个cns文件，就是终端服务客户端的配置文件，你可以用文本编辑器（比如记事本）编辑这个文件，找到“Server Port=3389”，改成你要的端口，然后再选导入（Menu－>File->Import），这是的客户端快捷方式已经变成你需要的端口了。 需要主义的是，从微软主页上下载的终端服务客户端Terminal Service Client(MSI版)以及ActiveX版都不能更改端口，只有使用Win2000服务器版终端服务自带的“制作安装盘”功能制作版本可以改端口，这个功能在管理工具的“终端服务客户端生成器”（Terminal Service Client Creator）中。 对于日志的问题，其实Terminal Service自己是有日志功能的，在管理工具中打开远程控制服务配置(Terminal Service Configration)，点击“连接”，右击你想配置的RDP服务（比如RDP-TCP(Microsoft RDP5.0)），选中书签“权限”，点击左下角的“高级”，看见上面那个“审核”了吗？我们来加入一个Everyone组，这代表所有的用户，然后审核他的“连接”、“断开”、“注销”的成功和“登陆”的功能和失败就足够了，审核太多了反而不好，这个审核试记录在安全日志中的，可以从“管理工具”－>“日志查看器”中查看。 现在什么人什么时候登陆都一清二楚了，可是它却不记录客户端的IP（只能查看在线用户的ip）而是记录计算机名，要是别人起个PIG的机器名你只好受他嘲弄了。我们来自己写个程序，一切搞定，你会c么？反正我不会，vb呢？我也不会^_^，Delphi？？我还是不会^_^，别急，如果你和我一样，还有一个办法，我们建立一个.bat文件，叫做TSLog.bat，这个文件用来记录登录者的ip，内容如下： time /t>>TSLog.log netstat -n -p tcp|find ":3389">>TSLog.log start Explorer 我来解释一下这个文件的含义： 第一行是记录用户登陆的时间，Time/t的意思是直接返回系统时间（如果不加/t，系统会等待你输入新的时间），然后我们用追加符号 >>把这个时间记入TSLog.log 第二行是记录用户的ip地址，Netstat是用来显示当前网络连接状况的命令，-n表示显示ip和端口而不是域名、协议，-p tcp是只显示tcp协议，然后我们用管道符号“|”把这个命令的结果输出给Find命令，从输出结果中查找包含“：3389”的行（这就是我们要得客户的ip所在行，如果你改了终端服务的端口，这个数值也要作相应的改变），最后我们同样把这个结果重定向到日志文件TSLog.log中去，于是在TSLog.log文件中，记录格式如下： 22:40 TCP 192.168.12.28:3389 192.168.10.123:4903ESTABLISHED 22:54 TCP 192.168.12.28:3389 192.168.12.29:1039ESTABLISHED 也就是说只要这个TSLog.bat文件一运行，所有连在3389端口的ip都会被记录，那么如何让这个批处理文件运行呢？我们知道终端服务允许我们为用户自定义起始的程序，在终端服务配置中，我们覆盖用户的登陆脚本设置并指定TSLog.bat为用户登录时需要打开的脚本，这样每个用户登录后都必须执行这个脚本，因为默认得脚本（相当于SHELL环境）是Explorer（资源管理器），所以我在TSLog.bat的最后一行加上了启动Explorer的命令start Explorer，如果不加这一行命令，用户是没有办法进入桌面的。当然，如果你只需要给用户特定的SHELL：例如cmd.exe或者word.exe你也可以把start explorer替换成任意的SHELL。这个脚本也可以有其他的写法，例如写一个脚本把每个登陆用户的ip发送到自己的信箱对于很重要的服务器也是一个很好的方法。 正常情况下，一般的用户没有查看终端服务设置的权限，所以他不会知道你对登陆进行了ip审核，只要把TSLog.bat文件和TSLog.log文件放在比较隐蔽的目录里就足够了，不过需要注意的是这只是一个简单的终端服务日志攻略，并没有太多的安全保障措施和权限机制，如果服务器有更高的安全要求，那还是需要通过编程后购买入侵检测 软件来完成。