2010-10-07 78 views
1

嗨 我有一个Windows服务应用程序在用户本地计算机上运行。我还有一个应用程序更新应用程序,该应用程序由服务调用以检查是否有任何最新的更新可用。如果有的话,我想在任务栏上弹出通知,通知用户有更新可用。用户可以点击通知图标并开始更新过程,这将停止服务,安装更新并重新启动应用程序。如何启动通知图标

我的问题是如何让通知图标出现在桌面上。我试图让updater弹出图标,但由于windows服务启动更新程序,更新程序在System用户下运行,因此无法打开UI。请问任何人都可以提出解决方案

回答

1

你没有提及你用来开发你的应用的语言,所以答案可能会略有不同。基本上,Windows服务不能直接与登录用户交互,因为他们运行在不同的WindowStation中。 This page on MSDN描述了从Windows服务实现UI交互的一些常用技术;其中大部分涉及调用非管理代码。

特别是,我建议您从您的服务中拨打CreateProcessAsUser启动一个单独的应用程序,该应用程序在用户上下文中运行,并在通知区域显示图标。如果您的UI应用程序需要与正在运行的服务交换信息,则需要实施某种IPC,如命名管道。

+0

我正在使用.Net C# – Amitesh 2010-10-08 02:25:41

+0

在这种情况下,您可以使用P/Invoke调用CreateProcessAsUser,并按照上面的描述进行操作。它应该工作。 – CesarGon 2010-10-08 02:31:08