2017-06-22 91 views
0

据我所知,一个服务应用程序的主要入口点调用StartServiceCtrlDispatcher带有一个条目数组(其中包含要运行的服务的入口点)。为什么必须安装Windows服务?

没有关于该设置特别需要任何类型的安装:那么为什么必须安装Windows服务呢?

我假设它是一个访问管理/安全的事情,但我无法找到任何网络上。

+0

如果您要求Windows启动服务,并且该服务尚未安装,Windows如何知道要使用的可执行文件? –

+0

服务由OS启动。它需要知道做这件事的东西,这需要注册表中的密钥。没有太多,即使sc.exe可以做到这一点。键入sc.exe创建/?基本信息。 –

回答

1

服务没有连接到特定的用户,服务的主要卖点是没有用户登录时运行的能力。如果没有用户启动服务,Windows如何知道要怎么做如果没有可以咨询的中央清单,请开始使用?

服务列表存储在注册表中,这是服务管理器获取已安装服务及其配置的列表的位置。

大多数第三方服务每个.exe只包含一个服务,传递给StartServiceCtrlDispatcher的数组只包含一个服务。着名的svchost.exe可以在一个进程中拥有多个服务,在这种设计中,每个服务都在由svchost.exe加载的.dll中实现。

Microsoft使用svchost.exe设计来减少系统上的进程总数。系统上仍然会有多个svchost进程,每个配置类型都有一个(网络访问vs仅限本地等)。

服务管理员需要了解的每项服务的其他配置详细信息包括在服务死亡时应该采取的操作以及是否应该延迟启动等。这些设置在服务本身中没有硬编码,因此管理员可以更改配置。