QueryServiceConfig

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

QueryServiceConfig功能检索指定服务的配置参数。

BOOL QueryServiceConfig(

SC_HANDLE 【hService】,//处理服务
LPQUERY_SERVICE_CONFIG 【lpServiceConfig】,//服务配置的地址。结构体
DWORD 【cbBufSize】,//服务配置缓冲区的大小
LPDWORD 【pcbBytesNeeded】//所需字节的变量地址
); 

参数

【hService】

标识服务。该句柄由OpenServiceCreateService函数返回,并且必须具有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