una tiene recursos recurso puedo permiso para este entre crear contraseƱa computadoras compartir compartidas compartida como carpetas carpeta archivos acceder abre windows-services credentials network-share

windows-services - recursos - no tiene permiso para acceder a este recurso de red windows 10



El ejecutable iniciado por un servicio de Windows que utiliza la cuenta del sistema local no puede acceder a los recursos compartidos de la red (3)

¿Por qué no puedes usar otra cuenta? Existe una cuenta de servicio de red integrada en Windows, específicamente para servicios que necesitan acceso a la red.

De todos modos, tenga mucho cuidado cuando tenga un servicio para comenzar un exe.

Si el acceso de escritura a la carpeta con el exe no está deshabilitado, un usuario puede reemplazar ese exe con (por ejemplo) cmd.exe . La próxima vez que el servicio intente iniciar su exe, voilà: ¡Un shell de comandos con derechos de sistema!

Tengo un ejecutable que se inicia con un servicio de Windows, este programa se ejecutará en un equipo de clientes y necesitará conectarse a un recurso compartido remoto para realizar una tarea en particular. Esta acción es especificada por el cliente a través de una IU, por lo que no lo sabemos de antemano, lo que significa que no puede ser "codificada", o la parte asignada de antemano.

Previamente requerimos que el cliente iniciara sesión en su máquina y ejecutara el ejecutable al iniciar sesión, pero siempre hemos querido permitir que nuestro programa se ejecute dentro de un servicio y no requiera un inicio de sesión, principalmente para que sea más fácil para el cliente. y evitar cualquier cierre de sesión accidental que cierre nuestro software. Esto también significa que no sabemos qué cuentas de usuario locales existen en un equipo de clientes, por lo que debemos iniciar el servicio con la cuenta del sistema local.

Ahora, como se mencionó anteriormente, tenemos un servicio contenedor para iniciar el ejecutable y realizar varias tareas. Esto parece funcionar bien en la mayoría de los casos y tiene acceso a la red subyacente fina - el propósito de nuestro software implica principalmente capturar paquetes, etc.

Sin embargo, cuando el software intenta conectarse a un recurso compartido de Windows (nombre UNC), no puede conectarse. Mientras que si el ejecutable se inició manualmente, se conecta bien.

Las sugerencias que generalmente he visto para resolver este tipo de problemas parecen indicar el uso de una cuenta de usuario ya que la cuenta del sistema no puede acceder a los recursos compartidos de red, pero en nuestro caso esto no es posible. ¿Hay alguna otra manera en que podamos hacer que esto funcione?

Editar: Olvidé mencionar que esta aplicación podría (y más comúnmente) ejecutarse en Win2K, no en XP, y creo que estoy en lo cierto al decir que la cuenta de la red local no está disponible antes de XP.


Cuando tiene un servicio que se ejecuta en NT AUTHORITY / LOCALSYSTEM (que es el nombre de la cuenta de servicio), aparece como la cuenta DOMAINNAME / COMPUTERNAME $ (observe el signo $) con el resto de la red. Es decir, aparece como la cuenta de la COMPUTADORA en el directorio activo. Solo conceda su archivo y comparta permisos a DOMAINNAME / COMPUTERNAME $ y debería estar bien.


Si puede cambiar su servicio de Windows para que se ejecute bajo la cuenta de Servicio de Red, entonces su ejecutable podrá acceder a los recursos compartidos de red (esta es una de las razones por las cuales se creó la cuenta del Servicio de Red).

Las cuentas del sistema local y del servicio local no tienen ninguna credencial de red y, por lo tanto, no se pueden autenticar en la red. Esto es por diseño.

Editar: IIRC, la cuenta del servicio de red se introdujo en Server 2003 y se agregó a uno de los paquetes de servicio de XP.

Si no puede confiar en que la cuenta de servicio de red esté disponible, entonces podría considerar crear una cuenta de dominio dedicada, almacenar las credenciales de la cuenta en algún lugar, leerlas desde el interior de su servicio y luego ingresar y suplantar a ese usuario antes de acceder al recurso compartido de red. Alternativamente, el servicio de Windows podría ejecutarse directamente como la cuenta dedicada, en cuyo caso requeriría el privilegio "iniciar sesión como servicio".