C# 如何在windows服务中执行操作?
我有一个应用程序,是我用C#.net 2.0编写的——当应用程序打开时,计时器会每隔3秒检查x。如果发生x,它将在windows窗体中显示警告C# 如何在windows服务中执行操作?,c#,windows-services,C#,Windows Services,我有一个应用程序,是我用C#.net 2.0编写的——当应用程序打开时,计时器会每隔3秒检查x。如果发生x,它将在windows窗体中显示警告 是否可以在windows服务中安装此计时器和windows窗体调用?因此,每当系统启动并显示消息时,计时器都会滴答作响,因此无法从Windows服务显示Windows窗体。服务只在后台运行 您可以使用单独的Windows应用程序与Windows服务通信,并显示警告、信息等 为此,该服务在LocalSystem帐户上运行,您必须启用该服务的属性以与桌面交互
是否可以在windows服务中安装此计时器和windows窗体调用?因此,每当系统启动并显示消息时,计时器都会滴答作响,因此无法从Windows服务显示Windows窗体。服务只在后台运行 您可以使用单独的Windows应用程序与Windows服务通信,并显示警告、信息等
为此,该服务在LocalSystem帐户上运行,您必须启用该服务的属性以与桌面交互。无法从Windows服务显示Windows窗体。服务只在后台运行 您可以使用单独的Windows应用程序与Windows服务通信,并显示警告、信息等 为此,服务在LocalSystem帐户上运行,您必须启用该服务的属性以与桌面交互
HKLM
或HKCU
的Run
部分,以便在用户登录系统时始终启动该应用程序HKLM
或HKCU
的Run
部分,以便在用户登录系统时始终启动该应用程序禁止服务与桌面交互,包括显示窗口或窗体。在windows 2003和XP中,您可以通过将服务标记为“交互式”来解决此问题,这将允许该服务在用户会话上显示,但在windows 2008和Vista中,这是强制执行的,并且服务无法再以任何方式与用户交互
当服务需要显示任何内容时,解决方案是将逻辑分为两个单独的进程,一个是服务进程,另一个是普通用户进程。用户进程在其会话中运行,由用户启动(可在会话启动时自动启动),并通过一些IPC通道(共享内存、命名管道、套接字等)连接到服务。然后,服务可以通过要求用户处理应用程序的一半来显示它需要显示的内容,从而向用户显示它希望显示的任何内容。禁止服务与桌面交互,包括显示窗口或表单。在windows 2003和XP中,您可以通过将服务标记为“交互式”来解决此问题,这将允许该服务在用户会话上显示,但在windows 2008和Vista中,这是强制执行的,并且服务无法再以任何方式与用户交互
当服务需要显示任何内容时,解决方案是将逻辑分为两个单独的进程,一个是服务进程,另一个是普通用户进程。用户进程在其会话中运行,由用户启动(可在会话启动时自动启动),并通过一些IPC通道(共享内存、命名管道、套接字等)连接到服务。然后,服务可以向用户显示它希望显示的任何内容,方法是要求用户处理应用程序的一半以显示它需要显示的内容。正如其他人所说,请记住,windows服务应该是后台服务,决不与用户程序交互。许多服务即使在用户未登录的情况下也会运行——当没有桌面供他们显示表单时,他们将如何显示表单 也就是说,它应该像你试图把一些东西塞进一个不应该是服务的服务中。如果您想要在后台运行并且仍然与用户交互的东西,请考虑制作一个轻量级的系统try应用程序。事实上以下是一个有用的教程:
正如其他人所说,请记住,windows服务应该是后台服务,永远不会与用户程序交互。许多服务即使在用户未登录的情况下也会运行——当没有桌面供他们显示表单时,他们将如何显示表单 也就是说,它应该像你试图把一些东西塞进一个不应该是服务的服务中。如果您想要在后台运行并且仍然与用户交互的东西,请考虑制作一个轻量级的系统try应用程序。事实上以下是一个有用的教程:
需要明确的是,应用程序不应该“在后台运行”,它应该是一个系统托盘应用程序或一个正常启动的应用程序。另外,最好将其添加到“启动”菜单中,这样用户在每次登录时都不想启动你的应用程序时,就不会诅咒你的母亲了。@Will:嗯,这取决于你是否允许他们不运行它…;-)需要明确的是,应用程序不应该“在后台运行”,它应该是一个系统托盘应用程序或一个正常的应用程序启动。此外,最好将其添加到