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

0

Eu tenho duas unidades de rede mapeadas na minha máquina Windows, de um NAS. Ambas as unidades exigem a mesma configuração de nome de usuário / senha, e eu optei por não dizer ao Windows para lembrar disso, porque bem, eu quero o mínimo necessário para acessar qualquer um dos meus arquivos deve pelo menos digitar uma senha, certo? >

Por causa disso, o Windows não conectará as unidades de rede no login e fornecerá o erro comum:

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

Então, aqui está como eu quero automatizar este processo: Após inicializar e logar, eu quero obter uma janela popup de login de rede, como aquela que você obtém quando tenta acessar uma janela. Eu quero fazer o login com sucesso, e então eu quero que o Windows tente conectar as unidades de rede.

Como eu conseguiria isso?

(Eu estou bem ciente que eu poderia usar o mesmo nome de usuário e login na minha máquina Windows como o login de rede para automatizar isso, mas eu não quero fazer isso também, mesmo que seja o que eu normalmente recomendaria outros)

    
por Cestarian 19.04.2016 / 13:56

1 resposta

0

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

Primeiro configure as janelas para iniciar as janelas de pasta como um processo separado (em vez de manter todas as pastas sob o mesmo explorer.exe), isso permite que as pastas sejam fechadas via prompt de comando / scripts em lote.

Emseguida,escrevaessearquivoemloteecoloque-oem**C:\Usuários\Nomedeusuário\AppData\Roaming\Microsoft\Windows\MenuIniciar\Programas\Inicialização**(Porqueissonãoestáemnegrito?)

@echooffstartexplorer"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

Basta substituir as letras da unidade pelas que se aplicam ao seu sistema e o NETWORKDRIVELABEL pelos nomes das unidades de rede apropriadas. Isto é necessário porque o nome completo do título da janela é "NETWORKDRIVELABEL (\ SHARENAME) (DRIVELETTER)" mas ao invés de escrever um título completo da janela eu simplesmente uso uma estrela (*) para definir que ele deve fechar qualquer processo explorador com um título de janela começando com NETWORKDRIVELABEL.

O que isto faz é tentar abrir o compartilhamento de rede "D: \" com o explorador de arquivos do Windows. Como acontece, uma vez que é um compartilhamento de rede, você recebe o prompt para efetuar login. Depois, um loop é executado onde o programa é executado net use | findstr OK (procurando por "OK" na saída de "net use") e não se move até encontrar um OK (Esta parte presume que você não tenha unidades de rede inicializadas. Não sei como seja mais elaborado com o findstr; não é tão legal quanto o grep do bash).

Em seguida, assim que detectar que uma unidade de rede está conectada corretamente, ela tentará mapear as outras unidades de rede abrindo-as com o explorador e, em seguida, fechando-as.

Eu tive que usar o comando stop no final do arquivo de lote ou ele não terminaria normalmente (esperei pela entrada do usuário).

Consulte aqui se você deseja fazer isso, mas oculte a janela de comando: Como executar um arquivo de lote sem iniciar uma" janela de comando "?

    
por 20.04.2016 / 15:28