Jak ustawić limit czasu sieci Windows dla fizycznie odłączonego dysku zamapowanego?

28

Kiedy dysk sieciowy ( net use) jest fizycznie odłączony, Eksplorator Windows (i inne programy) próbuje wyliczyć i / lub użyć go przez może 60 sekund.

Czy jest jakiś sposób na skrócenie tego limitu czasu do 5 sekund?

Aby wyjaśnić, nie pytam o dyski sieciowe, które są automatycznie odłączane przez system Windows po pewnym czasie, ani o automatyczne ponowne połączenia podczas logowania.

Pytanie dotyczy tego:

Podłącz dysk sieciowy do innego komputera. Następnie wyłącz ten drugi komputer. Następnie spróbuj ponownie podłączyć dysk sieciowy, np. Klikając dwukrotnie w Eksploratorze Windows → bardzo długi limit czasu. Jak skrócić ten limit czasu?

Andreas Haferburg
źródło
2
Być może tego szukasz: superuser.com/a/332754/124651
deppfx
@ Ƭᴇcʜιᴇ007 Dzięki za nagrodę. Ale myślę, że ludzie nadal nie rozumieją. Próbowałem ponownie sformułować pytanie, aby było bardziej zrozumiałe.
Andreas Haferburg
1
@AndreasHaferburg Nie ma problemu, jeśli masz czas na przetestowanie niektórych nowych odpowiedzi, byłoby to przydatne. :)
Ƭᴇcʜιᴇ007
Wydaje się, że żadna ze zmian rejestru sugerowanych w odpowiedziach nie pomaga. Podejrzewam, że limit czasu, który chcielibyśmy skrócić, nie jest tak naprawdę limitem czasu SMB, ale bardziej ogólnym limitem czasu TCP / IP (lub kombinacją kilku z nich).
mivk

Odpowiedzi:

6

W systemach Windows 7 i Vista zmapowane dyski sieciowe odłączą się po pewnym czasie i pokażą czerwony krzyżyk na ikonie dysku. Nadal będziesz mógł kliknąć dysk i zobaczyć / użyć zawartości, ale aplikacje wymagające dysku sieciowego będą widzieć je jako odłączone i nie będą widzieć plików. Jeśli spróbujesz odłączyć dysk, nadal będzie tam mówił „Disconnected Network Drive” - jedynym rozwiązaniem jest ponowne uruchomienie. Wynika to z domyślnego czasu rozłączenia nieaktywnych połączeń sieciowych. Aby to naprawić i wyłączyć automatyczne rozłączanie, wykonaj następujące czynności:

  1. Otwórz wiersz polecenia jako Administrator. Aby to zrobić:

    • przejdź do Start → Wszystkie programy → Akcesoria, kliknij prawym przyciskiem myszy „Wiersz polecenia” i wybierz „Rozpocznij jako administrator” lub

    • wpisz cmd w polu wyszukiwania i naciśnij Ctrl+ Shift+Enter

  2. W wierszu polecenia wpisz następujące polecenie:

    net config server /autodisconnect:-1
    
  3. naciśnij Enter

  4. Restart komputera

Zmapowane dyski sieciowe powinny teraz pozostawać w kontakcie - jest to stała poprawka.

Kryszna
źródło
4
To nie odpowiada na rzeczywiste pytanie OP, pierwotne żądanie zostało źle zrozumiane, patrz edycja OP.
Ƭᴇcʜιᴇ007
Wiem, że nie ma to związku z OP, ale właśnie tego szukam, ale odmówiono dostępu. Jestem administratorem na moim komputerze.
Rick
3

Na podstawie http://blogs.msdn.com/b/openspecification/archive/2013/03/27/smb-2-x-and-smb-3-0-timeouts-in-windows.aspx wyglądają jak Windows limit czasu udostępniania jest kontrolowany przez wpis rejestru „Timer wygaśnięcia żądania”.

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

Wspomniał także o tej wartości zmniejszonej do 20s w Windows 8 SMB 3.0 dla szybkiego przełączania awaryjnego.

Eric Leung
źródło
3
Niestety moje testy pokazują, że to ustawienie nie ma wpływu na czas oczekiwania na niedostępne dyski sieciowe. Ustawiłem go na 5 sekund i nadal czekam tak samo ~ 30 sekund (Windows 7), jak byłem przed ustawieniem (i ponownym uruchomieniem).
Ƭᴇcʜιᴇ007
2

Miałem ten sam problem, ale początkowo było to tylko około 30 sekund. Ale kiedy przeskoczył do około 2 minut (z jakiegoś nieznanego powodu), stał się tak irytujący, że musiałem znaleźć sposób na jego rozwiązanie.

