查询服务的配置

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

在以下示例中,服务配置程序使用OpenService函数获取对已安装服务对象的SERVICE_QUERY_CONFIG访问权限的句柄。然后程序使用QueryServiceConfig函数中的服务对象句柄来检索服务的当前配置。

VOID GetSampleServiceConfig()

{

LPQUERY_SERVICE_CONFIG lpqscBuf;

DWORD dwBytesNeeded;

//打开服务的句柄。

schService = OpenService(

schSCManager, // SCManager数据库

TEXT("Sample_Srv"), //服务名称

SERVICE_QUERY_CONFIG); //需要QUERY访问

if (schService == NULL)

MyErrorExit("OpenService");

//为信息配置分配一个缓冲区。

lpqscBuf = (LPQUERY_SERVICE_CONFIG) LocalAlloc(

LPTR, 4096);

if (lpqscBuf == NULL)

MyErrorExit("LocalAlloc");

//获取并打印信息配置。

if(!QueryServiceConfig

schService,

lpqscBuf,

4096,

& dwBytesNeeded))

{

MyErrorExit("QueryServiceConfig");

}

printf("\nSample_Srv configuration: \n");

printf(" Type: 0x%x\n", lpqscBuf->dwServiceType);

printf(" Start Type: 0x%x\n", lpqscBuf->dwStartType);

printf(" Err Control: 0x%x\n", lpqscBuf->dwErrorControl);

printf(" Binary path: %s\n", lpqscBuf->lpBinaryPathName);

if (lpqscBuf->lpLoadOrderGroup != NULL)

printf(“加载订单组:%s \\ n”,

lpqscBuf->lpLoadOrderGroup);

if (lpqscBuf->dwTagId != 0)

printf(" Tag ID: %d\n", lpqscBuf->dwTagId);

if (lpqscBuf->lpDependencies != NULL)

printf(" Dependencies: %s\n", lpqscBuf->lpDependencies);

if (lpqscBuf->lpServiceStartName != NULL)

printf(“起始名称:%s \\ n”,

lpqscBuf->lpServiceStartName);

LocalFree(lpqscBuf);

}