
Tengo dos unidades de red asignadas en mi máquina con Windows, desde un NAS. Ambas unidades requieren la misma configuración de nombre de usuario/contraseña, y opté por no decirle a Windows que recuerde esto, porque bueno, quiero que el requisito mínimo para acceder a cualquiera de mis archivos sea ingresar al menos una contraseña, ¿verdad?
Debido a esto, Windows no conecta las unidades de red al iniciar sesión y me da el error habitual:
Para sorpresa de nadie, Windows no tiene idea de qué hacer cuando no conoce la contraseña de mi recurso compartido de red.
Así es como quiero automatizar este proceso: después de iniciar e iniciar sesión, quiero que aparezca una ventana emergente de inicio de sesión en la red, como la que aparece cuando intentas acceder a una ventana. Quiero iniciar sesión correctamente y luego quiero que Windows intente conectar las unidades de red.
¿Cómo lograría esto?
(Soy muy consciente de que podría usar el mismo nombre de usuario e iniciar sesión en mi máquina Windows que el inicio de sesión de red para automatizar esto, pero tampoco quiero hacerlo, incluso si es lo que normalmente recomendaría a otros)
Respuesta1
Intenté lograr esto con mis habilidades básicas por lotes. Esto es lo que se me ocurrió.
Primero configure Windows para iniciar ventanas de carpetas como un proceso separado (en lugar de mantener todas las carpetas en el mismo explorer.exe). Esto permite cerrar las carpetas mediante el símbolo del sistema/scripts por lotes.
Luego escriba este archivo por lotes y colóquelo en **C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup** (¿Por qué no está en negrita?)
@echo off
start explorer "D:\"
:loop
timeout 0
(net use | findstr OK) > nul 2>&1
if errorlevel 1 goto loop
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVELABEL*" /IM explorer.exe
start /wait explorer "G:\"
timeout 0
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVE2LABEL*" /IM explorer.exe
start /wait explorer "F:\"
timeout 0
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVE3LABEL*" /IM explorer.exe
start /wait explorer "H:\"
timeout 0
taskkill /F /FI "WINDOWTITLE eq NETWORKDRIVE4LABEL*" /IM explorer.exe
stop
Simplemente reemplace las letras de las unidades con las que se aplican a su sistema y NETWORKDRIVELABEL con los nombres de las unidades de red apropiadas. Esto es necesario porque el nombre completo del título de la ventana es "NETWORKDRIVELABEL (\SHARENAME) (DRIVELETTER)" pero en lugar de escribir un título de ventana completo simplemente uso un asterisco (*) para definir que debe cerrar cualquier proceso del explorador con un título de ventana que comienza con NETWORKDRIVELABEL.
Lo que esto hace es intentar abrir el recurso compartido de red "D:\" con el explorador de archivos de Windows. Como lo hace, ya que es un recurso compartido de red, aparece el mensaje para iniciar sesión. Luego se ejecuta un bucle donde se ejecuta el programa.uso neto | encontrar str OK(busca "OK" en la salida de "net use") y no continúa hasta que encuentra un OK (Esta parte supone que no tienes unidades de red inicializadas. No estoy seguro de cómo ser más elaborado con findstr; no es tan agradable como grep de bash).
Luego, tan pronto como detecte que una unidad de red está conectada correctamente, procederá a intentar mapear las otras unidades de red abriéndolas con el explorador y luego cerrándolas.
Tuve que usar el comando detener al final del archivo por lotes o no terminaría normalmente (esperé la entrada del usuario).
Consulte aquí si desea hacer esto pero ocultar la ventana de comandos:¿Cómo ejecutar un archivo por lotes sin abrir una "ventana de comandos"?