想用这个函数暂停某windows服务,但是运行没反映,hSCM的值为NULL
高手指教一下是哪的问题?         CString serviceName;
serviceName = m_service.GetItemText(sel, 0);//从列表中读取服务名称,
                                                      //我调试过,这步没有出错
SC_HANDLE hSCM; BOOL success;
//SERVICE_STATUS svcStatus; SC_HANDLE scman = ::OpenSCManager  
                  (NULL,NULL,SC_MANAGER_ALL_ACCESS);
hSCM=OpenService(scman,serviceName,SERVICE_ALL_ACCESS); success=ControlService(hSCM,SERVICE_CONTROL_PAUSE,NULL);//暂停服务

解决方案 »

  1.   

    另外你也可以用GetLastError来取得错误信息,能够判断出一些常见的错误,例如权限不足等
      

  2.   

    如果一个服务程序不响应SERVICE_CONTROL_STOP消息,那么它就停不下来。
      

  3.   

    hSCM的值为NULL主要有两种可能性
    1.serviceName名错误(注意不要误用显示名)
    2.要求的权限过高.如仅想执行停止服务的操作,可这样尝试,如果失败注意dwLastError值
    hSCM=OpenService(
              scman,
              serviceName,
              SERVICE_STOP | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS );if(hSCM == NULL)

      DWORD dwLastError = GetLastError();
    }