2010-12-15 17 views
15

Al instalar un servicio de Windows, ¿hay alguna forma de que el usuario pueda elegir entre una cuenta de usuario específica y una cuenta de computadora, como LocalSystem? Veo cómo hacerlo en tiempo de compilación a través de las propiedades del instalador de servicios, pero no durante la instalación.Servicio de Windows Elija Usuario o Cuenta del sistema en la Instalación

+2

¿con qué estás instalando? ¿MSI? ¿Línea de comando? –

+0

Probablemente usaré un instalador personalizado e invocar installutil. He visto casos en los que esto se hace, pero no estoy seguro de cómo funciona. – AdamC

Respuesta

27

@Doobi, @Eric, en mi experiencia (Win7Home de 64 bits, VS2010Express, no en un dominio)

processInstaller.Account = ServiceAccount.LocalService; 
processInstaller.Username = null; 
processInstaller.Password = null; 

instalará el servicio como LocalService sin una solicitud de contraseña.

para instalar el servicio como una cuenta de usuario local (y proporcionar una solicitud de contraseña para que el usuario pueda suministrar las credenciales) tuve que usar:

this.serviceProcessInstaller.Account =System.ServiceProcess.ServiceAccount.User; 
this.serviceProcessInstaller.Password = null; 
this.serviceProcessInstaller.Username = null; 

El paso importante que tenía que tomar para obtener el El servicio instalado es para poner el nombre de la computadora en el cuadro de diálogo de credenciales, es decir, MYPC\dave en lugar de dave. Me sorprendió que tuviera que hacer esto, ya que no está en un dominio. He agregado este comentario ya que no he visto más publicaciones sobre esta mención que tengan que incluir el nombre de usuario en el nombre de la PC.

+2

Gracias al nombre de la computadora \ username sugerencia solucionado mi problema – Martin

+0

nombre de dominio delante de nombre de usuario también solucionó el problema para mí. ¡Gracias! –

6

Sí, está en el instalador del proceso. Creo que en los frameworks más nuevos es una propiedad visible si seleccionas el instalador del proceso en la superficie de diseño. La última vez que lo hice (.NET 2.0) hay que añadir algo similar a esto en el fichero * .designer.cs:

processInstaller.Account = ServiceAccount.LocalService; 
      processInstaller.Username = null; 
      processInstaller.Password = null; 
+0

Entonces, ¿cómo esto "permite al usuario instalar elegir entre una cuenta de usuario específica y una cuenta de computadora, como LocalSystem" –

+0

Porque si lo configura en un "Usuario de Cuenta de Servicio" y no especifica las credenciales, solicita al usuario credenciales cuando instalas – Doobi

+1

+1 Eso es genial. –

2

Agregando a las respuestas anteriores, no se olvide de agregar el nombre del equipo a nombre de usuario al ingresar el campo "Nombre de usuario" de la solicitud de contraseña. De lo contrario, el servicio no aceptará las credenciales, aunque si das el nombre de usuario correcto y pwd. Seguirá en el indicador emergente para ingresar credenciales. Me tomó un día darme cuenta de esto. ¡Gracias a Badgerspot!

Cuestiones relacionadas