stop - Nuevo servicio de Windows instalado, no se inicia: "Error del sistema 2... el sistema no puede encontrar el archivo especificado"
servicecontroller c# (3)
Experimenté con algunos servicios de prueba y descubrí que no era la longitud de ninguna propiedad lo que causó mi problema ("Error del sistema 2 ... el sistema no puede encontrar el archivo especificado") para empezar. Mi instalador de servicios integrado utiliza tres propiedades: ServiceName, ServiceTitle, ServiceDescription. Al realizar la instalación, encontré que escribe la ruta de servicio completa en el registro, pero no solo toma el nombre exe (ensamblado) real, sino que usa la propiedad ServiceName para construir la ruta. Mi problema fue que el Nombre de servicio y el nombre del conjunto no coincidían, por lo tanto, el archivo no se encontró. Utilicé una consulta de registro de PowerShell para exponer la ruta y finalmente noté el desajuste desde allí. Cuando noté el problema por primera vez, no noté que cuando acorté el nombre del servicio, sea que utilicé el nombre del ensamblado sin el archivo .exe y eso es lo que realmente lo solucionó, no simplemente acortándolo.
He instalado varios otros servicios personalizados de Windows .Net con éxito. Una nueva que había escrito recientemente era muy similar a las otras y, aunque se instaló sin error, al iniciarla con el controlador de servicio no se pudo iniciar con el cuadro de diálogo de error: Error del sistema 2 ... el sistema no puede encontrar el archivo especificado.
Después del tiempo y la consternación, lo único en lo que pude pensar que era significativamente diferente acerca de este servicio era que la ruta y el nombre del ejecutable eran al menos 10 caracteres más largos que cualquiera de mis otros servicios. Al acortar tanto la ruta como el nombre .exe y volver a instalar, el servicio funcionó bien: ¡no hay error! Solo puedo asumir que mi ruta o servicio anterior o nombre .exe fue demasiado largo.
Además, sería pertinente mencionar que había utilizado un código de "controlador de servicio" prestado incorporado a mi exe para manejar la instalación / desinstalación del servicio al controlador de servicio a través de llamadas API de win. Podría haber un límite de caracteres oculto dentro de ese módulo de controlador de servicio.
No pude encontrar ningún documento relacionado con Windows para confirmar si hay un límite de caracteres vinculados al sistema a una ruta o nombre de servicio que había excedido. Cuando el tiempo lo permita, indagaré en el conductor del servicio y veré si ese es el problema. Mientras tanto, doy la bienvenida a cualquier idea.
Mi problema fue que, al crear el comando Servicio con Powershell, se agregaron en el registro las partes como: <C:/Path/To/Service/Service.exe>
.
Replacing < and > with " fixed it for me.
Tuve un problema similar con un servicio, donde estaba recibiendo el mismo error.
Fui a:
HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services / YourServiceName / ImagePath
Mi ''ImagePath'' se configuró en una unidad virtual llamada "W: /" que existe en "C: /".
Reemplacé esta ruta con la ubicación real del archivo en la unidad C: / y luego el servicio se inició con éxito