我有一个应用程序,由我在C#.net 2.0中编写 - 当应用程序打开时,计时器将每3秒检查一次x。如果x发生,它会以窗体形式显示警告。
是否有可能在Windows服务中安装此计时器和Windows窗体调用?因此,每次系统启动时计时器都会打勾并显示消息吗?
答案 0 :(得分:3)
Run
或HKLM
的{{1}}部分,以便在用户登录系统时始终启动它。答案 1 :(得分:2)
无法从Windows服务显示Windows窗体。服务仅在后台运行。
您可以拥有一个与Windows服务通信的单独Windows应用程序,并显示警告,信息等。
为此,该服务在LocalSystem帐户上运行,您必须启用该服务的属性才能与桌面交互。
答案 2 :(得分:0)
禁止服务与桌面交互,包括显示窗口或表单。在Windows 2003和XP中,您可以通过将服务标记为“交互式”来解决此问题,这将允许服务在用户会话上显示,但从Windows 2008和Vista开始,这将被强制执行,服务无法以任何方式进行交互与用户。
当服务需要显示任何内容时,解决方案是将逻辑拆分为两个独立的进程,一个是服务,另一个是普通用户进程。用户进程在其会话中启动(它可以在会话启动时自动启动),并通过某个IPC通道(共享内存,命名管道,套接字等)连接到服务。然后,该服务可以通过询问用户进程的一半来显示它需要显示的内容,从而向用户显示它想要的任何内容。
答案 3 :(得分:0)
正如其他人所说,请记住,Windows服务应该是一个背景,永远不会与用户程序进行交互。许多服务即使在用户未登录时也会运行 - 当没有桌面显示表单时,他们将如何显示表单?
那就是说,这听起来像是在试图将某些东西塞进一项不属于服务的服务中。如果您想要在后台运行并仍然与用户交互的内容,请考虑制作轻量级系统试用应用程序。事实上......这是一个有用的教程: