Estoy instalando un servicio de Windows usando WiX. ¿Cómo puedo hacer que el servicio se ejecute en el contexto del usuario de Windows que ejecuta el instalador?WiX ServiceInstall: configurar el servicio para que se ejecute como el usuario de Windows actual
Respuesta
Debe tener el nombre de la cuenta y la contraseña del usuario con el que desea ejecutar el servicio. Pude lograr esto agregando una IU personalizada a mi instalador solicitando un Nombre de usuario y una Contraseña, y luego usando los valores suministrados para los atributos de Cuenta y Contraseña en el elemento ServiceInsall.
Tenga en cuenta que cualquiera que sea la cuenta que se use para ejecutar el servicio deberá tener privilegiado el servicio Iniciar sesión como. Esto no se otorga a los usuarios por defecto. Pude usar el elemento User del esquema UtilExtension para agregar este priveledge al usuario. Agregar el privilegiado al usuario solo tendría éxito si el usuario que ejecuta el instalador es un administrador.
Aquí está el código que utilicé. SERVICECREDENTIALS_USERLOGIN y SERVICECREDENTIALS_PASSWORD son las propiedades que se rellenan desde la IU personalizada.
<Component Id="ServiceEXE" Guid="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">
<File Id="ServiceEXE" Name="YourService.exe" DiskId="1"
Source="path\to\YourService.exe" KeyPath="yes" />
<util:User Id="UpdateUserLogonAsService" UpdateIfExists="yes" CreateUser="no" Name="[SERVICECREDENTIALS_USERLOGIN]"
LogonAsService="yes" />
<ServiceInstall Id="ServiceInstall" Type="ownProcess" Vital="yes" Name="YourService"
DisplayName="Your Service" Description="Your Service description"
Start="auto" Account="[SERVICECREDENTIALS_USERLOGIN]" Password="[SERVICECREDENTIALS_PASSWORD]"
ErrorControl="normal" Interactive="no" />
<ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="YourService" Wait="yes" />
</Component>
puede ayudarme cómo puedo tener 2 componentes 1 para Autenticación SQL y 1 para Autenticación de Windows, es decir, cómo agregar una condición. –
¿Este código funciona en absoluto? al establecer el privilegio LogonAsService * y *, la identidad del servicio no parece programarse secuencialmente en el paquete .msi resultante. Por esta razón, la instalación falla ... ¿O me falta algo? –
- 1. Ejecute el archivo por lotes como un servicio de Windows
- 2. WiX: Impida que el instalador de 32 bits se ejecute en Windows de 64 bits
- 3. Cómo cambiar el tipo de inicio del servicio de Windows en un instalador de WiX
- 4. Proyecto de instalación del servicio de Windows: ejecute el servicio como administrador
- 5. El servicio de Windows no se detiene y no se elimina al desinstalar (Wix)
- 6. ¿Cómo configurar Eclipse para que ejecute siempre la última configuración de ejecución, no el archivo actual?
- 7. Servicio de Windows: obtenga el directorio actual
- 8. Symfony2: Inyectar usuario actual en el Servicio
- 9. ¿Implementar como usuario de Jenkins o permitir que Jenkins se ejecute como un usuario diferente?
- 10. Cómo puedo hacer que el instalador se ejecute como administrador
- 11. Hacer que Windows ejecute solo un programa visible para el usuario
- 12. ¿Cuán confiable es el programador de tareas de Windows para programar el código para que se ejecute repetidamente?
- 13. ¿Cómo recupero el nombre de usuario con el que se ejecuta un servicio de Windows?
- 14. Inno Setup: ¿Cómo obtener el directorio de usuario actual cuando se ejecuta el instalador como administrador?
- 15. Wix: detención de un servicio de Windows en la desinstalación
- 16. Wix Major Upgrade: ¿cómo evito la reinstalación del servicio de Windows?
- 17. Haciendo que Mercurial se ejecute en Windows
- 18. ¿Es posible configurar VS2010 para que siempre se ejecute como administrador?
- 19. Parametrizar la opción de inicio del servicio en el instalador de WiX
- 20. WiX: cómo registrar la aplicación para que se inicie cuando se inicie Windows?
- 21. Cómo configurar que el WCF Test Client se ejecutará cada vez que se ejecuta el servicio
- 22. ¿Cómo verifico si el usuario actual tiene derecho a reiniciar un servicio de Windows?
- 23. ¿Recibe el nombre de usuario de Windows del usuario actual que usa php?
- 24. ¿Cómo puedo configurar las opciones de recuperación de un servicio con WiX?
- 25. Obtenga el nombre de usuario actual en C++ en Windows
- 26. ¿Recuperar el nombre y apellido del usuario actual de Windows?
- 27. Servicio de Windows que se ejecuta periódicamente
- 28. MSDeploy para instalar el servicio de Windows?
- 29. Deje que el usuario especifique en qué cuenta se ejecuta un servicio
- 30. Guardar un valor de casilla de verificación Wix que se establece como predeterminado en el registro
¿Por qué le gustaría ejecutar el servicio como el usuario actual? Gran parte del objetivo de un servicio es poder ejecutarlo cuando no hay ningún usuario conectado, y poder ejecutarlo como LocalSystem para facilitar los derechos de administración del ejecutable. Estoy seguro de que tiene una buena razón ... –
Una razón por la que lo ejecutaría como un usuario en particular es que necesita una conexión con el servidor SQL y SQL Server está configurado para usar la Autenticación de Windows ... es más fácil no tener para agregar el "Servicio local" a la lista de usuarios de SQL. –