Cómo asignar una unidad de red para ser usado por un servicio

Fuente: http://es.softuses.com/20497

Supongamos que algún servicio de Windows utiliza código que quiere unidades de red asignadas y sin rutas UNC. ¿Cómo puedo hacer la unidad de asignación disponibles para la sesión del servicio cuando se inicia el servicio? Iniciar sesión como usuario del servicio y crea una asignación persistente no establecerá la asignación en el contexto del servicio real.
répondre #1

Tampoco tendrá que modificar el servicio, o envolver dentro de un proceso de auxiliares: aparte de sesión/unidad de acceso emite, unidad persistente asignaciones sólo son restauradas en un inicio de sesión interactivo, servicios que normalmente no realizan.
El enfoque de proceso de ayuda puede ser bastante simple: crear un nuevo servicio que asigna la unidad y se inicia el servicio 'real'. Son las únicas cosas que no son enteramente triviales acerca de esto:
  • El servicio de ayuda necesitará pasar todos los comandos apropiados de SCM (start/stop, etc.) para el servicio real. Si el servicio real acepta comandos personalizados de SCM, recuerde pasar aquellos así (no espero un servicio que considera rutas UNC exóticos para utilizar estos comandos, aunque...)
  • Las cosas pueden poner un poco complicadas credential-wise. Si el servicio real se ejecuta con una cuenta de usuario normal, puede ejecutar el servicio de ayuda en esa cuenta, así, y todos deben aceptar siempre y cuando la cuenta tenga el acceso adecuado al recurso compartido de red. Si el servicio real sólo funcionará cuando se ejecuta como LOCALSYSTEM o creo, las cosas se ponen más interesantes, como que no poder 'ver' la unidad de red o requieren algunos malabares de credencial para obtener cosas para trabajar.
répondre #2

Sólo lo solucioné este problema en mi propia tras no encontrar una forma adecuada de hacerlo en Google. Este foro aún aparece cuando las personas están buscando una respuesta a este problema así que pensé que debería tener una solución adecuada. Utilícelo bajo su propio riesgo. (Yo he probado en XP y Server 2008 x 64 R2)
Para este hack necesita SysinternalsSuite por Mark Russinovich: http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx
Paso 1: abrir un símbolo del sistema elevado de cmd.exe (ejecutar como administrador)
Paso dos: elevar nuevamente a raíz usando PSExec.exe: Desplácese hasta la carpeta que contiene SysinternalsSuite y ejecute el siguiente comando "psexec -i -s cmd.exe" ya está dentro de un mensaje que es "nt authority\system" y pueden demostrarlo escribiendo "whoami". -I es necesario porque las asignaciones de unidad necesitan interactuar con el usuario
Paso 3: Crear la unidad asignada persistente como la cuenta de sistema con el siguiente comando "net use z: \servername\sharedfolder / persistente: sí"
Es así de fácil!
ADVERTENCIA: Sólo puede quitar esta asignación de la misma manera que lo creó, de la cuenta del sistema. Si es necesario quitarla, siga los pasos 1 y 2 pero cambiar en el paso 3 para el comando: "net use z: /delete"
Nota: La unidad asignada recién creada aparecerá ahora para todos los usuarios de este sistema pero lo muestran como verán "unidad de red desconectado (Z :". No deje que el nombre le engañe. Puede pretender ser desconectado pero funcionará para todos. Es cómo puede indicar que este hack no es compatible por M$.




1. Descargar SysinternalsSuite de "http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx". 
2. Ejecutar un CMD.exe como Administrador.
3. Desplácese hasta la carpeta que contiene SysinternalsSuite y ejecute el siguiente comando "psexec -i -s cmd.exe" ya está dentro de un mensaje que es "nt authority\system" y pueden demostrarlo escribiendo "whoami". -I es necesario porque las asignaciones de unidad necesitan interactuar con el usuario
4. Ejecutar net use f: \\192.168.200.45\g /persistent:yes
   Cuando pida usuario ingresar: xxxxx
   Cuando pida clave ingresar: yyyyyy.

Comentarios

Entradas populares