桌面应用程序和 Windows 服务之间通信的最佳方式

Posted

技术标签:

【中文标题】桌面应用程序和 Windows 服务之间通信的最佳方式【英文标题】:The best way to communicate between desktop app and windows service 【发布时间】:2013-10-06 04:26:46 【问题描述】:

我正在开发由两部分组成的应用程序 (c++)。

控制面板在受限用户帐户下工作(启用 UAC) Windows 服务,执行一些有用的任务

我需要在控制面板中收集用户首选项并将其发送给服务。

从控制面板发送/接收数据到服务的最佳方法是什么?

套接字和命名管道很好,但它们可能会导致 Windows 防火墙显示安全警告。 共享内存也不错,但它需要发送和接收线程之间的大量同步。

还有其他方法可以使用吗?

谢谢, 哈恰图尔

【问题讨论】:

您是在问如何通过某种 IPC 进行通信,或者如何使用Service Control Manager API,或者您是否认为它与设置套接字/管道基础设施相反? 您是否考虑过注册表和RegNotifyChangeKeyValue 我正在寻找 IPC,注册表不好,因为我的应用在受限用户帐户下运行,而服务在 SYSTEM 帐户下运行。 套接字/管道基础设施也不好,因为当您尝试设置侦听器时,Windows 防火墙会显示安全警告。 【参考方案1】:

共享内存每边需要三个额外的互斥对象。没那么多。如果您不想写任何东西,我们的MsgConnect(开源)实现了 MMF 传输,并提供了服务和 UI 应用程序之间通信的示例。

【讨论】:

感谢链接,我会检查的。根据文档,它使用 MemoryMappedFile 传输,如果它让所有员工都使用互斥锁,那么这就是我要找的。​​span>

以上是关于桌面应用程序和 Windows 服务之间通信的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

桌面应用程序和 Web 前端之间的通信

桌面应用程序和服务器之间的套接字通信

大型项目中进程间通信的最佳和最简单方法

在手机上运行的 Web 应用程序和服务器之间进行实时双向通信的最佳解决方案是啥?

使用 PhoneGap/Cordova 时应用程序和服务器之间通信的最佳实践

为客户端-服务器通信构建 TCP/IP 服务器的最佳方式?