可能重复:
Loading GUI App from Windows Service在启动时启动服务并从服务启动应用程序?
我需要启动的.exe用户的桌面上的一个服务。只要用户登录到桌面,我也需要此服务才能启动。 (Windows 7平台)
我确实有SENS事件,但不确定如何将上述拼图放在一起。我也知道Runkey中的任何.exe会在窗口启动时启动,但我如何将我的服务放入Runkey?
任何帮助,将不胜感激。
谢谢。
可能重复:
Loading GUI App from Windows Service在启动时启动服务并从服务启动应用程序?
我需要启动的.exe用户的桌面上的一个服务。只要用户登录到桌面,我也需要此服务才能启动。 (Windows 7平台)
我确实有SENS事件,但不确定如何将上述拼图放在一起。我也知道Runkey中的任何.exe会在窗口启动时启动,但我如何将我的服务放入Runkey?
任何帮助,将不胜感激。
谢谢。
你将需要一个windows服务,检查http://msdn.microsoft.com/en-us/library/zt39148a%28v=vs.80%29.aspx。在服务中,当用户登录时需要检测:how to detect windows started or user login in c#(.net) windows service?
除了Windows服务之外,另一个选项是写入托盘应用程序,当用户以交互方式登录时,托盘应用程序将在托盘中启动。这消除了对始终运行的Windows服务的需求,并且必须检测何时发生登录。它将在登录时从托盘中开始,以它们的形式运行,并且您可以在托盘应用程序中提供gui以启动/停止服务。
这里是S.O.岗位:
How can I make a .NET Windows Forms application that only runs in the System Tray?
如果你想在交互未登录时,它总是甚至运行,那么Windows服务是要走的路。
从Vista开始,这不应该像这样完成,因为服务被设计为不能与桌面交互。这是关于这个主题的更深入的文件。
http://msdn.microsoft.com/en-us/windows/hardware/gg463353.aspx
通常情况下,你会把用户启动文件夹或类似桌面可执行程序,并将它与服务进行通信。
下面是影响你的那一段:
对于更复杂的交互,开发者应该将他们的UI代码到用户的会话中运行,并处理所有UI要求代理。代理通过RPC或命名管道与服务进行通信。如果用户使用控制面板,Internet Explorer或类似的UI体验启动UI交互,则该UI体验应启动代理。代理然后处理所有UI交互。如果UI是必需的,但不是由用户发起的,则服务必须请求代理启动任何所需的UI,而不是尝试单独启动该UI。在极少情况下,服务必须启动用户交互并且代理尚未运行,服务应调用CreateProcessAsUser API来启动代理。代理可以启动所有UI交互。开发人员仔细查看所有可能的使用场景并考虑将所有UI代码移动到在用户会话中运行的代理中,这一点非常重要。
有没有一个例子如何做到这一点,因为我很无知:( – user1683517
http://bloggingabout.net/blogs/dennis/archive/2010/06/16/wcf-simple-example-in-视觉工作室2010。aspx是一个制作自我托管的WCF服务的演练。这将由您的Windows服务托管。然后,您需要制作一个客户端应用程序(可能winforms,因为托盘图片功能在WPF中不受支持),它将使用WCF服务。 – spender