Saltar al contenido

Al crear un servicio con sc.exe, ¿cómo pasar los parámetros de contexto?

Solución:

sc create <servicename> binpath= "<pathtobinaryexecutable>" [option1] [option2] [optionN]

El truco consiste en dejar un espacio después de = en su declaración de creación, y también usar “” para cualquier cosa que contenga caracteres especiales o espacios.

Es aconsejable especificar un Nombre para mostrar para el servicio, así como establecer la configuración de inicio en automático para que se inicie automáticamente. Puede hacer esto especificando DisplayName= yourdisplayname y start= auto en su declaración de creación.

Aquí hay un ejemplo:

C:Documents and SettingsAdministrator> sc create asperacentral 
binPath= "C:Program FilesAsperaEnterprise ServerbinDebugasperacentral.exe" 
DisplayName= "Aspera Central" 
start= auto

Si esto funcionó, debería ver:

[SC] CreateService SUCCESS

ACTUALIZACIÓN 1

http://support.microsoft.com/kb/251192

Los parámetros para los servicios creados tienen algunos problemas de formato peculiares, en particular si el comando incluye espacios o comillas:

Si quieres entrar parámetros de línea de comando para el servicio, debe adjuntar el línea de comando completa entre comillas. (Y siempre deja un espacio después binPath= y antes de la primera cita, como señaló mrswadge)

Entonces, para crear un servicio para el comando PATHCOMMAND.EXE --param1=xyz
usaría el siguiente parámetro binPath:

binPath= "PATHCOMMAND.EXE --param1=xyz"
        ^^                             ^
        ||                             |
  space    quote                     quote

Si el sendero al ejecutable contiene espacios, tienes que adjuntar el sendero entre comillas.

Entonces, para un comando que tiene ambas cosas parámetros y un camino con espacios, necesitas citas anidadas. Tienes que escapar de las comillas internas con barras invertidas. ". Lo mismo se aplica si los propios parámetros contienen comillas, también deberá escapar de ellas.

A pesar de usar barras invertidas como caracteres de escape, no tiene que escapar de las barras invertidas regulares que se encuentran en la ruta. Esto es contrario a cómo normalmente usa barras invertidas como caracteres de escape.

Entonces, para un comando como
"PATH WITH SPACES COMMAND.EXE" --param-with-quotes="a b c" --param2:

binPath= ""PATH WITH SPACES COMMAND.EXE" --param-with-quotes="a b c" --param2"
         ^ ^                 ^           ^                      ^       ^         ^
         | |                 |           |                      |       |         | 
 opening     escaped      regular     escaped                    escaped       closing
   quote     quote       backslash    closing                    quotes          quote
     for     for            in         quote                      for              for
   whole     path          path       for path                  parameter        whole
 command                                                                       command

Aquí hay un ejemplo concreto de la documentación de SVNserve, que muestra todos los casos especiales:

sc create svnserve 
   binpath= ""C:Program FilesCollabNet Subversion Serversvnserve.exe" --service -r "C:my repositories"  "
   displayname= "Subversion Server" depend= Tcpip start= auto 

(los saltos de línea se agregan para facilitar la lectura, no los incluya)

Esto agregaría un nuevo servicio con la línea de comando "C:Program FilesCollabNet Subversion Serversvnserve.exe" --service -r "C:my repositories".

Entonces en resumen

  • espacio después de cada parámetro sc: binpath=_, displayname=_ y depend=_
  • cada parámetro sc que contiene espacios debe estar entre comillas
  • todas las comillas adicionales dentro del binpath se escapan con barras invertidas: "
  • todas las barras diagonales invertidas dentro del binpath no se escapan

sc create "YOURSERVICENAME" binpath= ""C:Program Files (x86)Microsoft SQL ServerMSSQL11MSSQLBinnsqlservr.exe" -sOPTIONALSWITCH" start= auto 

Vea aquí: Modificación de la “Ruta al ejecutable” de un servicio de Windows

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *