我在VC下做了一个后台服务的程序,生成一个EXE文件,请问怎样把EXE添加到NT 的系统服务中进行管理呢,谢谢!

解决方案 »

  1.   

    MSDN  Creating a Simple Win32 Service in C++ 有说明
      

  2.   

    TCHAR szPath[512]="c:\\service\\ReplServer.exe";
        schSCManager = OpenSCManager(
                            NULL,                   // machine (NULL == local)
                            NULL,                   // database (NULL == default)
                            SC_MANAGER_ALL_ACCESS   // access required
                            );
        if ( schSCManager )
    {
    schService = OpenService( 
            schSCManager,          // SCM database 
            TEXT(SZSERVICENAME),    // service name
            SERVICE_ALL_ACCESS); 
    Sleep(3000);
    if (schService == NULL) 
            {
    ErrMsg="";
    ErrMsg=ErrMsg+"OpenService failed -"+GetLastErrorText(szErr, 256);
                ::AfxMessageBox(ErrMsg);
            }
    if (!QueryServiceStatus( 
                schService,   // handle to service 
                &ssStatus) )  // address of status information
               ::AfxMessageBox(GetLastErrorText(szErr, 256));  
    if (ssStatus.dwCurrentState != SERVICE_RUNNING)
    {
    m_TrayIcon.SetIcon(IDI_STOP);
    if(!StartService(schService,0,NULL))
    ::AfxMessageBox(GetLastErrorText(szErr, 256)); 
    else
    m_TrayIcon.SetIcon(IDI_START);
    }
    else
    m_TrayIcon.SetIcon(IDI_START);

    CloseServiceHandle(schService);
    CloseServiceHandle(schSCManager);
     }
      

  3.   

    如果是用atl 模板只要启动程序时加上参数 -service 就安装上了, 如果用其他方法制作的就看自己怎样定义了
      

  4.   

    mfkzj() 说得对,用控制台!!自己添加,具体函数说明可以看看MSDN下的函数介绍!