Como definir o tempo limite da rede do Windows para unidades mapeadas fisicamente desconectadas?

28

Quando uma unidade de rede ( net use) é fisicamente desconectada, o Windows Explorer (e outros programas) continua tentando enumerar e / ou usá-lo por talvez 60 segundos.

Existe alguma maneira de reduzir esse tempo limite para talvez 5 segundos?

Apenas para esclarecer, não estou perguntando sobre unidades de rede que são automaticamente desconectadas pelo Windows após um certo período de tempo, nem sobre reconexões automáticas durante o logon.

A questão é sobre isso:

Conecte uma unidade de rede a outro computador. Em seguida, desligue o outro computador. Em seguida, tente reconectar a unidade de rede, por exemplo, clicando duas vezes no Windows Explorer → tempo limite muito longo. Como reduzo esse tempo limite?

Andreas Haferburg
fonte
2
Você pode estar procurando por isso: superuser.com/a/332754/124651
deppfx:
@ Ƭᴇcʜιᴇ007 Obrigado pela recompensa. Mas acho que as pessoas ainda entendem mal. Tentei reformular a pergunta novamente para torná-la mais clara.
Andreas Haferburg
1
@AndreasHaferburg Sem problemas, se você tiver tempo para testar algumas das novas respostas, isso seria útil. :)
cʜιᴇ007
Nenhuma das alterações de registro sugeridas nas respostas parece ajudar. Suspeito que o tempo limite que gostaríamos de reduzir não seja realmente um tempo limite de SMB, mas um tempo limite de TCP / IP mais genérico (ou uma combinação de vários deles).
mivk

Respostas:

6

No Windows 7 e no Vista, as unidades de rede mapeadas se desconectam após um tempo e mostram uma cruz vermelha no ícone da unidade. Você ainda poderá clicar na unidade e ver / usar o conteúdo, mas os aplicativos que exigem uma unidade de rede os verão desconectados e não verão os arquivos. Se você tentar desconectar a unidade, ela continuará lá, dizendo 'Unidade de rede desconectada' - a única solução é reiniciar. Isso ocorre porque há um tempo de desconexão padrão para conexões de rede inativas. Para corrigir isso e desligar a desconexão automática, faça o seguinte:

  1. Abra o prompt de comando como administrador. Para fazer isso, qualquer um:

    • vá para Iniciar → Todos os programas → Acessórios, clique com o botão direito do mouse em "Prompt de comando" e selecione "Iniciar como administrador" ou

    • digite cmd na caixa de pesquisa e pressione Ctrl+ Shift+Enter

  2. No comando prompty, digite o seguinte:

    net config server /autodisconnect:-1
    
  3. pressione Enter

  4. Reinicie o computador

Suas unidades de rede mapeadas agora devem permanecer conectadas - essa é uma correção permanente.

Krishna
fonte
4
Isso não responde à pergunta real dos OPs, a solicitação original foi mal compreendida, consulte a edição dos OPs.
Ƭᴇcʜιᴇ007
Sei que não está relacionado ao OP, mas é exatamente isso que estou procurando, mas o acesso é negado. Eu sou um administrador no meu PC.
Rick
3

Com base em http://blogs.msdn.com/b/openspecification/archive/2013/03/27/smb-2-x-and-smb-3-0-timeouts-in-windows.aspx , parecido com o Windows o tempo limite de compartilhamento é controlado pela entrada do registro "Request Expiration Timer".

\HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\
Value type: Dword  
Value name: SessTimeout
Default:    60 seconds (Windows Vista)

Ele também mencionou esse valor reduzido para 20s no Windows 8 SMB 3.0 para failover rápido.

Eric Leung
fonte
3
Infelizmente, meus testes mostram que essa configuração não afeta o tempo limite envolvido na espera de unidades de rede indisponíveis. Defini-o para 5 segundos e ainda estou esperando os mesmos ~ 30 segundos (Windows 7) que estava antes de configurá-lo (e reiniciar).
Ƭᴇcʜιᴇ007
2

Eu estava tendo o mesmo problema, mas inicialmente era apenas cerca de 30 segundos. Mas quando saltou para cerca de 2 minutos (por algum motivo desconhecido), ficou tão irritante que eu tive que encontrar uma maneira de resolvê-lo.

Eu criei um script em lote que testa a rede, verificando se é possível executar ping na máquina de destino; se é possível, ele mapeia as unidades (se não mapeadas); caso contrário, ele exclui o mapeamento.

@echo off

