代码如下:
SERVICE_TABLE_ENTRY   DispatchTable[] = 

{ TEXT("MyService"), MyServiceMain }, 
{ NULL,                 NULL }
};void main(int argc, char *argv[] )
{
    if (! StartServiceCtrlDispatcher( DispatchTable ) )
SvcDebugOut(" [SEVERTEST] StartServiceCtrlDispatcher error = %d\n", GetLastError()); 
else
printf("OK");
}GetLastError返回1063,由于我是日文操作系统所以不知道是什么错误信息,请高手指点!

解决方案 »

  1.   

    The service process could not connect to the service controller.
      

  2.   

    用Depends看一下,是不是找不到必须的dll.
      

  3.   

    to dongfa(阿东)
      我实在不太明白什么原因,能用MSN或EMAIL交流一下吗?
      MSN:[email protected]
      Email:[email protected]
      

  4.   

    服务注册了没有?(用CreateService)
      

  5.   

    注册了:
    实际的main()代码如下!
    void main(int argc, char *argv[] )
    {
       if (argc > 2)
       UnInstall("MyService");   if (argc > 1) 
       Install(argv[0], "MyService", "Caney");    if (! StartServiceCtrlDispatcher( DispatchTable ) )
    SvcDebugOut(" [MSEVER] StartServiceCtrlDispatcher error = %d\n", GetLastError()); 
    }
    ////////////////////////////////////////////////////////////
    VOID Install(char *path, char *internalName, char *descriptiveName) {  
    SC_HANDLE schSCManager;
    SC_HANDLE schService;
    LPCTSTR lpszDisplayName; 
    LPCTSTR lpszBinaryPathName; schSCManager = OpenSCManager( NULL, NULL, SC_MANAGER_CREATE_SERVICE); 
     
    if (schSCManager == NULL) 
    printf("ERROR on OpenSCManager\n"); lpszDisplayName = TEXT(descriptiveName);
    lpszBinaryPathName = path;
     
    schService = CreateService( 
           schSCManager,              /* SCManager database      */ 
           TEXT(internalName),        /* name of service         */ 
            lpszDisplayName,          /* service name to display */ 
           SERVICE_ALL_ACCESS,        /* desired access          */ 
           SERVICE_WIN32_OWN_PROCESS, /* service type            */ 
           SERVICE_DEMAND_START,      /* start type              */ 
           SERVICE_ERROR_NORMAL,      /* error control type      */ 
           lpszBinaryPathName,        /* service's binary        */ 
           NULL,                      /* no load ordering group  */ 
           NULL,                      /* no tag identifier       */ 
           NULL,                      /* no dependencies         */ 
           NULL,                      /* LocalSystem account     */ 
           NULL);                     /* no password             */ 
     
    if (schService == NULL) 
    printf("ERROR on CreateService\n");
    else 
    printf("Service Installed\n"); 
     
    CloseServiceHandle(schService); 
     
    exit(1);
    } 其中INSTALL()是执行成功的,但StartServiceCtrlDispatcher()始终不成功,返回1063的错误
      

  6.   

    install()成功后,在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services有我建立的服务子键。控制面板中也显示服务,只是StartServiceCtrlDispatcher始终失败!
    郁闷,求教!!!!!!!!!!
      

  7.   

    这样:main()
    {
    .....
    SERVICE_TABLE_ENTRY DispatchTable[]={{"Service1",ServiceMain},{NULL,NULL}};  
    StartServiceCtrlDispatcher(DispatchTable); 
    }void WINAPI ServiceMain(DWORD argc, LPTSTR *argv)
    {    DWORD status; 
        DWORD specificError;     m_ServiceStatus.dwServiceType        = SERVICE_WIN32; 
        m_ServiceStatus.dwCurrentState       = SERVICE_START_PENDING; 
        m_ServiceStatus.dwControlsAccepted   = SERVICE_ACCEPT_STOP; 
        m_ServiceStatus.dwWin32ExitCode      = 0; 
        m_ServiceStatus.dwServiceSpecificExitCode = 0; 
        m_ServiceStatus.dwCheckPoint         = 0; 
        m_ServiceStatus.dwWaitHint           = 0; 
     
        m_ServiceStatusHandle = RegisterServiceCtrlHandler("Service1",ServiceCtrlHandler);  
        if (m_ServiceStatusHandle == (SERVICE_STATUS_HANDLE)0) 
        { 
            return; 
        }         m_ServiceStatus.dwCurrentState       = SERVICE_RUNNING; 
        m_ServiceStatus.dwCheckPoint         = 0; 
        m_ServiceStatus.dwWaitHint           = 0;  
        if (!SetServiceStatus (m_ServiceStatusHandle, &m_ServiceStatus)) 
        {     } 

    bRunning=true;
    while(bRunning)
    {
    Sleep(3000);
    //Place Your Code for processing here....
    }    return; 
    }
      

  8.   

    我贴
    ////////////////////////////////////////////////////////////////////// 
    //
    // This routine gets used to start your service
    //
    VOID WINAPI MyServiceMain( DWORD dwArgc, LPTSTR *lpszArgv )
    {
    DWORD   status; 
        DWORD   specificError; 
     
        MyServiceStatus.dwServiceType        = SERVICE_WIN32; 
        MyServiceStatus.dwCurrentState       = SERVICE_START_PENDING; 
        MyServiceStatus.dwControlsAccepted   = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_PAUSE_CONTINUE; 
        MyServiceStatus.dwWin32ExitCode      = 0; 
        MyServiceStatus.dwServiceSpecificExitCode = 0; 
        MyServiceStatus.dwCheckPoint         = 0; 
        MyServiceStatus.dwWaitHint           = 0; 
     
        MyServiceStatusHandle = RegisterServiceCtrlHandler( TEXT("MyService"), MyServiceHandler); 
     
        if (MyServiceStatusHandle == (SERVICE_STATUS_HANDLE)0) { 
            SvcDebugOut(" [MSEVER] RegisterServiceCtrlHandler failed %d\n", GetLastError()); 
            return; 
        } 
     
        // Initialization code goes here. 
        status = 0; 
     
        // Handle error condition 
        if (status != NO_ERROR) { 
            MyServiceStatus.dwCurrentState       = SERVICE_STOPPED; 
            MyServiceStatus.dwCheckPoint         = 0; 
            MyServiceStatus.dwWaitHint           = 0; 
            MyServiceStatus.dwWin32ExitCode      = status; 
            MyServiceStatus.dwServiceSpecificExitCode = specificError; 
     
            SetServiceStatus (MyServiceStatusHandle, &MyServiceStatus); 
            return; 
        } 
     
        // Initialization complete - report running status 
        MyServiceStatus.dwCurrentState       = SERVICE_RUNNING; 
        MyServiceStatus.dwCheckPoint         = 0; 
        MyServiceStatus.dwWaitHint           = 0; 
     
        if (!SetServiceStatus (MyServiceStatusHandle, &MyServiceStatus)) { 
            status = GetLastError(); 
            SvcDebugOut(" [MSEVER] SetServiceStatus error %ld\n",status); 
        } 
     
        // This is where the service does its work.     // 
    StartServiceB();
        SvcDebugOut(" [MSEVER] Returning the Main Thread \n",0); 
     
        return; 
    }
      

  9.   

    黑豆兄帖出来的和我一样啊,但问题是StartServiceCtrlDispatcher失败SCM怎么会去掉用MyServiceMain呢?
    我在MyServiceMain加了断点,但根本不运行进来!