监视会话连接和断开连接
对于服务应用程序(如虚拟通道服务器应用程序)监视会话连接和断开连接,必须将其注册到远程桌面服务。 若要向远程桌面服务注册应用程序,请通过在以下位置下添加子项,将虚拟通道服务器应用程序的名称存储在注册表中:
\ HKEY_LOCAL_MACHINE系统\CurrentControlSet\控制\TerminalServer\Addins
子项可以具有任何名称。 它必须具有包含应用程序的符号名称 的REG_SZ 值 Name。
Name = AddinName
子项和 Name 值的最大长度为 99 个字符。
子项还必须具有指示服务器应用程序的 类型的REG_DWORD 值。
Type = AddinType
AddinType 必须是以下值。
值 | 含义 |
---|---|
3 | 用户模式应用程序,会话空间。 |
注册服务应用程序仅在执行注册后创建的会话中生效。
对于每个已注册的服务应用程序,远程桌面服务会在客户端连接或断开会话时向一组事件对象发出信号。 每个虚拟通道插件都必须注册自身,并通过调用 CreateEvent 创建通知事件。 这些事件对象的名称遵循以下格式。
AddinName-Reconnect
AddinName-Disconnect
AddinName 是在注册服务器应用程序的注册表子项的 Name 值中指定的字符串。 在会话下创建这些事件会导致在特殊的每会话事件目录中创建这些事件。 事件目录通过阻止其他会话中的应用程序修改这些事件的状态来提供额外的安全性。
若要控制是否在服务器上收到重新连接和 DISCONNECT 事件,可以将 RemoteControlPersistent 标志放置在注册表中的以下键下:
\ HKEY_LOCAL_MACHINE系统\CurrentControlSet\控制\TerminalServer\Addins\addinname
当客户端会话启动或停止时,标志启用或禁用重新连接和 DISCONNECT 事件被发出信号。 REG_DWORD值的语法如下。
RemoteControlPersistent = flag
标志的值可以是一个或零。 零是默认值。 如果设置为 1,则启动或停止客户端会话时,不会通知服务应用程序。 如果设置为零,则当客户端会话启动时发出重新连接事件信号,并在客户端会话停止时发出 DISCONNECT 事件信号。
Windows Server 2008 仍支持以前的事件对象名称格式以实现向后兼容性。 建议使用较新的 Windows Server 2008 格式,因为它更安全。
前面的事件格式如下所示。
Global\AddinName-SessionId-Reconnect
Global\AddinName-SessionId-Disconnect
AddinName 是在注册服务器应用程序的注册表子项的 Name 值中指定的字符串。 SessionId 是客户端会话的会话标识符。