前面blog说过windows(7及以后)中,服务和进程位于不同的session,如何查询服务状态,这里贴出代码
TCHAR szSvcName[] = TEXT("SSIT_Client_Service");
SC_HANDLE schSCManager;
SC_HANDLE schService;
SERVICE_STATUS_PROCESS ssStatus;
DWORD dwOldCheckPoint;
DWORD dwStartTickCount;
DWORD dwWaitTime;
DWORD dwBytesNeeded;
// Get a handle to the SCM database.
schSCManager = OpenSCManager(
NULL, // local computer
NULL, // ServicesActive database
SC_MANAGER_ALL_ACCESS); // full access rights
if (NULL == schSCManager)
{
printf("OpenSCManager failed (%d)\n", GetLastError());
}
// Get a handle to the service.
schService = OpenService(
schSCManager, // SCM database
szSvcName, // name of service
SERVICE_QUERY_STATUS |
SERVICE_ENUMERATE_DEPENDENTS
); // full access
if (schService == NULL)
{
CloseServiceHandle(schSCManager);
}
else
{