终端服务(翻译)(一)
近段时间因为公司的要求开发一个在终端环境下进行通信的程序,我查找了很多的资料以及网站,但是几乎都没有这方面的材料,只有MSDN上面有一些英文资料,我翻译了一部分发表出来与大家共享,希望有这方面经验的高手提出您们宝贵的意见,我在这里谢谢大家。
使用终端服务API:
这一节描述了这样使用终端服务API在终端环境下去完成如下任务:
l 执行终端服务管理任务。例如:列举在一个域中的所有终端服务器,列举与管理一个终端服务器下的所有会话与进程。
l 在终端服务环境中增强一个客户/服务模式程序的功能。
l 在一个程序中使用终端虚拟通道使客户与服务组件进行通信。
l 设置或者取回一个特殊终端服务注册用户的配置信息。
假如你的程序在非终端环境下运行,但是你想在终端环境下利用终端服务API增强程序的功能,请看Run-time Linking to Wtsapi32.dll。
一、终端服务管理
终端服务API函数使你能够列举与管理所有的终端服务器、客户会话以及进程。
为了得到一个域中所有终端服务器的名字,可以调NetServerEnum函数去列举所有SV_TYPE_TERMINALSERVER类型的终端服务器。通过传递一个终端服务器的名字调用WTSOpenServer函数可以打开一个特殊终端服务器的句柄,当完成操作后可以调用WTSCloseServer函数去关闭它。
你可以使用通过WTSOpenServer函数返回的终端服务器句柄在服务器中执行以下的操作:
函数
操作
从一个特殊的会话中断开用户连接,但是这会话仍然存在,而且用户可以再次登陆并连接这个会话。
返回在一个特殊终端服务器中包括所有的会话的一个列表
返回在一个特殊终端服务器中包括所有的进程的一个列表
登陆一个特殊的会话
取回一个特殊终端服务器中一个特殊会话的信息
在一个特殊会话下的客户端显示器上显示一个信息框。
关闭或者启动一个终端服务器
结束一个特殊终端服务器中特殊的进程
打开一个特殊虚拟终端服务端的句柄。为了得到更多的信息,请关注Using Terminal Services Virtual Channels.
等待一个事件,例如一个客户会话的创建,一个用户登陆到一个终端服务器上。
上面的一些函数分配了缓冲区来返回信息给调用者,在使用完这些缓冲区后请使用WTSFreeMemory函数去释放这些内存资源。