007
26.05.2005, 15:27 Uhr
GuenniAtWork
|
Hi,
Ich habe es jetz soweit geschaft dienste (genauer einer) zu starten und zu deaktivieren. Nur Ihn zu stoppen bekomme ich nicht hin.
C++: |
int RunService(TService tService) { LPSERVICE_STATUS lpscStatus = NULL; SC_HANDLE schServiceManager = OpenSCManager(NULL,SERVICES_ACTIVE_DATABASE,SC_MANAGER_ALL_ACCESS); SC_HANDLE schService = OpenService(schServiceManager,tService.sServiceName,SC_MANAGER_ALL_ACCESS); LPQUERY_SERVICE_CONFIG lpServiceCfg = NULL; DWORD dwNeededBuffer = 0; DWORD dwServiceError = 0; if(schService) { switch(tService.iAction) { case 0: //Starten StartService(schService,0,NULL); dwServiceError = GetLastError(); break; case 1: //Stopen ControlService(schService,SERVICE_CONTROL_STOP,lpscStatus); //Hier ist der Wurm drin!!! dwServiceError = GetLastError(); break; case 2: //Deaktivieren ControlService(schService,SERVICE_CONTROL_STOP,lpscStatus); //Erst Stoppen. ChangeServiceConfig( schService, SERVICE_NO_CHANGE, SERVICE_DISABLED,//Deaktivieren SERVICE_NO_CHANGE, NULL, NULL, NULL, NULL, NULL, NULL, NULL); break; case 3: //Löschen DeleteService(schService); break; } } CloseServiceHandle(schServiceManager); CloseServiceHandle(schService); return (int)GetLastError(); }
|
Als Rückgabewert von StopService erhalte ich 487 (= ERROR_INVALID_ADDRESS). Warum Nur? In der MSDN ahb ich noch ein anderes Beispiel gefunden, welches aber nicht funktioniert ( Copy & Pase). -- Gruß GuenniAtWork |