Comment définir le délai d'expiration du réseau Windows pour le lecteur mappé physiquement déconnecté?

28

Lorsqu'un lecteur réseau ( net use) est physiquement déconnecté, l'Explorateur Windows (et d'autres programmes) continue d'essayer de l'énumérer et / ou de l'utiliser pendant peut-être 60 secondes.

Existe-t-il un moyen de réduire ce délai à peut-être 5 secondes?

Juste pour clarifier, je ne pose pas de questions sur les lecteurs réseau qui sont automatiquement déconnectés par Windows après un certain temps, ni sur les reconnexions automatiques lors de la connexion.

La question est à ce sujet:

Connectez un lecteur réseau à un autre ordinateur. Éteignez ensuite cet autre ordinateur. Essayez ensuite de reconnecter le lecteur réseau, par exemple en double-cliquant dans l'Explorateur Windows → délai très long. Comment puis-je réduire ce délai?

Andreas Haferburg
la source
2
Vous cherchez peut-être ceci: superuser.com/a/332754/124651
deppfx
@ Ƭᴇcʜιᴇ007 Merci pour la prime. Mais je pense que les gens se méprennent encore. J'ai essayé de reformuler à nouveau la question pour la rendre plus claire.
Andreas Haferburg
1
@AndreasHaferburg Pas de problème, si vous avez le temps de tester certaines des nouvelles réponses, ce serait pratique. :)
Ƭᴇcʜιᴇ007
Aucune des modifications de registre suggérées dans les réponses ne semble aider. Je soupçonne que le délai d'attente que nous aimerions réduire n'est en fait pas un délai d'attente SMB, mais un délai d'attente TCP / IP plus générique (ou une combinaison de plusieurs d'entre eux).
mivk

Réponses:

6

Sous Windows 7 et Vista, les lecteurs réseau mappés se déconnectent après un certain temps et affichent une croix rouge sur l'icône du lecteur. Vous pourrez toujours cliquer sur le lecteur et voir / utiliser le contenu, mais les applications qui nécessitent un lecteur réseau les verront comme déconnectées et ne verront pas les fichiers. Si vous essayez de déconnecter le lecteur, celui-ci restera assis en disant «Lecteur réseau déconnecté» - la seule solution est de redémarrer. En effet, il existe un temps de déconnexion par défaut pour les connexions réseau inactives. Pour corriger cela et désactiver la déconnexion automatique, procédez comme suit:

  1. Ouvrez l'invite de commande en tant qu'administrateur. Pour ce faire, soit:

    • allez dans Démarrer → Tous les programmes → Accessoires, cliquez avec le bouton droit sur "Invite de commandes" et sélectionnez "Démarrer en tant qu'administrateur", ou

    • tapez cmd dans la zone de recherche et appuyez sur Ctrl+ Shift+Enter

  2. Dans la commande vide, tapez ce qui suit:

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

  4. Redémarrer l'ordinateur

Vos lecteurs réseau mappés devraient maintenant rester connectés - il s'agit d'un correctif permanent.

Krishna
la source
4
Cela ne répond pas à la question réelle du PO, la demande d'origine a été mal comprise, voir la modification du PO.
Ƭᴇcʜιᴇ007
Je sais que cela n'est pas lié à OP, mais c'est exactement ce que je recherche, mais l'accès est refusé. Je suis administrateur sur mon PC.
Rick
3

Basé sur http://blogs.msdn.com/b/openspecification/archive/2013/03/27/smb-2-x-and-smb-3-0-timeouts-in-windows.aspx , ressemble à Windows le délai d'expiration du partage est contrôlé par l'entrée de registre "Request Expiration Timer".

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

Il a également mentionné cette valeur réduite à 20 s dans Windows 8 SMB 3.0 pour un basculement rapide.

Eric Leung
la source
3
Malheureusement, mes tests montrent que ce paramètre n'a aucun effet sur le délai d'attente pour attendre les lecteurs réseau indisponibles. Je l'ai réglé à 5 secondes et j'attends toujours les mêmes ~ 30 secondes (Windows 7) que j'étais avant de le configurer (et redémarré).
Ƭᴇcʜιᴇ007
2

J'avais le même problème, mais au départ c'était seulement environ 30 secondes. Mais quand il est passé à environ 2 minutes (pour une raison inconnue), c'est devenu si ennuyeux que j'ai dû trouver un moyen de le résoudre.

J'ai créé un script par lots qui teste le réseau en voyant s'il peut envoyer une requête ping à la machine cible, s'il le peut, il mappe les lecteurs (s'il n'est pas mappé), sinon, il supprime le mappage.

@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

Ce script est ensuite appelé par une tâche planifiée, qui exécute le script toutes les 10 minutes, avec un temps de tâche maximal de 10 minutes. Bien que la fenêtre de la console reste alors ouverte pendant cette période, j'étudie actuellement le Network Conditionspour cela dans les paramètres du planificateur, qui pourraient être définis pour créer les partages lorsqu'ils sont connectés au réseau. Je sais que le partage est activé (ce qui définirait un indicateur), et un deuxième script, qui s'exécuterait une fois toutes les 5 minutes environ, qui, si l'indicateur était plus ancien qu'au moins aussi long, supprimerait les partages, minimisant le temps de la fenêtre de la console.

topherg
la source
4
Malheureusement, je pense que ce type de solution est à peu près aussi bon que nous pouvons nous y attendre (toujours, à partir de 2014), du moins en ce qui concerne les délais de démarrage des connexions / explorateurs causés par les lecteurs réseau. Ayez ma générosité. Peut-être pourrons-nous le revoir à nouveau dans quelques années. :)
Ƭᴇcʜιᴇ007
sleepdans votre script n'est pas une commande native. Mieux vaut utiliser un vbscript dans ce cas.
Azevedo
@ Ƭᴇcʜιᴇ007 Avez-vous déjà trouvé une vraie solution à ce problème? J'ai un lecteur réseau qui est souvent physiquement hors tension, et essayer d'y accéder à partir d'un ordinateur client entraîne un retard frustrant.
WackGet
1

