您好 我有一个在用户本地计算机上运行的Windows服务应用程序。我还有一个应用程序更新程序应用程序,由服务调用,以检查是否有任何最新的更新可用。如果有,那么我想在任务栏上弹出通知,通知用户有可用的更新。用户可以单击通知图标并启动更新过程,该过程将停止服务,安装更新并重新启动应用程序。
我的问题是如何让通知图标显示在桌面上。我试图让更新程序弹出图标,但由于Windows服务启动更新程序,更新程序在系统用户下运行,因此无法打开UI。请有人建议解决方案吗
答案 0 :(得分:1)
您没有提及您用于开发应用的语言,因此答案可能略有不同。基本上,Windows服务无法直接与登录用户交互,因为它们在不同的WindowStation中运行。 This page on MSDN描述了从Windows服务实现UI交互的一些常用技术;其中大多数涉及调用非管理代码。
特别是,我建议您从服务中调用CreateProcessAsUser以启动在用户上下文中运行的单独应用程序,并在通知区域显示图标。如果您的UI应用程序需要与正在运行的服务交换信息,您将需要实现某种IPC,例如命名管道。