rclsilver | Alors voila quelques heures que je me bat avec CreateService().
J'ai un programme qui doit s'installer en tant que Service Windows. J'ai mis ce code là : Code :
- SC_HANDLE hSCMan;
- SC_HANDLE hService;
- char buffer[MAX_PATH+3];
- hSCMan = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
- if ( hSCMan == NULL )
- {
- alog("Erreur lors de l'ouverture du Serivces Manager" );
- return;
- }
- sprintf(buffer, "\"%s\"", filename);
- hService = CreateService(
- hSCMan,
- "bot-control",
- "Botware Security System",
- GENERIC_EXECUTE | GENERIC_READ,
- SERVICE_WIN32_OWN_PROCESS,
- SERVICE_AUTO_START,
- SERVICE_ERROR_IGNORE,
- buffer,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL
- );
- if ( hService == NULL )
- {
- if ( GetLastError() == 1073 )
- {
- if ( !(hService = OpenService(hSCMan, "bot-control", SC_MANAGER_ALL_ACCESS)) )
- {
- alog("Erreur lors de la suppression du service (%d)", GetLastError());
- return;
- }
- if ( DeleteService(hService) )
- {
- CloseServiceHandle(hService);
- CloseServiceHandle(hSCMan);
- alog("Service supprimé, veuillez relancer l'installation" );
- return;
- }
- else
- alog("Erreur lors de la suppression du service (%d)", GetLastError());
- }
- alog("Erreur lors de la création du service (%d)", GetLastError());
- return;
- }
- alog("Service créé avec succès, tapez net start bot-control" );
|
pour information, buffer c'est un char [MAX_PATH+3] qui contient l'argument 0 de main() entouré de " (pour proteger les espaces).
Le service est bien créé, mais impossible de le lancer, j'obtient l'erreur ci dessous par exemple : [img]www.rclsilver.net/~thomas/ss_srv.jpg[/img]
Je voudrais savoir ou serait mon probleme.
PS: C'est une application console pour le moment, mais ça va etre une Win 32 par la suite..
Merci d'avance |