Windows Vista 的服务更改
服务模型发生了重大变化,以提高服务的性能、可靠性、安全性、管理和管理服务。
下表汇总了 Windows Vista 服务增强功能。
增强 | 描述 |
---|---|
延迟自动启动 |
系统启动后不久将启动延迟的自动启动服务。 这可以提高系统启动性能,同时仍为这些服务提供自动启动。 若要设置延迟的自动启动标志,请使用 SERVICE_CONFIG_DELAYED_AUTO_START_INFO调用 ChangeServiceConfig2 函数。 |
故障检测和恢复 |
如果服务失败,服务控制管理器(SCM)可以执行失败作,例如重启服务,以尝试从该故障中恢复。 若要配置故障作,请使用 SERVICE_CONFIG_FAILURE_ACTIONS调用 ChangeServiceConfig2。 |
Preshutdown 通知 |
在收到实际关闭通知之前,服务可以注册以在其 HandlerEx 函数中接收 SERVICE_CONTROL_PRESHUTDOWN 通知。 这为服务提供了长时间的关闭过程,以便正常关闭。 若要设置超时值,请使用 SERVICE_CONFIG_PRESHUTDOWN_INFO调用 ChangeServiceConfig2。 |
受限网络访问 |
可以使用服务 SID 来限制对端口、协议或网络流量方向的访问。 若要限制服务对网络的访问,请使用 INetFwServiceRestriction 接口。 |
以最低权限运行 |
服务可以在包含所需权限的任何帐户下运行(LocalService、NetworkService、LocalSystem、域帐户或本地帐户),并通过使用 SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO调用 ChangeServiceConfig2 来指示所需的权限。 SCM 删除不需要的任何特权。 |
服务隔离 |
服务可以通过使用包含服务 SID 的访问控制项来保护对象(如文件或注册表项)进行独占使用来隔离对象(如文件或注册表项)。 将此 SID 分配到服务后,服务所有者可以修改对象的访问控制列表以授予对 SID 的访问权限。 这使服务可以访问特定对象,而无需在高特权帐户下运行或降低对象的安全性。 若要设置服务 SID,请使用 SERVICE_CONFIG_SERVICE_SID_INFO调用 ChangeServiceConfig2。 |
服务状态更改通知 |
使用 NotifyServiceStatusChange 函数,服务可以注册以在创建、删除服务或状态发生更改时收到通知。 这比在循环中调用 QueryServiceStatusEx 函数来轮询状态更有效。 |
会话 0 隔离 |
服务始终在会话 0 中运行。 在 Windows Vista 之前,第一个登录用户也分配到会话 0。 现在,会话 0 专用于与交互式用户会话关联的服务和其他应用程序。 (要登录的第一个用户连接到会话 1,第二个登录用户连接到会话 2,依此等。会话 0 不支持与用户交互的进程。 此更改意味着服务无法向应用程序发布或发送消息,应用程序无法向服务发送或发布消息。 此外,服务无法直接显示用户界面项,例如对话框。 服务可以使用 WTSSendMessage 函数在另一个会话中显示对话框。 |