Basicamente lo que hago es lo siguiente. Abro la base de datos con todos los permisos mediante OpenSCManager() y mas adelante creo el servicio mediante CreateService() como viene más abajo:
Segun la MSDN de microsoft (o mejor dicho, segun lo que yo he entendido ) es así como debe crearse un servicio. De hecho como tal se crea, si ejecuto "services.msc" lo veo ahí claramente y en el registro tambien en HKLM\System\CurrentControlSet\Services\<miServicio> con sus subclaves y sus valores iguales que otras claves de otros servicios similares. Pero si en el gestor de servicio pincho en iniciar, me salta el p*** error 1053.
He probado a crear el servicio con la cuenta del administrador y su pass, como LocalService y entonces error 1053
He cambiado a Windows Server 2003 SP1 y error 1053
He probado incluso a cambiar el valor "ImagePath" de la clave de un servicio cualquiera apuntando a mi programa y esta vez error 1053, que majo... y esto mismo con otros programas diferentes y ...1053
Así que he deducido de que me falta llamar a una api desde mi programa para validar el servicio, pero no se como hacerlo si es que es por ahí por donde van los tiros...
Tambien se que los servicios modifican el registro al iniciarse en la ruta HKLM\System\CurrentControlSet\Control\DeviceClasses\, cosa que el mio no hace...
No se si me he enrrollado demasiado con este chorizo pero espero que esto sirva para que alguien me pueda echar un cable.
Un saldo y gracias
Código [Seleccionar]
schSCManager = OpenSCManager(
NULL, // Maquina local
NULL, // ServicesActive database
SC_MANAGER_ALL_ACCESS); // Todos los permisos
schServicio = CreateService(
schSCManager, // Base de datos SCManager
TEXT(nombreServicio.c_str()), // Nombre del servicio
TEXT(nomServicioAMostrar.c_str()), // service name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
tipoServicio, // Mirar el link de Info de mas arriba
0, // Control de errores: Pasamos por alto el error
("\"" + rutaEjecutable + "\"").c_str(), // path to service's binary
NULL, // no load ordering group
NULL, // no tag identifier
NULL, // no dependencies
NULL, // Cuenta LocalSystem
NULL); // Sin password
CloseServiceHandle(schServicio);
CloseServiceHandle(schSCManager);
Segun la MSDN de microsoft (o mejor dicho, segun lo que yo he entendido ) es así como debe crearse un servicio. De hecho como tal se crea, si ejecuto "services.msc" lo veo ahí claramente y en el registro tambien en HKLM\System\CurrentControlSet\Services\<miServicio> con sus subclaves y sus valores iguales que otras claves de otros servicios similares. Pero si en el gestor de servicio pincho en iniciar, me salta el p*** error 1053.
He probado a crear el servicio con la cuenta del administrador y su pass, como LocalService y entonces error 1053
He cambiado a Windows Server 2003 SP1 y error 1053
He probado incluso a cambiar el valor "ImagePath" de la clave de un servicio cualquiera apuntando a mi programa y esta vez error 1053, que majo... y esto mismo con otros programas diferentes y ...1053
Así que he deducido de que me falta llamar a una api desde mi programa para validar el servicio, pero no se como hacerlo si es que es por ahí por donde van los tiros...
Tambien se que los servicios modifican el registro al iniciarse en la ruta HKLM\System\CurrentControlSet\Control\DeviceClasses\, cosa que el mio no hace...
No se si me he enrrollado demasiado con este chorizo pero espero que esto sirva para que alguien me pueda echar un cable.
Un saldo y gracias