2009-11-09 8 views

Respuesta

84

¿Tienes que usar InstallUtil? Estos son los comandos para hacer lo que desee mediante sc:

sc create MyService binPath= "MyService.exe" DisplayName= "MyService" 
sc description MyService "My description" 

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

+0

Esto parece exactamente lo que quiero, pero no puedo hacerlo funcionar. Sigo recibiendo un mensaje de "uso". – Nathan

+30

Mi problema es que aparentemente * debe * haber un espacio entre el signo igual y el valor de binPath, p. sc create ahSchedulerService binPath = "MyService.exe", no sc create ahSchedulerService binPath = "MyService.exe". – Nathan

+0

Ah, me olvidé de eso. Perdón por darte un mal ejemplo. –

1

Intente instalar su servicio con sc.exe. Una búsqueda rápida arrojará mucha documentación. Con esa herramienta es fácil modificar los servicios existentes y agregar nuevos, incluidos los nombres.

Editar: Instalo mis servicios .NET con esta herramienta.

22

No es cierto que InstallUtil no permite configurar el nombre del servicio. Lo hago todo el tiempo como este

InstallUtil.exe /servicename="<service name>" "<path to service exe>" 
+1

no funciona para mí incluso con cmd con privilegios de administrador. –

+4

si ya tiene un servicio con el mismo nombre que exe, dará el error 'System.ComponentModel.Win32Exception: El servicio especificado ya existe'. Estaba intentando instalar 2 instancias del mismo servicio y nombrarlas de manera diferente. Use los métodos de creación de sc que figuran en las respuestas siguientes – PUG

+3

No funciona. Da un error de que mi servicio ya existe. – Loophole

3

enter image description here

Esto es exactamente trabajó para mí!

Espero que alguien pueda usar esto.

20
  1. Agregar proyecto de instalación en el servicio
  2. método Add para obtener el nombre CustomService

    private void RetrieveServiceName() 
    { 
        var serviceName = Context.Parameters["servicename"]; 
        if (!string.IsNullOrEmpty(serviceName)) 
        { 
         this.SomeService.ServiceName = serviceName; 
         this.SomeService.DisplayName = serviceName; 
        } 
    } 
    
  3. llamada en instalar y desinstalar

    public override void Install(System.Collections.IDictionary stateSaver) 
    { 
        RetrieveServiceName(); 
        base.Install(stateSaver); 
    } 
    
    
    public override void Uninstall(System.Collections.IDictionary savedState) 
    
    { 
        RetrieveServiceName(); 
        base.Uninstall(savedState); 
    } 
    
  4. installutil /servicename=”My Service [SysTest]” d:\pathToMyService\Service.exe

Source

+0

MUY útil - gracias. – Mani5556

+0

Esto fue muy útil, tuve que recompilar mi ejecutable de servicio para que funcione una vez que agregué este código, eso no fue un problema para mí. –

Cuestiones relacionadas