我的PC服务在PC启动时在后台运行。我想在系统托盘上显示一个图标,以便在用户登录后进行配置,但无法找到如何执行此操作。
是否有我应该寻找的事件告诉我用户已登录?
据我所知,Windows Services无法拥有UI,所以我需要启动应用程序才能显示sys托盘图标吗?如何将配置更新传递给我的服务。
答案 0 :(得分:11)
您需要一个单独的“代理”应用程序。 Windows服务是全局的,在系统级别运行。系统上可以同时运行多个桌面,因此虽然有多种方法允许服务与桌面层交互,但与“用户桌面”交互的方式与使用应用程序的方式相同并非易事。已经绑定到特定的登录/桌面环境。
将服务隧道连接到桌面环境也存在安全风险(它打开了通向系统帐户的路径,除非服务在更受限制的服务上运行),这就是为什么默认禁用与桌面交互的原因
答案 1 :(得分:5)
您需要一个单独的应用程序来显示托盘图标。您可以通过WCF让服务托管WCF服务或通过ServiceController与您的服务进行通信。
答案 2 :(得分:2)
我会创建第二个在用户登录时运行并在系统托盘中显示的应用程序。
您可以打开远程处理到Windows服务,并通过系统托盘中应用程序的公开方法传递配置更新。
答案 3 :(得分:2)
实际上,我认为您不能在系统托盘中显示服务。执行此操作的应用程序始终使用代理或其他管理工具。
大多数情况下,托盘中运行的应用程序是一个非常小的应用程序,可以访问服务的设置。
配置选项可以存储在注册表,ini文件或任何其他存储选项中。配置更改后,您需要做的就是确保重新启动服务,以便重新加载它的新设置。