我正在构建一个Windows服务,根据Windows用户的登录情况执行不同的操作。如果我在一个用户下安装我的服务,并将其设置为启动,则会为每个用户运行一个单独的实例即使当前有多个用户登录,也会登录并继续运行?
这是我想要的行为,但如果不可能,我将不得不计划其他事情。
一般来说,每个用户登录会话都是独立环境吗?换句话说,如果我安装了一个通过命名管道与我的服务交互的驱动程序,那么从当前登录用户的驱动程序发送的管道消息也将被其他登录用户下运行的其他服务实例接收(假设他们确实运行单独的实例,如上所述)?或者他们是完全独立的环境与自己的驱动程序/核心实例?
答案 0 :(得分:3)
如上所述,Windows服务有一个实例。默认情况下,它作为本地系统帐户运行,而不是作为任何特定用户运行(并且它无法访问单个用户的环境等)。它不会从凭据方面继承当前登录用户的任何内容。您可以为服务设置特定的用户凭据(例如,通过服务控制管理器)以任何给定用户身份运行服务的一个实例。但你只能得到一个。
答案 1 :(得分:1)
至少从XP开始,服务只能有一个实例。当然,特权服务可以像其他用户一样创建流程,但它们不是正式的服务。