桌面应用程序和 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 应用程序和服务器之间进行实时双向通信的最佳解决方案是啥?