服务中的 DDE 客户端与用户会话中的服务器通信
DDE Client in Service talking to a server in user session
我编写了一个与第三方 DDE 服务器通信的 C++ DDE 客户端(控制台)应用程序。当我的客户端和服务器处于同一会话中时,这工作正常。然后,我将客户端代码移动到作为系统运行的 win32 服务中。尽管尝试了以下操作,但客户端代码仍无法获取服务器列表:1. 我尝试在 Win7 上启用"允许服务与桌面交互"。2.我在尝试与服务器通信的线程中模拟了用户。3 我尝试将客户端代码作为系统执行。
我可以理解主要问题是跨多个会话的通信。但是有什么方法可以优雅地实现吗?
从 Vista 开始,由于会话 0 隔离,"交互式"服务不再工作。
DDE 是一种基于 User32 的技术(它在内部使用窗口消息),因此不能跨会话边界使用。
若要执行正在尝试的操作,必须创建一个单独的非服务应用,该应用在用户会话的上下文中运行,并根据需要使用 DDE,通过与会话无关的 IPC 机制(如命名管道、套接字或 COM 对象)与服务来回通信。 该服务可以使用WTSQueryUserToken()
和CreateProcessAsUser()
在需要时在特定用户会话中运行应用。 或者,您可以将应用配置为在用户登录时自动运行。
相关文章:
- 为多个会话保留XPtr
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 有没有办法知道Tracer是否成功地完全连接到了jaegerclientcpp中的jaeger后端服务器
- 从服务器传输到客户端的消息不会出现
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- OpenSSL TLS服务器-使用客户端证书白名单
- 如何修复 Onnx运行时会话>运行问题?
- 我正在开发服务器,ip作为参数传递不起作用
- 我可以与 python 服务器而不是 c++ 客户端建立 tcp/ip 套接字吗?
- 哪种机制使Oracle会话在服务器上保持活动状态
- 服务中的 DDE 客户端与用户会话中的服务器通信
- 如何在客户端和服务器之间建立sip会话
- Telnet客户端-服务器会话与协商
- 使用FFmpeg通过RTMP连接到nginx服务器,会话id为
- 在终端服务服务器会话中存储用户的应用程序首选项。托管C++
- 当远程桌面会话注销时,如何阻止DLL终止应用程序服务器
- C++:Boost.Asio:在新线程中启动SSL服务器会话