Votre solution est ci-dessous;

Tuez la longue "restauration des connexions réseau" à la connexion (différer = connexions fantômes)

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider]

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

"RestoreTimeout"=dword:00000005

Fantôme la connexion si elle ne répond pas à l'intérieur RestoreTimeout

"DeferConnection"=dword:00000001
William Topping
la source
1
Une source d'où vous avez obtenu ces informations, ou une source expliquant pourquoi cela pourrait aider?
Ƭᴇcʜιᴇ007
2
Malheureusement, mes tests montrent que ce paramètre n'a aucun effet sur le délai d'attente pour attendre les lecteurs réseau indisponibles. J'ai créé les clés ci-dessus et défini leurs valeurs, mais j'attends toujours les mêmes ~ 30 secondes (Windows 7) que j'étais avant de les définir (et redémarré).
Ƭᴇcʜιᴇ007
1
Il existe également: [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ LanmanWorkstation \ Parameters] "ReconnectTimeout" = dword: 00000005 trouvé ici: sevenforums.com/network-sharing/… La définition de cette entrée ainsi que de toutes celles qui sont avant tout à 1 semble faire un énorme différence (après le redémarrage). Maintenant, tout est à nouveau rapide comme prévu.
kermit
1

Cela a fonctionné pour moi sur Windows 7 comme prévu. Il résout également une longue attente après la connexion. Collé ici en tant que fichier .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
la source
Cela ne fonctionne pas le 8.1
midenok
0

Selon ce post sur Windows7Hacker , la résolution de ce problème côté client implique une modification du registre.

  1. Ouvrez le registre avec Regedit.exe
  2. Naviagate to HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
  3. Créez une valeur DWORD nommée KeepConnet définissez-la en temps en secondes pour maintenir la connexion active

Par exemple, je l'ai défini sur 86400 (un jour).

deppfx
la source
Bien que cela puisse théoriquement répondre à la question, il serait préférable d'inclure ici les parties essentielles de la réponse et de fournir le lien de référence.
Ivo Flipse du
Aussi, pour rappel général: essayez de rendre vos réponses plus longues qu'une phrase et ajoutez du contexte s'il vous plaît. Expliquez comment le lien répond réellement à la question - ce n'est peut-être pas si évident.
slhck
@IvoFlipse: Bien sûr. Merci pour la suggestion.
deppfx
@slhck: Gardera cela à l'esprit.
deppfx
1
Cela ne répond pas à la question réelle du PO, la demande d'origine a été mal comprise, voir la modification du PO.
Ƭᴇcʜιᴇ007