set ipaddr=192.168.5.3

set current=neither

:begin

    set state=down

    for /f %%i in ('ping -n 1 %ipaddr% -w 1000 ^| findstr /C:"Received = 1"') do (
        set state=up
    )

    if not %state% == %current% (
        set current=%state%
        if %state% == up (
            net use R: \\%ipaddr%\archive$
        )
        if %state% == down (
            net use R: /delete /y
        )
    )

    sleep 5

goto begin

Esse script é chamado por uma tarefa agendada, que executa o script a cada 10 minutos, com um tempo máximo de tarefa de 10 minutos. Embora a janela do console permaneça aberta durante esse período, atualmente estou investigando Network Conditionsisso nas configurações do agendador, que podem ser definidas para criar os compartilhamentos quando conectados à rede que eu sei que o compartilhamento está (o que definiria um sinalizador), e um segundo script, que seria executado uma vez a cada 5 minutos ou mais, que, se o sinalizador fosse mais antigo do que pelo menos o tempo que fosse, excluiria os compartilhamentos, minimizando o tempo da janela do console.

Topherg
fonte
4
Infelizmente, acho que esse tipo de solução é o melhor que podemos esperar (ainda em 2014), pelo menos quando se trata de atrasos de logins / inicialização do Explorer causados ​​pelas unidades de rede. Tenha minha recompensa. Talvez possamos revisitá-lo novamente em mais alguns anos. :)
Ƭᴇcʜιᴇ007
sleepno seu script não é um comando nativo. Melhor usar um vbscript neste caso.
Azevedo
@ Ƭᴇcʜιᴇ007 Você já encontrou uma solução real para este problema? Eu tenho uma unidade de rede que geralmente é desligada fisicamente, e tentar acessá-la a partir de uma máquina cliente resulta em um atraso frustrante.
WackGet 24/04
1

Sua solução está abaixo;

Mate a longa "restauração de conexões de rede" no logon (adiar = conexões fantasmas)

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider]

"RestoreConnection"=dword:00000001 ;(0=no attempt, you must click it)

"RestoreTimeout"=dword:00000005

Fantasma a conexão se não estiver respondendo dentro RestoreTimeout

"DeferConnection"=dword:00000001
William Topping
fonte
1
Alguma fonte de onde você obteve essas informações ou uma que indique por que elas podem ajudar?
Ƭᴇcʜιᴇ007
2
Infelizmente, meus testes mostram que essa configuração não afeta o tempo limite envolvido na espera de unidades de rede indisponíveis. Criei as chaves acima e defina seus valores, mas continuo aguardando os mesmos ~ 30 segundos (Windows 7) que estava antes de configurá-lo (e reiniciar).
Ƭᴇcʜιᴇ007
1
Há também: [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ LanmanWorkstation \ Parameters] "ReconnectTimeout" = DWORD: 00000005 encontrada aqui: sevenforums.com/network-sharing/... configurando esta entrada mais os acima de tudo para 1 parece fazer uma enorme diferença (após a reinicialização). Agora tudo está rápido como esperado novamente.
Kermit
1

Isso funcionou para mim no Windows 7, como esperado. Também resolve uma longa espera após o login. Colado aqui como um arquivo .reg:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider]
"RestoreConnection"=dword:00000000
"RestoreTimeout"=dword:00000004
"DeferConnection"=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters]
"SessTimeout"=dword:0000000a
"ExtendedSessTimeout"=dword:00000000
"ReconnectTimeout"=dword:00000004
Luis Siquot
fonte
Isso não funciona no 8.1
midenok
0

De acordo com esta publicação no Windows7Hacker , a correção desse problema no lado do cliente envolve uma edição do registro.

  1. Abra o registro com o Regedit.exe
  2. Naviagate para HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
  3. Crie um valor DWORD nomeado KeepConne defina o tempo em segundos para manter a conexão ativa

Por exemplo, eu defino para 86400 (um dia).

deppfx
fonte
Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Ivo Flipse
Além disso, como um lembrete geral: tente tornar suas respostas mais longas que uma frase e adicione algum contexto, por favor. Explique como o link realmente responde à pergunta - pode não ser tão óbvio.
slhck 26/07
@IvoFlipse: Claro. Obrigado pela sugestão.
Deppfx
@ sllck: Tenha isso em mente.
Deppfx
1
Isso não responde à pergunta real dos OPs, a solicitação original foi mal compreendida, consulte a edição dos OPs.
Ƭᴇcʜιᴇ007