Pregunta

Estoy intentando instalar un servicio .NET que escribí.Según lo recomendado por MSDN, estoy usando InstallUtil.Pero me perdí cómo puedo configurar el usuario del servicio predeterminado en la línea de comandos o incluso en el servicio mismo.Ahora, cuando se ejecuta InstallUtil, mostrará un cuadro de diálogo solicitando al usuario las credenciales de un usuario.Estoy intentando integrar la instalación del servicio en una instalación más grande y necesito que la instalación del servicio permanezca en silencio.

¿Fue útil?

Solución

Creo que quizás lo haya encontrado.En el servicio en sí, el componente ServiceProcessInstaller creado automáticamente tiene una propiedad "Cuenta" que se puede configurar en "LocalService", "LocalSystem", "NetworkService" o "User".El valor predeterminado era "Usuario", lo que debe haber mostrado el mensaje.

Otros consejos

Como habrás notado, Karim, la propiedad "Cuenta" es la solución aquí.Para aquellos interesados ​​en las diferencias entre los contextos de seguridad establecidos por esta propiedad:

http://msdn.microsoft.com/en-us/library/system.serviceprocess.serviceaccount.aspx

Arriba de usar InstallUtil o SC, me gusta la idea de crear un AUTOINSTALADOR:

http://www.codeproject.com/KB/dotnet/WinSvcSelfInstaller.aspx

aunque encontré esto en la documentación de .Net 1.1:

El Clase de instalador administrado tipo es compatible con .NET Framework infraestructura y no está destinado a se puede utilizar directamente desde el código.

También tenga en cuenta el Utilidad SC.exe que no requiere la instalación de Visual Studio.Simplemente puede copiar este exe al servidor en el que desea crear el servicio o incluso ejecutarlo de forma remota.Utilizar el objeto parámetro para especificar un usuario.

Aparentemente hay una GUI para esta herramienta, pero no la he usado.

¿Se le solicita la cuenta para ejecutar el servicio o derechos para instalar el servicio?Para el segundo, instalar como administrador debería evitar que eso suceda.Para el primero, debe agregar un ServiceProcessInstaller a su instalador.

Creo que la superficie de diseño de un servicio tiene un vínculo para crear un instalador de proyectos.En ese diseñador, puede agregar un instalador de procesos de tipo System.ServiceProcess.ServiceProcessInstaller.Las propiedades de este objeto le permiten configurar la cuenta que se utilizará para el servicio.

InstallUtil tiene modificadores de línea de comando que pueden evitar los mensajes cuando se usa "Usuario" como tipo de cuenta. /username y /password se utilizan para configurar la cuenta en el momento de la instalación.

Uso:

installutil.exe /username=user /password=password yourservice.exe

Lo que quizás desee es tener un archivo de configuración donde el instalador pueda leer e instalar el servicio.

Para hacerlo, agregue un instalador de servicios a su proyecto y sobrecargue el método de instalación.En este método, configure el nombre de usuario y la contraseña:

public override void Install(IDictionary stateSaver)
{
    serviceProcessInstaller1.Username="<username>";
    serviceProcessInstaller1.Password="<password>";
    base.Install(stateSaver);
}

Si intenta establecer el nombre de usuario y la contraseña en el constructor, esos valores se sobrescribirán, así que asegúrese de anular "Instalar" para hacerlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top