QUERY_SERVICE_CONFIG

【勇芳软件工作室】汉化HomePreviousNext

QUERY_SERVICE_CONFIG结构由QueryServiceConfig功能用于返回有关已安装服务的配置信息。

typedef struct _QUERY_SERVICE_CONFIG { // QSC

DWORD dwServiceType;

DWORD dwStartType;

DWORD dwErrorControl;

LPTSTR lpBinaryPathName;

LPTSTR lpLoadOrderGroup;

DWORD dwTagId;

LPTSTR lpDependencies;

LPTSTR lpServiceStartName;

LPTSTR lpDisplayName;

} QUERY_SERVICE_CONFIG, LPQUERY_SERVICE_CONFIG;

会员

dwServiceType

返回的值包括以下服务类型标志之一,以指示服务类型。另外,对于SERVICE_WIN32服务,可能会设置SERVICE_INTERACTIVE_PROCESS标志,表示服务进程可以与桌面交互。

含义
SERVICE_WIN32_OWN_PROCESS一种服务类型标志,指示在其自身进程中运行的Win32服务。
SERVICE_WIN32_SHARE_PROCESS指示与其他服务共享进程的Win32服务的服务类型标志。
SERVICE_KERNEL_DRIVER指示Windows NT设备驱动程序的服务类型标志。
SERVICE_FILE_SYSTEM_DRIVER指示Windows NT文件系统驱动程序的服务类型标志。
SERVICE_INTERACTIVE_PROCESS指示可以与桌面交互的Win32服务进程的标志。

dwStartType

指定何时启动服务。指定以下值之一:

含义
SERVICE_BOOT_START指定由操作系统加载程序启动的设备驱动程序。仅当服务类型为SERVICE_KERNEL_DRIVER或SERVICE_FILE_SYSTEM_DRIVER时,此值才有效。
SERVICE_SYSTEM_START指定由IoInitSystem功能启动的设备驱动程序。仅当服务类型为SERVICE_KERNEL_DRIVER或SERVICE_FILE_SYSTEM_DRIVER时,此值才有效。
SERVICE_AUTO_START在系统启动期间自动指定由服务控制管理器启动的设备驱动程序或Win32服务。
SERVICE_DEMAND_START当进程调用StartService函数时,指定由服务控制管理器启动的设备驱动程序或Win32服务。
SERVICE_DISABLED指定无法再启动的设备驱动程序或Win32服务。

dwErrorControl

如果此服务在启动过程中无法启动,则指定错误的严重性,并确定启动程序在发生故障时所采取的操作。可以指定以下值之一:

含义
SERVICE_ERROR_IGNORE 
 启动(引导)程序记录错误,但继续启动操作。
SERVICE_ERROR_NORMAL 
 启动程序记录错误并显示一个消息框弹出,但继续启动操作。
SERVICE_ERROR_SEVERE 
 启动程序记录错误。如果最后一个已知的良好配置正在启动,则启动操作将继续。否则,系统将使用最后一次已知的配置重新启动。
SERVICE_ERROR_CRITICAL 
 如果可能,启动程序记录错误。如果最后一个已知的正常配置正在启动,则启动操作失败。否则,系统将以最后一次已知的良好配置重新启动。

lpBinaryPathName

指向包含服务二进制文件的完全限定路径的以null结尾的字符串。

lpLoadOrderGroup

指向一个以null结尾的字符串,命名此服务是其成员的负载排序组。如果指针为NULL或指向空字符串,则该服务不属于组。注册表中列出了以下负载排序组:

HKEY_LOCAL_MACHINE\System
\CurrentControlSet\Control\ServiceGroupOrder.

启动程序使用此列表按照列表中其他组的指定顺序加载服务组。您可以将服务放在组中,以便其他服务可以依赖组。

服务启动的顺序由以下标准决定:

1.在注册表的加载排序组列表中的组的顺序。首先启动加载排序组列表中的组中的服务,其次是不在加载排序组列表中的组中的服务,然后是不属于组的服务。

2.在【lpszDependenciesca】参数中列出的服务依赖关系以及依赖该服务的其他服务的依赖关系。

dwTagId

【lpLoadOrderGroup】参数指定的组中指定此服务的唯一标签值。值为零表示服务尚未分配标签。您可以通过在注册表中指定标签订单向量,在加载订单组中使用标签来订购服务启动:

HKEY_LOCAL_MACHINE\System\CurrentControlSet
\Control\GroupOrderList

标签仅针对具有SERVICE_BOOT_START或SERVICE_SYSTEM_START起始类型的SERVICE_KERNEL_DRIVER和SERVICE_FILE_SYSTEM_DRIVER类型服务进行评估。

lpDependencies

指向必须在此服务之前开始的一系列以零分隔的服务名称或加载排序组。该数组是双重空值终止的。如果指针为NULL或指向空字符串,则该服务不具有依赖关系。如果指定了一个组名称,则它必须以SC_GROUP_IDENTIFIER(在WINSVC.H文件中定义)字符为前缀,以将其与服务名称区分开来,因为服务和服务组共享相同的名称空间。对服务的依赖性意味着该服务只有在所依赖的服务正在运行时才能运行。对组的依赖意味着如果在尝试启动组的所有成员后至少有一个成员正在运行,则此服务可以运行。

lpServiceStartName

指向一个以null结尾的字符串。如果服务类型为SERVICE_WIN32_OWN_PROCESS或SERVICE_WIN32_SHARE_PROCESS,则此名称是“DomainName \\ Username”形式的帐户名称,服务进程将在运行时登录。如果帐户属于内置域,可以指定“。\\用户名”。如果指定为NULL,则该服务将作为LocalSystem帐户登录。

如果服务类型为SERVICE_KERNEL_DRIVER或SERVICE_FILE_SYSTEM_DRIVER,则此名称是输入和输出(I / O)系统用于加载设备驱动程序的Windows NT驱动程序对象名称(即\\ FileSystem \\ Rdr或\\ Driver \\ Xns)。如果指定为NULL,则使用由I / O系统基于服务名称创建的默认对象名来运行驱动程序。

lpDisplayName

指向要由用户界面程序用于标识服务的以空字符结尾的字符串。该字符串的最大长度为256个字符。该名称在案例中保留在服务控制管理器中。显示名称比较始终不区分大小写。

备注

当通过调用CreateService函数创建服务时,最初指定服务的配置信息。可以通过调用ChangeServiceConfig函数修改信息。

也可以看看

ChangeServiceConfig, CreateService, QueryServiceConfig, StartService