Utworzyłem skrypt wsadowy, który testuje sieć, sprawdzając, czy może pingować maszynę docelową, jeśli to możliwe, mapuje dyski (jeśli nie są mapowane), w przeciwnym razie usuwa mapowanie.

@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

Ten skrypt jest następnie wywoływany przez zaplanowane zadanie, które uruchamia skrypt co 10 minut, przy maksymalnym czasie zadania 10 minut. Mimo że okno konsoli pozostaje otwarte w tym czasie, obecnie badam Network Conditionsto w ustawieniach harmonogramu, które można ustawić tak, aby tworzyły udziały po podłączeniu do sieci. Wiem, że udział jest włączony (co ustawiłoby flagę), oraz drugi skrypt, który uruchamiałby się raz na mniej więcej 5 minut, który jeśli flaga byłaby starsza niż przynajmniej jakkolwiek długa, usuwałaby udziały, minimalizując czas okna konsoli.

topherg
źródło
4
Niestety myślę, że tego rodzaju rozwiązanie jest tak dobre, jak możemy się spodziewać (wciąż od 2014 r.), Przynajmniej jeśli chodzi o opóźnienia logowania / uruchamiania Eksploratora spowodowane dyskami sieciowymi. Zdobądź moją nagrodę. Być może uda nam się ponownie go odwiedzić za kilka lat. :)
ᴇcʜιᴇ007
sleepw twoim skrypcie nie jest poleceniem natywnym. W takim przypadku lepiej użyć vbscript.
Azevedo
@ Ƭᴇcʜιᴇ007 Czy kiedykolwiek znalazłeś prawdziwe rozwiązanie tego problemu? Mam dysk sieciowy, który często jest fizycznie wyłączony, a próba dostępu do niego z komputera klienckiego powoduje frustrujące opóźnienie.
WackGet
1

Twoje rozwiązanie jest poniżej;

Zabij długie „przywracanie połączeń sieciowych” przy logowaniu (odłożenie = zamglone połączenia)

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider]

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

"RestoreTimeout"=dword:00000005

Ghost połączenie, jeśli nie odpowiada w środku RestoreTimeout

"DeferConnection"=dword:00000001
William Topping
źródło
1
Jakieś źródło, skąd masz te informacje, lub takie, które podpowiada, dlaczego może to pomóc?
Ƭᴇcʜιᴇ007
2
Niestety moje testy pokazują, że to ustawienie nie ma wpływu na czas oczekiwania na niedostępne dyski sieciowe. Utworzyłem powyższe klucze i ustawiłem ich wartości, ale nadal czekam tak samo ~ 30 sekund (Windows 7), jak byłem przed ustawieniem (i ponownym uruchomieniem).
Ƭᴇcʜιᴇ007
1
Istnieje również: [HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ LanmanWorkstation \ Parameters] „ReconnectTimeout” = dword: 00000005 znaleziony tutaj: sevenforums.com/network-sharing/… Ustawienie tego wpisu oraz tych, które dotyczą przede wszystkim 1, wydaje się tworzyć ogromna różnica (po ponownym uruchomieniu). Teraz wszystko jest szybkie, jak oczekiwano.
kermit,
1

Działa to dla mnie w systemie Windows 7 zgodnie z oczekiwaniami. Rozwiązuje również długie oczekiwanie po zalogowaniu. Wklejono tutaj jako plik .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
źródło
To nie działa w 8.1
środkowy
0

Zgodnie z tym postem na Windows7Hacker , naprawienie tego problemu po stronie klienta wymaga edycji rejestru.

  1. Otwórz rejestr za pomocą Regedit.exe
  2. Nawiguj do HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
  3. Utwórz nazwę DWORD o nazwie KeepConni ustaw czas w sekundach, aby połączenie pozostało aktywne

Na przykład ustawiłem go na 86400 (jeden dzień).

deppfx
źródło
Chociaż teoretycznie może to odpowiedzieć na pytanie, lepiej byłoby zawrzeć tutaj istotne części odpowiedzi i podać odnośnik.
Ivo Flipse,
Ponadto, jako ogólne przypomnienie: postaraj się, aby twoje odpowiedzi były dłuższe niż zdanie i dodaj kontekst. Wyjaśnij, w jaki sposób link faktycznie odpowiada na pytanie - może nie być to takie oczywiste.
slhck
@IvoFlipse: Jasne. Dzięki za sugestię.
deppfx
@slhck: Będę o tym pamiętać.
deppfx
1
To nie odpowiada na rzeczywiste pytanie OP, pierwotne żądanie zostało źle zrozumiane, patrz edycja OP.
Ƭᴇcʜιᴇ007