QueryServiceConfig功能检索指定服务的配置参数。
BOOL QueryServiceConfig(
SC_HANDLE 【hService】, | //处理服务 |
LPQUERY_SERVICE_CONFIG 【lpServiceConfig】, | //服务配置的地址。结构体 |
DWORD 【cbBufSize】, | //服务配置缓冲区的大小 |
LPDWORD 【pcbBytesNeeded】 | //所需字节的变量地址 |
); |
参数
【hService】
标识服务。该句柄由OpenService或CreateService函数返回,并且必须具有SERVICE_QUERY_CONFIG访问权限。
【lpServiceConfig】
指向返回服务配置信息的QUERY_SERVICE_CONFIG结构。
【cbBufSize】
指定由【lpServiceConfig】参数指向的缓冲区的大小(以字节为单位)。
【pcbBytesNeeded】
指向一个变量,它接收返回所有配置信息所需的字节数。
返回值
如果函数成功,返回值不为零。
如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.
错误
服务控制管理器可以设置以下错误代码。其他可以由服务控制管理器调用的注册表功能设置。
值 | 含义 |
ERROR_ACCESS_DENIED | 指定的句柄未被打开,具有SERVICE_QUERY_CONFIG访问权限。 |
ERROR_INSUFFICIENT_BUFFER | 与【lpServiceConfig】缓冲区相比,有更多的服务配置信息。在【pcbBytesNeeded】参数中返回获取所有信息所需的字节数。没有写入【lpServiceConfig】缓冲区。 |
ERROR_INVALID_HANDLE | 指定的句柄无效。 |
备注
QueryServiceConfig函数返回特定服务在注册表中保存的服务配置信息。此配置信息首先通过CreateService功能设置,并且可能已通过ChangeServiceConfig功能更新。如果服务在上次更改配置信息时运行,则返回的信息将不会反映正在运行的服务的真实配置。相反,它将在下一次运行时反映服务的配置。停止服务后,将使用存储在注册表中的配置更新服务控制管理器数据库。DisplayName键是一个例外。当DisplayName键更改时,无论该服务是否正在运行,它将立即生效。
【lpServiceConfig】缓冲区必须足够大以容纳QUERY_SERVICE_CONFIG结构的成员指向的字符串。
也可以看看
ChangeServiceConfig, CreateService, OpenService, QUERY_SERVICE_CONFIG, QueryServiceObjectSecurity, QueryServiceStatus