服务上的“类型”是什么?

服务上的“类型”是什么?

如果您在 Regedit 中查看 HKLM\SYSTEM\CurrentControlSet\services,会发现有很多键,其中一个是“Type”,它假定一个值范围(0x1、0x10、0x16 等),有人知道这是什么吗?

答案1

Microsoft 支持 - CurrentControlSet\Services 子项条目(以及其他相关键和值)。我猜您可以添加十六进制值来表示每个服务的多种类型。

以下是来自 Microsoft 支持页面的内容:

以下注册表路径下的 Services 子项包含设备驱动程序、文件系统驱动程序和 Win32 服务驱动程序的参数:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

每个 Services 子项的名称都是服务的名称,也是加载服务的文件名称的根。例如,对于串行鼠标,服务名称和服务子项名称是 Sermouse。加载该文件的文件是:

SystemRoot\SYSTEM32\DRIVERS\SERMOUSE.SYS。

所有服务名称定义如下:

 HKEY_LOCAL_MACHINE\SOFTWARE.

Windows NT 内置网络服务(例如 Alerter 和 Browser 服务)的名称是在注册表的软件区域中的 Microsoft\Windows NT\CurrentVersion 子项下定义的。

每个 Services 项都可以有其他子项。许多服务都有一个 Linkage 子项,它提供用于绑定网络组件的数据,如文章“网络适配器卡条目,第 1 部分”中的“网络组件的 Linkage 子项条目”中所述。许多服务还有一个 Parameters 子项,其中包含由服务定义的条目以及用于配置特定服务的值。

以下文章介绍了参数子项和其他服务特定条目的值:

网络适​​配卡条目 设备驱动程序条目 网络服务条目

每个服务子项都会显示以下标准值条目:

错误控制 REG_DWORD 错误常量指定服务的错误控制级别,如下所示:

错误控制含义级别

0x3(严重)尝试启动系统失败。如果启动未使用 LastKnownGood 控制集,则切换到 LastKnownGood。如果启动尝试使用 LastKnownGood,则运行错误检查例程。

0x2(严重)如果启动未使用 LastKnownGood 控制集,则切换到 LastKnownGood。如果启动尝试使用 LastKnownGood,则在出现错误时继续。

0x1(正常)如果驱动程序加载或初始化失败,启动应继续,但会显示警告。

0x0(忽略)如果驱动程序加载或初始化失败,则启动继续。不显示警告。

团体 REG_SZ 组名 指定特定服务所属组的名称。默认值:(空)

DependOnGroup REG_MULTI_SZ 组名 指定零个或多个组名。如果列出了一个或多个组,则必须先加载命名组中的至少一个服务,然后才能加载此服务。默认值:(空)

DependOnService REG_MULTI_SZ 服务名称 指定零个或多个服务子键名称。如果此处列出了某个服务,则必须先加载该命名服务,然后再加载此服务。默认值:(空)

图片路径 REG_DWORD 路径和文件名 指定路径名。对于适配器,此值将被忽略。默认值:对于驱动程序:

 systemroot\SYSTEM32\DRIVERS\driverName.SYS

对于服务:

 systemroot\SYSTEM32\serviceName.EXE

(其中 driverName 或 serviceName 与相关的 Services 子项名称相同)

对象名称 REG_DWORD 对象名称 指定对象名称。如果 Type 指定 WIN32 服务,则此名称是服务运行时将用于登录的帐户名称。如果 Type 指定内核驱动程序或文件系统驱动程序,则此名称是 I/O 管理器用于加载设备驱动程序的 Windows NT 驱动程序对象名称。默认值:subkeyName

开始 REG_DWORD 启动常量指定服务的起始值,如下所示:

启动类型 加载器 含义

0x0 内核代表引导(启动)卷的(引导)驱动程序堆栈的一部分
,因此必须由引导加载程序加载。


0x1 I/O 表示在内核初始化时要加载的驱动程序(系统)子系统。

0x2 服务要加载或启动(自动加载)
所有启动时都自动控制,管理器无论服务类型如何。

0x3 服务可用,无论类型如何,(
控制上加载但直到需要时才会启动)管理器用户启动它(例如,通过使用控制面板中的设备图标)。

0x4 服务不得在任何(禁用)控制条件下启动
。管理器

对于适配器,将忽略 Start 值。如果 Type 是 Win32 Service 值(如下所述),则 Start 值必须指定 Auto、Demand 或 Disabled 值。

标签 REG_DWORD 指定给定组内的加载顺序。Tag 的值指定一个数字,该数字在服务所属的组中是唯一的。Control\GroupOrderList 子项下的相关 GroupName 条目按加载顺序指定标签列表。

例如,以下属于主磁盘组的服务可能具有这些值:Abiosdsk 子项的 Tag=4、Atdisk 的 Tag=2、Cpqarray 的 Tag=1 和 Floppy 的 Tag=3。GroupOrderList 子项下的主磁盘值将使用这些标记值来指定加载这些服务的定义顺序。再举一个例子,每个 SCSI 微型端口服务都有一个唯一的标记值,该值用作 GroupOrderList 子项下的 SCSI 微型端口值中的标识符,以定义首先加载哪个 SCSI 适配器。

类型 REG_DWORD 类型常量

指定服务类型如下:

服务类型描述

0x1 内核设备驱动程序。

0x2 文件系统驱动程序,也是一个内核设备驱动程序。

0x4 一组适配器的参数。

0x10 可由服务控制器启动并遵守服务控制协议的 Win32 程序。此类 Win32 服务在自身进程中运行。

0x20 可以与其他 Win32 服务共享进程的 Win32 服务。

例如,启动 Windows NT 时,引导加载程序会扫描注册表,查找 Start 值为 0(表示这些驱动程序应在内核之前加载但不初始化)且 Type 值为 0x1(表示内核设备驱动程序,如硬盘或其他低级硬件设备驱动程序)的驱动程序。然后,驱动程序将按照 CurrentControlSet\Control\ServiceGroupOrder 中的 List 值指定的顺序加载到内存中。

相关内容