Posso dizer ao Windows para solicitar login de rede para unidades de rede na inicialização?

Posso dizer ao Windows para solicitar login de rede para unidades de rede na inicialização?

Tenho duas unidades de rede mapeadas em minha máquina Windows, de um NAS. Ambas as unidades exigem a mesma configuração de nome de usuário/senha, e optei por não dizer ao Windows para se lembrar disso, porque bem, quero que o requisito mínimo para acessar qualquer um dos meus arquivos seja inserir pelo menos uma senha, certo?

Por causa disso, o Windows não conecta as unidades de rede no login e apresenta o erro usual:Não foi possível reconectar todas as unidades de rede

Para surpresa de ninguém, o Windows não tem ideia do que fazer quando não sabe a senha do meu compartilhamento de rede.

Então, aqui está como desejo automatizar esse processo: Depois de inicializar e fazer login, quero obter uma janela pop-up de login de rede, como a que você vê quando tenta acessar uma janela. Quero fazer login com êxito e, em seguida, quero que o Windows tente conectar as unidades de rede.

Como eu conseguiria isso?

(Estou ciente de que poderia usar o mesmo nome de usuário e login em minha máquina Windows que o login de rede para automatizar isso, mas também não quero fazer isso, mesmo que seja o que eu normalmente recomendaria a outras pessoas)

Responder1

Tentei conseguir isso com minhas habilidades básicas em lote. Aqui está o que eu descobri.

Primeiro, configure as janelas para iniciar as janelas de pastas como um processo separado (em vez de manter todas as pastas no mesmo explorer.exe). Isso permite que as pastas sejam fechadas por meio de prompt de comando/scripts em lote.

Habilite pastas como processos separados

Em seguida, escreva este arquivo em lote e coloque-o em **C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup** (Por que isso não está em negrito?)

@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

Simplesmente substitua as letras das unidades pelas que se aplicam ao seu sistema e o NETWORKDRIVELABEL pelos nomes das unidades de rede apropriadas. Isso é necessário porque o nome completo do título da janela é "NETWORKDRIVELABEL (\SHARENAME) (DRIVELETTER)", mas em vez de escrever um título completo da janela, simplesmente uso um asterisco (*) para definir que se destina a fechar qualquer processo do explorer com um título de janela começando com NETWORKDRIVELABEL.

O que isso faz é tentar abrir o compartilhamento de rede "D:\" com o explorador de arquivos do Windows. Como acontece, já que é um compartilhamento de rede, você recebe uma solicitação para fazer login. Depois, um loop é executado onde o programa é executadoutilização líquida | encontrarstr OK(procurando por "OK" na saída de "net use") e não segue em frente até encontrar um OK (esta parte pressupõe que você não tenha unidades de rede inicializadas. Não tenho certeza de como ser mais elaborado com findstr; não é tão bom quanto o grep do bash).

Então, assim que detectar que uma unidade de rede está conectada corretamente, ele tentará mapear as outras unidades de rede abrindo-as com o explorador e fechando-as.

Tive que usar o comando stop no final do arquivo em lote ou ele não terminaria normalmente (aguardei a entrada do usuário).

Consulte aqui se quiser fazer isso, mas ocultar a janela de comando:Como executar um arquivo em lote sem abrir uma “janela de comando”?

informação relacionada