Necesito consultar a un servicio de Windows la ruta a su ejecutable a través del símbolo del sistema. Creo que la forma en que haría esto es: sc qc myServiceNamepero cuando hago eso, aparece el siguiente error:
[SC] QueryServiceConfig FALLÓ 122:
El área de datos pasada a una llamada del sistema es demasiado pequeña.
[SC] GetServiceConfig necesita 1094 bytes
Creo que esto significa que el comando sc está enviando una estructura de datos a otra biblioteca que es demasiado pequeña para los datos que deben devolverse. En lugar de que SC vuelva a intentarlo con una estructura de datos más grande (1094 bytes), bombardea y me da este feo mensaje de error. Gracias Micro $ oft.
Entonces, ¿hay alguna manera de evitar este error? Solo necesito la ruta al ejecutable, pero la analizaré de otro texto si es necesario.

2^13 = 8192es el valor máximo para el tamaño del búfer.sc queryex type= service state= all | find /i "myServiceNameenumera todos los servicios pero desafortunadamente no hay ruta.Encontré una solución viable:
reg query "HKLM\System\CurrentControlSet\Services\<serviceName>" /v "ImagePath"Por supuesto, esto necesita algún análisis, pero me da la ruta completa que proporciona el cuadro de diálogo services.msc.
fuente
Puede hacer esto en PowerShell con una consulta WMI como esta:
Esto le dará la ruta completa, incluidas las opciones que se muestran en services.msc. Simplemente reemplace
winrmen mi ejemplo con cualquier servicio que desee buscar.La consulta anterior para
winrmdebería salirC:\Windows\System32\svchost.exe -k NetworkServicefuente
Pruébelo con la
wmicutilidad de línea de comandos. Aquí hay un ejemplo de un servicio en mi máquina llamadoCrashPlanService.Básicamente,
wmic service <<YourService>> get PathName.fuente
wmic(Estoy en Windows 7 SP1)?"")[0].replace("" "," ")wmic serviceFunciona genial. Enumera todos los servicios con sus rutas.