第一部分 介绍Windows NT Server 4.0,Terminal Server Edition 3
第一章 Windows NT 4.0与Windows Server4.0,Terminal Server Edition核心组件的区别 3
1.1 Windows NT结构的概述 3
1.2 终端服务器组件 4
1.2.1 输入/输出管理器 4
1.2.2 安全引用监视器 6
1.2.3 窗口管理器和图形设备接口 6
1.2.4 对象管理器 6
1.2.5 虚拟内存管理器 12
1.2.6 Copy-on-Write页保护 16
1.2.7 进程管理器 17
1.2.8 内核 17
1.2.9 Messenger服务 19
1.3 总结 20
第二章 终端服务器中新的组件结构 21
2.1 新的终端服务器服务 21
2.2 终端服务器初始化进程 21
2.2.1 加载控制台会话 22
2.2.2 初始化空闲会话 22
2.2.3 显示协议监听线程 23
2.3 会话初始化和用户身份验证 24
2.3.1 加载RDP显示驱动程序 24
2.3.2 创建WindowStation对象 24
2.3.3 用户登录 24
2.3.4 帐号验证 25
2.3.5 Sessionld和访问令牌 25
2.3.6 Windows桌面初始化 26
2.4 打印 26
2.5 会话断开 27
2.5.1 显示Disconnect菜单选项 27
2.5.2 新的Disconnect桌面对象 28
2.6 会话的重新连接 28
2.6.1 定位断开会话 28
2.6.2 重新连接到断开会话 29
2.6.3 重新初始化驱动程序 29
2.7 会话注销 29
2.8 总结 30
第三章 深入了解Microsoft远程桌面协议 31
3.1 远程桌面协议概述 31
3.1.1 RDP的结构和组件 32
3.1.2 RDP用户模式协议扩展 32
3.1.3 终端服务器设备驱动程序 33
3.1.4 远程桌面协议显示驱动程序 34
3.1.5 远程桌面协议WinStation驱动程序 35
3.1.6 TCP/IP传输驱动程序 35
3.2 建立会话和传送数据 35
3.2.1 会话连接 36
3.2.2 会话的断开 39
3.2.3 会话的重新连接 39
3.2.4 发送和接收RDP数据 40
3.3 RDP如何显示图像? 41
3.3.1 解释Windows绘图命令 41
3.3.2 绘制简单的Windows对话框 41
3.3.3 智能编码技术 42
3.3.4 符号和位图高速缓存 42
3.3.5 屏幕到屏幕传送 43
3.4 总结 43
第四章 深入了解远程桌面协议客户结构 45
4.1 终端服务器客户概述 45
4.1.1 支持的客户平台 45
4.1.2 终端服务器客户的设计目标 46
4.1.3 Win32和Win16客户的区别 46
4.2 终端服务器客户组件 46
4.3 终端服务器客户结构 48
4.3.1 界面线程 49
4.3.2 发送端线程 49
4.3.3 接收端线程 49
4.4 客户连接方案 49
4.4.1 会话连接 49
4.4.2 客户初始化 50
4.4.3 会话协商 50
4.4.4 发送鼠标和键盘输入数据包 51
4.4.5 接收显示更新数据包 51
4.5 终端服务器客户的加密 51
4.6 RDP高速缓存技术:位图和符号高速缓存 52
4.6.1 位图高速缓存大小 52
4.6.2 高速缓存技术 52
4.6.3 符号高速缓存 53
4.7 RDP高速缓存技术:阴影屏幕高速缓存 54
4.7.1 桌面上的阴影屏幕高速缓存 54
4.7.2 应用程序中的阴影屏幕高速缓存 55
4.8 总结 55
第二部分 终端服务器的性能测试和容量规划 59
第五章 终端服务器性能测试的基本原理 59
5.1 为什么要测试系统性能? 59
5.1.1 系统的可靠性和可用性 60
5.1.2 系统的可扩展性 61
5.2 成功地进行性能测试 62
5.2.1 测试目标 62
5.2.2 定义测试环境 63
5.2.3 用户模拟方法和工具 63
5.3 捕获测试数据 67
5.4 测试的限制 68
5.5 总结 69
第六章 准备测试终端服务器 71
6.1 测试平台 71
6.1.1 硬件平台 71
6.1.2 应用程序平台 72
6.2 可接受的性能 73
6.3 脚本实例 73
6.4 数据的收集和分析 74
6.4.1 监视的性能计数器 75
6.4.2 监视的其他计数器 76
6.4.3 分析和显示测试结果 78
6.5 总结 79
第七章 测试终端服务器 81
7.1 测试方法 82
7.2 测试系统 83
7.2.1 测试结构和环境 84
7.2.2 测试终端服务器系统的配置 86
7.2.3 测试用户 86
7.2.4 执行测试 86
7.2.5 可接受的性能 88
7.3 性能测试结果 89
7.3.1 示例测试数据 89
7.3.2 测试数据总结 91
7.3.3 计时器脚本结果 92
7.3.4 处理器限制 92
7.3.5 内存限制 93
7.3.6 磁盘的使用 93
7.3.7 网络的使用 94
7.4 终端服务器计划的建议 94
7.4.1 计划的风险 95
7.4.2 关键的性能指标 95
7.5 总结 96
第三部分 准备配置终端服务器 99
第八章 终端服务器配置和管理工具 99
8.1 终端服务器连接配置 99
8.1.1 高级连接设置 100
8.1.2 Connection Permissions菜单 104
8.2 终端服务器用户管理器 107
8.2.1 New User配置 107
8.2.2 NetWare登录配置 111
8.2.3 用户配置文件概述 112
8.3 Terminal Server Administration 113
8.4 NetWare User Access for Terminal Server 117
8.5 Application Security 117
8.6 Terminal Server Client Creator 119
8.7 Terminal Server License Manager 119
8.7.1 Windows NT Workstation许可证 119
8.7.2 服务器的Client Access License 120
8.7.3 License Enforcement 120
8.8 总结 121
第九章 准备配置 123
9.1 了解现有环境并编写文档 123
9.1.1 网络结构 124
9.1.2 服务器环境 126
9.1.3 客户环境 127
9.1.4 应用程序 128
9.1.5 命名约定 130
9.2 总结 130
第十章 计划终端服务器的配置 131
10.1 域结构 131
10.1.1 选择域的设置 132
10.1.2 减少SAM大小 136
10.2 设计远程访问 139
10.3 网络考虑事项 141
10.3.1 布线 141
10.3.2 DNS 141
10.3.3 WINS 143
10.3.4 DHCP 143
10.3.5 其他网络 144
10.4 安全性 145
10.4.1 文件系统 145
10.4.2 回收站 146
10.4.3 通信 146
10.4.4 加密 146
10.4.5 系统策略 147
10.4.6 应用程序 148
10.4.7 Microsoft ActiveX 148
10.4.8 审核 149
10.4.9 用户权限 149
10.4.10 自动登录过程 150
10.4.11 GINA 151
10.4.12 密码 151
10.5 服务器 151
10.5.1 存储器 152
10.5.2 内存 152
10.5.3 交换文件和转储文件 152
10.5.4 CPU 153
10.5.5 容错 153
10.5.6 网络接口卡 154
10.5.7 备份 154
10.5.8 注册表 154
10.6 客户 154
10.6.1 基于Windows的终端 155
10.6.2 个人计算机 155
10.6.3 非Windows计算机 156
10.7 从终端服务器打印 156
10.8 最佳实践 157
10.8.1 尽量减少图形的使用 157
10.8.2 映射本地驱动器和资源 158
10.8.3 使用断开连接会话 159
10.8.4 修改闪烁光标 159
10.8.5 限制屏幕保护程序 159
10.8.6 限制MS-DOS应用程序 160
10.8.7 了解系统组合键 160
10.9 总结 160
第四部分 在终端服务器环境中使用应用程序 163
第十一章 应用程序设计、故障诊断和优化 163
11.1 概述 163
11.2 应用程序在终端服务器中的工作方式 164
11.3 为什么应用程序在多用户环境中失败? 164
11.3.1 注册表问题 165
11.3.2 文件问题 167
11.3.3 对象问题 170
11.4 应用程序设计和优化的考虑事项 171
11.4.1 不允许某些程序的多个实例 171
11.4.2 使用文件和数据库锁定 172
11.4.3 解决内存泄漏问题 172
11.4.4 不要假定计算机名或IP地址等同于一个用户 172
11.4.5 不要假定Windows外壳正在运行 172
11.4.6 不要假定文件保留在临时目录中 173
11.4.7 不要修改GINA 173
11.4.8 不要替换系统文件 173
11.4.9 在系统内部和网络上协商客户/服务器连接 173
11.4.10 通过用户配置文件支持自定义 174
11.4.11 考虑多语言和国际使用方案 174
11.4.12 考虑外围硬件环境 174
11.5 优化建议 174
11.5.1 调整后台任务资源消耗 175
11.5.2 调整线程的使用 175
11.5.3 尽量减少启动屏幕的使用 175
11.5.4 尽量减少动画的使用 175
11.5.5 尽量减少直接视频访问 176
11.5.6 将用户输入程序移动到前台应用程序 176
11.5.7 为所有用户启用应用程序访问 176
11.5.8 列举系统资源 176
11.5.9 尽可能使用类库 177
11.6 DCOM支持的限制 177
11.7 总结 178
第十二章 应用程序兼容性脚本 179
12.1 ACS的功能 179
12.2 ACS的两种类型 180
12.2.1 安装脚本 180
12.2.2 登录脚本 180
12.3 ACS怎样通过修改路径来指向主目录? 180
12.3.1 使用ACS修改路径 182
12.4 使用ACS的过程 183
12.4.1 USRLOGON.CMD文件 183
12.5 总结 184
第五部分 终端服务器的未来 187
第十三章 终端服务器未来的增强功能 187
13.1 终端服务器在Service Pack 4中进行的更改 187
13.1.1 终端服务应用程序编程接口 188
13.1.2 会话轮询 190
13.1.3 虚拟电路的增强 191
13.2 Microsoft Windows 2000中的终端服务 193
13.2.1 单一的二进制内核 193
13.2.2 对象名称空间 194
13.2.3 虚拟内存管理器 195
13.2.4 支持所有DCOM激活模式 197
13.2.5 应用程序编程接口 199
13.2.6 虚拟通道支持 199
13.2.7 强制的终端服务器授权 199
13.2.8 终端服务远程管理模式 200
13.2.9 新的RDP客户特性 202
13.3 总结 213
第六部分 附录 217
附录A 终端服务器客户错误代码 217
A.1 断开错误代码 217
A.2 严重错误消息 220
附录B 新的Performance Monitor对象和计数器 223
B.1 对象:进程(已有对象) 223
B.2 对象:会话(新对象) 223
B.3 对象:系统(已有对象) 230
B.4 对象:用户(新对象) 230
附录C 终端服务器的命令工具 233
C.1 APPSEC 233
C.2 AREVFIX 233
C.3 CHANGE 234
C.3.1 Change[logon|port|user][/?] 234
C.3.2 CHANGE LOGON 234
C.3.3 CHANGE PORT 234
C.3.4 CHANGE USER 235
C.4 CONNECT 236
C.5 CNVRTUC 237
C.6 CPROFILE 238
C.7 DBGTRACE 239
C.8 DISCONN 239
C.9 DOSKBD 240
C.10 FLATTEMP 243
C.11 KILL 244
C.12 LOGOFF 245
C.13 MIGRATE 246
C.14 MSG 247
C.15 NDSPSVR 249
C.16 NW2NT 249
C.17 PERUSER 250
C.18 QUERY 250
C.18.1 Query Termserver 251
C.18.2 Query Object 251
C.18.3 Query Process 252
C.18.4 Query Session 254
C.18.5 Query User 256
附录D 应用程序兼容性标志 259
附录E 终端服务器脚本的其他自动化工具 261
E.1 ACREGL.EXE 261
E.1.1 语法 261
E.1.2 命令行选项的详细信息 261
E.1.3 示例 262
E.2 ACSR.EXE 263
E.2.1 语法 263
E.2.2 示例 263
E.3 ACINIUPD.EXE 263
E.3.1 语法 263
E.3.2 命令行选项的详细信息 263
E.4 CACLS.EXE 264
E.4.1 语法 264
E.4.2 命令行选项的详细信息 264
E.4.3 示例 265
E.5 FINDSTR.EXE 265
E.5.1 语法 265
E.5.2 命令行选项的详细信息 265
E.5.3 示例 266
E.6 REGINI.EXE 266
E.6.1 语法 266
E.6.2 命令行选项的详细信息 266
E.6.3 一般规则 267
E.6.4 注册表值语法 268
E.6.5 示例 269
附录F 终端服务器性能测试脚本 271
F.1 初级用户脚本 271
F.1.1 初始化 272
F.1.2 LOB应用程序:加载和数据输入 272
F.1.3 LOB应用程序:切换和搜索 273
F.1.4 LOB应用程序:重复和打印 273
F.2 中级用户脚本 273
F.2.1 初始化 273
F.2.2 Outlook:发送邮件 274
F.2.3 Web浏览 275
F.2.4 Word 276
F.2.5 Outlook:阅读邮件 276
F.3 高级用户脚本 277
F.3.1 初始化 277
F.3.2 Excel 278
F.3.3 Outlook:发送邮件 278
F.3.4 使用文件系统 279
F.3.5 Web浏览 280
F.3.6 Word 281
F.3.7 Excel:创建电子表格和图表 282
F.3.8 Outlook:阅读邮件并回复 283
附录G Windows NT终端服务器和Windows 2000终端服务高级编程接口 285
G.1 终端服务器API函数 285
G.1.1 ProcessIdToSessionId 285
G.1.2 VirtualChannelClose 286
G.1.3 VirtualChannelEntry 287
G.1.4 VirtualChannelInit 288
G.1.5 VirtualChannelInitEvent 289
G.1.6 VirtualChannelOpen 291
G.1.7 VirtualChannelOpenEvent 292
G.1.8 VirtualChannelWrite 295
G.1.9 WTSCloseServer 296
G.1.10 WTSDisconnectSession 297
G.1.11 WTSEnumerateProcesses 298
G.1.12 WTSEnumerateSessions 299
G.1.13 WTSFreeMemory 300
G.1.14 WTSLogoffSession 300
G.1.15 WTSOpenServer 301
G.1.16 WTSQuerySessionInformation 302
G.1.17 WTSQueryUserConfig 305
G.1.18 WTSSendMessage 306
G.1.19 WTSSetUserConfig 308
G.1.20 WTSShutdownSystem 310
G.1.21 WTSTerminateProcess 312
G.1.22 WTSVirtualChannelClose 313
G.1.23 WTSVirtualChannelOpen 313
G.1.24 WTSVirtualChannelPurgeInput 314
G.1.25 WTSVirtualChannelPurgeOutput 315
G.1.26 WTSVirtualChannelQuery 316
G.1.27 WTSVirtualChannelRead 316
G.1.28 WTSVirtualChannelWrite 318
G.1.29 WTSWaitSystemEvent 319
G.2 终端服务API函数 320
G.2.1 CHANNEL_DEF 320
G.2.2 CHANNEL_ENTRY_POINTS 322
G.2.3 CHANEL_PDU_HEADER 323
G.2.4 WTS_CLIENT_ADDRESS 324
G.2.5 WTS_CLIENT_DISPLAY 325
G.2.6 WTS_PROCESS_INFO 325
G.2.7 WTS_SESSION_INFO 326
G.3 终端服务API枚举类型 327
G.3.1 WTS_CONFIG_CLASS 327
G.3.2 WTS_CONNECTSTATE_CLASS 331
G.3.3 WTS_INFO_CLASS 332
G.3.4 WTS_VIRTUAL_CLASS 334
附录H 示例应用程序兼容性脚本 335
H.1 USRLOGON.CMD 335
H.2 ROOTDRV.CMD 336
H.3 USRLOGN1.CMD和USRLOGN2.CMD 336
H.4 DRWATSON.CMD 339
H.5 CHKROOT.CMD 340
H.6 ROOTDRV2.CMD 341
H.7 OFFICE97.CMD 341
H.8 OFFICE97.KEY 345
H.9 OFC97USR.CMD 347