如何从 GUI 控制 Windows 服务的设置?

Posted

技术标签:

【中文标题】如何从 GUI 控制 Windows 服务的设置?【英文标题】:How to control settings of Windows Service from GUI? 【发布时间】:2014-03-18 22:40:36 【问题描述】:

我有这个与 TCP/IP 通信的 Windows 服务。 我想知道的是一个 Windows 窗体应用程序能够修改此服务设置的方法,例如要连接的远程主机地址和端口、超时长度和日志设置。 我研究过 NamedPipe、WCF 服务和 IPC,但我无法确定最适合我的方案的内容。 能够通过从客户端执行类似的操作来更改服务设置会很高兴。 [服务].SetTimeout(3000); 有什么建议吗?

【问题讨论】:

我会修改服务的配置(无论它存储在哪里——文件、注册表等),然后使用ServiceController 告诉它重新加载其设置。 【参考方案1】:

如果您想要这种程序化控制,那么 WCF 是您的最佳选择。使用 WCF,您可以自己定义 API,例如,要调用什么方法、要传递什么消息等。WCF 框架会为您交换数据。并且使用 WCF 配置文件,更改后端数据交换机制是微不足道的。例如,您可以通过修改配置文件将用于同一机器通信的NetNamedPipeBinding 替换为用于跨机器通信的NetTcpBinding。但是,完全公开,如果你以前没有做过 WCF,我的经验是进入门槛相当高。当然,我对 Visual Studio 2008 很感兴趣。在更新的版本中它可能会容易得多。这是an answer,我在不久前提供了一些对我有帮助的教程。

就我个人而言,在我从事的项目中,我已将早期的 WCF 实现替换为基于 localhost 的基于 TCP 的版本。当事情“运行”时,前端应用程序从 Windows 服务接收恒定信息,而在我们做出决定时,WCF 流还没有很好地记录。我们也看到了问题的证据,尽管这可能仅仅是因为我们做错了。无论如何,我对我们提出的解决方案感到非常满意。

我不能直接与命名管道对话,但根据我的阅读,它们很容易使用。

HTH。

【讨论】:

以上是关于如何从 GUI 控制 Windows 服务的设置?的主要内容,如果未能解决你的问题,请参考以下文章

从 Windows 服务启动 GUI 应用程序

错误1053:服务没有及时响应启动或控制请求

GUI和windows服务通信

使用网络登录从 Windows 服务创建 GUI

有啥方法可以从 Windows 7 上的 Windows 服务启动 GUI 应用程序?

如何在没有远程桌面连接的 jenkins windows slave 上运行 GUI 测试?