hilfe beim proggen von einem service



  • könnt ihr mir bitte helfen ich bin dabei ein service zumachen aber finde den fehler net 😞 😞

    #include <windows.h>
    #include <winuser.h>
    #include <stdio.h>
    #include <time.h>
    
    SERVICE_STATUS_HANDLE hStatus;
    SERVICE_STATUS status;
    
    char Service[]="MyService";
    
    void WINAPI ServiceCtrlHandler( DWORD control )
    {
    
        switch( control )
        {
        case SERVICE_CONTROL_SHUTDOWN:
    
        case SERVICE_CONTROL_STOP:
            // do shutdown stuff here
    
            status.dwCurrentState = SERVICE_STOPPED;
            status.dwWin32ExitCode = 0;
            status.dwCheckPoint = 0;
            status.dwWaitHint = 0;
            break;
        case SERVICE_CONTROL_INTERROGATE:
            // just set the current state to whatever it is...
            break;
        }
    
        ::SetServiceStatus( hStatus, &status );
    }
    
    void WINAPI ServiceStart( DWORD numArgs, char **args )
    {
        // we have to initialize the service-specific stuff
        memset( &status, 0, sizeof(SERVICE_STATUS) );
        status.dwServiceType = SERVICE_WIN32;
        status.dwCurrentState = SERVICE_START_PENDING;
        status.dwControlsAccepted = SERVICE_ACCEPT_STOP;
    
        hStatus = ::RegisterServiceCtrlHandler( "MyService", &ServiceCtrlHandler );
    
        // more initialization stuff here
    
        ::SetServiceStatus( hStatus, &status );
    }
    
    int create_theservice(char to[200])
    {
        SC_HANDLE handle = ::OpenSCManager( NULL, NULL, SC_MANAGER_ALL_ACCESS );
    
    	if( handle == NULL )
    	{
    		MessageBox(NULL,"Could not connect to SCM dataase",0,0 );
    
    	}
    
        SC_HANDLE service = ::CreateService(
        handle,
        Service,
        Service,
        GENERIC_READ | GENERIC_EXECUTE,
        SERVICE_WIN32_OWN_PROCESS,
        SERVICE_AUTO_START,
        SERVICE_ERROR_IGNORE,
        to,
        NULL,
        NULL,
        NULL,
        NULL,
        NULL
        );
        if( service == NULL )
    	{
    		if( ::GetLastError() != ERROR_SERVICE_EXISTS )
    			     MessageBox(NULL,"fehler beim machen vom service",0,0);  
    
        }
    }
    int start()
    {
          SERVICE_TABLE_ENTRY dispatchTable[] =
          {
            { Service, &ServiceStart },
            { NULL, NULL }
          };
        StartServiceCtrlDispatcher( dispatchTable );
    
    }
    int make_service()
    {         
        DWORD  dw,test;
        char  to[200]="C:\\myservice.exe";
        create_theservice(to);
        start();
    }
    

    ach ja da gibts immern fehler:
    ERROR_FAILED_SERVICE_CONTROLLER_CONNECT

    schon mal danke im voraus



  • kann mir niemand helfen???



  • gogoJohn schrieb:

    ach ja da gibts immern fehler:

    Wo ist 'da'?



  • beim starten

    int start()
    {
          SERVICE_TABLE_ENTRY dispatchTable[] =
          {
            { Service, &ServiceStart },
            { NULL, NULL }
          };
        //des returnd immer ERROR_FAILED_SERVICE_CONTROLLER_CONNECT 
    
        StartServiceCtrlDispatcher( dispatchTable );
    
    }
    


  • Aha. Dann mach erstmal das '&' vor ServiceStart in der Initialisierung Deiner Service-Table weg. Und dann schliesse die Handles in create_theservice wieder (2x CloseServiceHandle).

    Startest Du die Exe eigentlich selbst, oder machst Du das aus dem MMC Snap-In 'Dienste' heraus?



  • nee gibt immer nochn fehler

    ich wills so starten von der exe und beim autostart müssts ja automatissch geöfnet werden



  • gogoJohn schrieb:

    ich wills so starten von der exe und beim autostart müssts ja automatissch geöfnet werden

    ??? Offensichtlich spreche ich Deine Sprache nicht und kann nur ahnen, was gemeint ist. Tipp: Starte den Service aus der MMC.



  • ja des geht nich da kommt dann immer

    Fehler 1053 Der Dienst antwortet nicht rechtzeitig auf die Start- oder Steuerungsanfoderung



  • hilft des was????



  • weiß niemand wieso des nich geht 😞 😞



  • hi,
    schau mal da:
    http://www.gamedev.net/reference/articles/article1899.asp
    vielleicht hilft dir das etwas weiter....

    cu surf.



  • des hab fast 1 zu 1 kopiert 😞 😞

    aber trozdem danke



  • hast du auch eine main-Funktion (dort steht in den SDK Beispielen, das, was bei dir in start steht)
    Ansonsten schau dich mal im SDK unter Services etwas um 🙂


Anmelden zum Antworten