如何显示C#窗口服务的系统托盘图标。?

如何显示C#窗口服务的系统托盘图标。?,c#,windows,C#,Windows,如何显示C#window service的系统托盘图标?您不能直接显示,因为windows服务必须在计算机启动时启动,而不是在用户登录时启动。服务也将在不同的上下文中运行,可能是作为不同的用户运行 您可以编写一个单独的基于系统托盘的“控制器”,与服务交互。服务运行在与登录用户不同的窗口站,因此您不能为它们设置系统托盘图标。发件人: Windows服务应用程序在与登录用户的交互站不同的窗口站中运行。窗口站是一个安全的对象,它包含一个剪贴板、一组全局原子和一组桌面对象。由于Windows服务的工作站

如何显示C#window service的系统托盘图标?

您不能直接显示,因为windows服务必须在计算机启动时启动,而不是在用户登录时启动。服务也将在不同的上下文中运行,可能是作为不同的用户运行


您可以编写一个单独的基于系统托盘的“控制器”,与服务交互。

服务运行在与登录用户不同的窗口站,因此您不能为它们设置系统托盘图标。发件人:

Windows服务应用程序在与登录用户的交互站不同的窗口站中运行。窗口站是一个安全的对象,它包含一个剪贴板、一组全局原子和一组桌面对象。由于Windows服务的工作站不是交互式工作站,因此从Windows服务应用程序中引发的对话框将看不到,并可能导致程序停止响应。同样,错误消息应该记录在Windows事件日志中,而不是在用户界面中引发

.NET Framework支持的Windows服务类不支持与交互式工作站(即登录用户)的交互。NET Framework还不包括表示工作站和桌面的类。如果Windows服务必须与其他工作站交互,则需要访问非托管Windows API。有关详细信息,请参阅Windows SDK文档

Windows服务与用户或其他站点的交互必须仔细设计,以包括诸如没有登录用户或用户具有意外的桌面对象集等场景。在某些情况下,编写在用户控制下运行的Windows应用程序可能更合适

这里有几个关于如何写入系统托盘的链接。您将需要另一个应用程序与该服务交互,因为该服务不能直接在系统托盘中显示图标