我已经把一个程序A写成nt服务形式(自启动形式)了,在服务列表中也是显示自动方式,但是第一次都需要手工启动,如何在程序中实现服务程序A的第一次自启动.另外,我有程序B需要控制服务程序A的启动与停止,如何实现这个过程?望各位能够给个解决方法或者建议,谢谢...

解决方案 »

  1.   

    最好将源码贴出来MSN: [email protected]
      

  2.   

    void __fastcall CServerCallDlg::StartBtnClick()
    {
    m_scm=OpenSCManager(
      NULL,
      NULL,
      SC_MANAGER_CONNECT//允许连接到service control manager database 
      );
    if (m_scm!=NULL)
    {
    m_svc=OpenService(
     m_scm,
     "AccessControlService",
     SERVICE_START //Enables calling of the StartService function to start the service.          
     );
    if (m_svc!=NULL)
    {
    //开始Service
    StartService (  m_svc,   //为指向Service的句柄,由OpenService返回
                0,       //为启动服务所需的参数的个数
                NULL     //为 启 动 服务所需的参数
             );
        CloseServiceHandle(m_svc);
        CloseServiceHandle(m_scm);
    GetDlgItem(IDB_STR)->EnableWindow(FALSE);  
    GetDlgItem(IDB_STOP)->EnableWindow(TRUE);  
    MessageBox("START SERVICE SUCCEEDS !");

    }
    else
    {
    DWORD  error = GetLastError();
    CString errcode ;
    errcode.Format("启动服务错误,错误的类型识:%d",(int)error);
    AfxMessageBox(errcode);
    }
    }
    }
      

  3.   

    感谢2位的关注,尤其是 yanw0212(我也要成为星星......) ,依你的代码解决了问题谢谢。。