Windows services 确保登录前运行windows服务
Windows services 确保登录前运行windows服务,windows-services,Windows Services,我构建了一个作为windows服务运行的应用程序,并通过我的代码安装
除了登录,一切正常
在第一个windows xp/2003服务器登录屏幕上,我不确定该服务是否正在运行。如果是,那么它确实可以工作,因为它不起作用(服务正在使用WINPCAP,所以这可能是一个问题)
服务设置设置为“与桌面交互”,并作为系统运行
如何确保服务在windows登录之前启动?此外,即使在注销后,我如何确保它运行? < P>有两个问题需要考虑。
首先,您可以通过将事件记录到Windows事件日志来检查您的服务在登录之
我构建了一个作为windows服务运行的应用程序,并通过我的代码安装
除了登录,一切正常
在第一个windows xp/2003服务器登录屏幕上,我不确定该服务是否正在运行。如果是,那么它确实可以工作,因为它不起作用(服务正在使用WINPCAP,所以这可能是一个问题)
服务设置设置为“与桌面交互”,并作为系统运行
如何确保服务在windows登录之前启动?此外,即使在注销后,我如何确保它运行? < P>有两个问题需要考虑。
首先,您可以通过将事件记录到Windows事件日志来检查您的服务在登录之前和注销之后是否确实在运行。几乎所有服务在启动和停止时都会这样做,您的服务也应该这样做
WinPcap可能是问题的一部分。在服务中使用WinPcap有两条黄金规则
1a)在您自己的服务启动时,您的服务不得执行任何可能导致WinPcap服务尝试启动的操作,因为这将导致Windows服务控制管理器中出现死锁。这意味着,如果在服务开始启动时WinPcap服务尚未运行,则在服务运行之前,您不得执行任何可能导致其启动的操作
有两种方法可以确保这一点。或者使您的服务依赖于网络包过滤服务npf。或者在服务运行之前不要调用任何WinPcap函数。我没有试过后一种方法。我假定WinPcap函数将阻塞,直到npf正在运行服务
1b)如果您使您的服务依赖于npf,您还必须使其依赖于nm(网络监视器驱动程序)-如果且仅当系统上安装了nm。nm为WinPcap提供PPP/VPN支持,WinPcap在安装后总是尝试使用它。显然,如果您将nm作为服务的依赖项,并且没有安装nm,那么您的服务将无法启动
我认为没有一种方法可以保证你的服务在桌面出现之前启动。但是,您可以创建一个服务控制组,将其添加到现有服务控制组列表的末尾,并将您的服务放入该组中,从而帮助完成工作。我并不完全相信这是一种“认可的”方式,可以让您的服务更快地开始,因为如果有一种认可的方式,那么每个人都会这样做,而且它将不再有效。但有人建议,在启动组中的服务之前,先启动组中的服务
查看HKEY_LOCAL_MACHINE,“SYSTEM\CurrentControlSet\Control\GroupOrderList”和HKEY_LOCAL_MACHINE“SYSTEM\CurrentControlSet\Control\ServiceGroupOrder”,并进行一些谷歌搜索