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_CONNECTschon 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