Cuando el Administrador de control de servicios inicia un servicio de Windows, el proceso se ejecuta como un usuario particular al igual que con cualquier otro proceso que se ejecute en el sistema operativo.
Existen varias cuentas de usuario "integradas" que se usan para ejecutar Servicios de Windows. Puede ver el conjunto completo de Servicios de Windows y la cuenta que ejecutan (llamado "Iniciar sesión como" en Windows 7) si mira el nodo "Servicios" dentro de Administración de equipos ".
Desde mi experiencia, cuando queremos un servicio de Windows para hablar con el PP utiliza seguridad integrada tomamos la segunda aproximación por debajo de:
1) Asignar una de las cuentas integradas como el "Iniciar sesión como" cuenta y agregue esta cuenta como un inicio de sesión en la instancia de SQL Server con los permisos DB apropiados
2) Use/cree una cuenta local o de dominio para el Servicio de Windows y luego agregue esta cuenta como inicio de sesión con la base de datos adecuada permisos Es posible a través del instalador solicitar las credenciales de la cuenta de usuario durante la instalación del servicio.
no puedo pretender ser lo suficientemente experto para señalar todos los pros y los contras de cada enfoque, sin embargo vale la pena considerar los siguientes:
con el enfoque 1 todos los servicios y procesos que se ejecutan como el seleccionado la cuenta integrada tendrá permiso para acceder a su base de datos. Este no es el caso con el acercamiento 2.
con el acercamiento 1 la configuración de contraseña es manejada por la máquina pero con la aproximación 2 la contraseña puede ser administrada por los administradores y también cumplir con las políticas de seguridad requeridas.
espero que esto ayude a
gracias. cambiar al usuario para el servicio suena bien. pero ¿cómo se puede hacer eso programáticamente? Quiero hacer eso en mi programa C# - no en la consola de administración de servicios. –
@ räph: Hace un tiempo hubiera sugerido buscar en la API de ADSI, pero ahora usted debería poder "meterse con las cuentas" más fácilmente con la clase .NET System.ServiceProcess.ServiceController. Aunque utilizo esto para iniciar/detener servicios, nunca modifiqué la configuración de un servicio de esta manera. Otros enfoques que he visto están generando un comando de red (aunque no creo que cambiar el servicio sea posible de esa manera) y más recientemente con PowerShell (permite cambiar las propiedades de un servicio, aunque tampoco tengo experiencia con esto ... .). – mjv
LSA significa * Local Security Authorithy *, no LocalService. http://msdn.microsoft.com/en-us/library/ms721592%28VS.85%29.aspx#_security_local_security_authority_gly#_security_local_security_authority_gly –