Come impostare il timeout di rete di Windows per l'unità mappata fisicamente disconnessa?


28

Quando un'unità di rete ( net use) viene disconnessa fisicamente, Windows Explorer (e altri programmi) continua a provare a enumerarla e / o usarla per circa 60 secondi.

C'è un modo per ridurre questo timeout a forse 5 secondi?

Solo per chiarire, non sto chiedendo informazioni sulle unità di rete che vengono automaticamente disconnesse da Windows dopo un certo periodo di tempo, o sulle riconnessioni automatiche durante l'accesso.

La domanda riguarda questo:

Collegare un'unità di rete a un altro computer. Quindi spegnere l'altro computer. Quindi provare a ricollegare l'unità di rete, ad esempio facendo doppio clic in Esplora risorse → timeout molto lungo. Come posso ridurre questo timeout?


2
Potresti essere alla ricerca di questo: superuser.com/a/332754/124651
deppfx

@ Ƭᴇcʜιᴇ007 Grazie per la generosità. Ma penso che la gente fraintenda ancora. Ho provato a riformulare nuovamente la domanda per renderla più chiara.
Andreas Haferburg,

1
@AndreasHaferburg Nessun problema, se hai tempo per testare alcune delle nuove risposte, sarebbe utile. :)
Ƭᴇcʜιᴇ007,

Nessuna delle modifiche al registro suggerite nelle risposte sembra aiutare. Sospetto che il timeout che vorremmo ridurre non sia in realtà un timeout SMB, ma un timeout TCP / IP più generico (o una combinazione di diversi di essi).
marzo

Risposte:


6

In Windows 7 e Vista le unità di rete mappate si disconnetteranno dopo un po 'e mostreranno una croce rossa sull'icona dell'unità. Sarai comunque in grado di fare clic sull'unità e vedere / utilizzare i contenuti, ma le applicazioni che richiedono un'unità di rete le vedranno disconnesse e non vedranno i file. Se si tenta di disconnettere l'unità, rimarrà comunque lì dicendo "Disconnected Network Drive" - ​​l'unica soluzione è riavviare. Questo perché esiste un tempo di disconnessione predefinito per le connessioni di rete inattive. Per correggere ciò e disattivare la disconnessione automatica, procedi come segue:

  1. Aprire il prompt dei comandi come amministratore. Per fare questo, sia:

    • vai su Start → Tutti i programmi → Accessori, fai clic con il pulsante destro del mouse su "Prompt dei comandi" e seleziona "Avvia come amministratore", oppure

    • digitare cmd nella casella di ricerca e premere Ctrl+ Shift+Enter

  2. Nel prompt dei comandi, digitare quanto segue:

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

  4. Riavvia il computer

Le unità di rete mappate dovrebbero ora rimanere connesse: questa è una correzione permanente.


4
Questo non risponde alla vera domanda del PO, la richiesta originale è stata fraintesa, vedi modifica del PO.
Ƭᴇcʜιᴇ007,

So che non è correlato a OP, ma questo è esattamente quello che sto cercando, ma ottenere l'accesso negato. Sono un amministratore sul mio PC.
Rick,

3

Basato su http://blogs.msdn.com/b/openspecification/archive/2013/03/27/smb-2-x-and-smb-3-0-timeouts-in-windows.aspx , sembra Windows il timeout di condivisione è controllato dalla voce di registro "Richiedi scadenza scadenza".

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

Ha anche menzionato questo valore ridotto a 20 secondi in Windows 8 SMB 3.0 per un rapido failover.


3
Sfortunatamente, i miei test mostrano che questa impostazione non ha alcun effetto sul timeout coinvolto nell'attesa di unità di rete non disponibili. L'ho impostato su 5 secondi e sto ancora aspettando gli stessi ~ 30 secondi (Windows 7) prima di averlo impostato (e riavviato).
Ƭᴇcʜιᴇ007,

2

Stavo avendo lo stesso problema, ma inizialmente erano solo circa 30 secondi. Ma quando è saltato a circa 2 minuti (per qualche ragione sconosciuta), è diventato così fastidioso, ho dovuto trovare un modo per risolverlo.

