我有一个ac#应用程序,作为控制套接字连接和其他东西的Windows服务运行.此外,还有另一个Windows窗体应用程序来控制和配置此服务(带有配置参数的start,stop,show form的系统托盘).
我正在使用.net远程处理IPC,这很好,但现在我想显示一些真实的流量和其他报告,远程处理将无法满足我的性能要求.所以我想将两个应用程序合二为一.
这是问题所在:
当我从Windows服务启动表单时,没有任何反应.谷歌搜索我发现我必须右键单击该服务,转到登录并选中"允许服务与桌面交互"选项.由于我不想让我的用户这样做,我在安装期间再次在用户的regedit中设置了一些代码谷歌搜索.问题是即使设置此选项,它也不起作用.我必须打开服务的登录选项(已选中),取消选中并再次检查.
那么,如何解决呢?在同一进程中使用systray控件的Windows服务的最佳方法是什么,可供登录的任何用户使用?
更新:感谢您的评论到目前为止,伙计们.我同意使用IPC更好,我知道混合Windows服务和用户界面是不好的.即便如此,我想知道如何做到这一点.
两个独立的流程,使用您选择的技术进行通信.使用UI的服务是个坏主意.不要走这条路 - 你会后悔的.
通过简单的套接字连接进行服务通信,我获得了非常好的结果 - 很好地记录您的服务协议,尽可能保持简单,并且比您想象的要容易.