DWORD GetServicePid(PSTR ServiceName)
{
SC_HANDLE ScmHandle;
SC_HANDLE SvcHandle;
SERVICE_STATUS_PROCESS ServiceStatusProcess;
DWORD cbBytesNeeded;
ScmHandle = OpenSCManagerA(NULL, NULL, SC_MANAGER_CONNECT);
if (ScmHandle)
{
SvcHandle = OpenServiceA(ScmHandle, ServiceName, SERVICE_QUERY_STATUS);
if (SvcHandle)
{
if (QueryServiceStatusEx(SvcHandle, SC_STATUS_PROCESS_INFO, (LPBYTE)&ServiceStatusProcess, sizeof(ServiceStatusProcess), &cbBytesNeeded))
{
CloseServiceHandle(SvcHandle);
CloseServiceHandle(ScmHandle);
return ServiceStatusProcess.dwProcessId;
}
CloseServiceHandle(SvcHandle);
}
CloseServiceHandle(ScmHandle);
}
return 0;
}
获得服务进程PID
由
·
发表回复