Ho creato uno script batch che verifica la rete vedendo se può eseguire il ping della macchina di destinazione, se possibile, mappa le unità (se non mappate), altrimenti elimina la mappatura.

@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

Lo script viene quindi richiamato da un'attività pianificata, che esegue lo script ogni 10 minuti, con un tempo massimo dell'attività di 10 minuti. Sebbene la finestra della console rimanga aperta durante questo periodo, al momento sto studiando Network Conditionsper questo nelle impostazioni dello scheduler, che potrebbero essere impostate per creare le condivisioni quando si è connessi alla rete, so che la condivisione è attiva (che imposterà un flag), e un secondo script, che verrebbe eseguito una volta ogni 5 minuti circa, che se il flag fosse più vecchio di almeno per quanto tempo, eliminerebbe le condivisioni, riducendo al minimo i tempi della finestra della console.


4
Sfortunatamente penso che questo tipo di soluzione sia buono come possiamo aspettarci (ancora, a partire dal 2014), almeno quando si tratta di accessi / ritardi di avvio di Explorer causati dalle unità di rete. Prendi la mia generosità. Forse potremo rivederlo di nuovo tra un paio d'anni. :)
Ƭᴇcʜιᴇ007,

sleepnel tuo script non è un comando nativo. Meglio usare un vbscript in questo caso.
Azevedo,

@ Ƭᴇcʜιᴇ007 Hai mai trovato una vera soluzione a questo problema? Ho un'unità di rete che è spesso spenta fisicamente e il tentativo di accedervi da una macchina client provoca un ritardo frustrante.
Ottieni il

1

La tua soluzione è sotto;

Uccidi il lungo "ripristino delle connessioni di rete" all'accesso (differisci = connessioni fantasma)

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider]

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

"RestoreTimeout"=dword:00000005

Ghost la connessione se non risponde all'interno RestoreTimeout

"DeferConnection"=dword:00000001

1
Qualche fonte da cui hai ottenuto queste informazioni o che suggerisce il perché potrebbe essere d'aiuto?
Ƭᴇcʜιᴇ007,

2
Sfortunatamente, i miei test mostrano che questa impostazione non ha alcun effetto sul timeout coinvolto nell'attesa di unità di rete non disponibili. Ho creato le chiavi sopra e impostato i loro valori, ma sto ancora aspettando gli stessi ~ 30 secondi (Windows 7) che ero prima di impostarlo (e riavviare).
Ƭᴇcʜιᴇ007,

1
C'è anche: [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ LanmanWorkstation \ Parameters] "ReconnectTimeout" = dword: 00000005 trovato qui: sevenforums.com/network-sharing/… L' impostazione di questa voce e di quelle soprattutto su 1 sembra fare un enorme differenza (dopo il riavvio). Ora tutto è veloce come previsto di nuovo.
kermit il

1

Questo ha funzionato per me su Windows 7 come previsto. Inoltre risolve una lunga attesa dopo il login. Incollato qui come file .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

Questo non funziona su 8.1
midenok

0

Secondo questo post su Windows 7Hacker , risolvere questo problema sul lato client comporta una modifica del registro.

  1. Apri il registro con Regedit.exe
  2. Naviagate a HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
  3. Creare un valore DWORD denominato KeepConne impostarlo su time in secondi per mantenere attiva la connessione

Ad esempio, l'ho impostato su 86400 (un giorno).


Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Ivo Flipse,

Inoltre, come promemoria generale: prova a rendere le tue risposte più lunghe di una frase e aggiungi un po 'di contesto, per favore. Spiega come il link risponde effettivamente alla domanda: potrebbe non essere così ovvio.
Slhck,

@IvoFlipse: Sicuro. Grazie per il suggerimento.
deppfx,

@slhck: lo terrò a mente.
deppfx,

1
Questo non risponde alla vera domanda del PO, la richiesta originale è stata fraintesa, vedi modifica del PO.
Ƭᴇcʜιᴇ007,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.