1

我正在构建一个 Windows 服务,该服务根据登录的 Windows 用户执行不同的操作。如果我在一个用户下安装我的服务,并将其设置为启动,将为每个登录的用户运行一个单独的实例, 继续运行,即使当前有多个用户登录?

这是我想要的行为,但如果不可能,我将不得不计划其他事情。

一般来说,每个用户登录会话是否都像自己的独立环境?换句话说,如果我安装了一个通过命名管道与我的服务交互的驱动程序,那么从当前登录用户的驱动程序发送的管道消息是否也会被其他登录用户下运行的其他服务实例接收(假设如上所述,它们确实运行单独的实例)?或者他们是完全独立的环境,有自己的驱动程序/内核实例?

4

2 回答 2

3

如前所述,Windows 服务有一个实例。默认情况下,它作为本地系统帐户运行,而不是作为任何特定用户运行(并且它无权访问单个用户的环境等)。它不会从当前登录的用户那里继承任何凭据。您可以为服务设置特定的用户凭据(例如,通过服务控制管理器)以作为任何给定用户运行服务的一个实例。但你只能得到一个。

于 2010-02-10T20:22:01.793 回答
1

至少在 XP 中,服务只能有一个实例。当然,特权服务可以像其他用户一样创建进程,但它们不会是正式的服务。

于 2010-02-10T19:05:20.710 回答