物理的に切断されたマッピングされたドライブのWindowsネットワークタイムアウトを設定するにはどうすればよいですか?


28

ネットワークドライブ(net use)が物理的に切断されると、Windowsエクスプローラー(および他のプログラム)は、60秒間それを列挙および/または使用しようとし続けます。

このタイムアウトを5秒に減らす方法はありますか?

明確にするために、一定時間後にWindowsによって自動的に切断されるネットワークドライブや、ログイン中の自動再接続については尋ねません。

質問はこれについてです:

ネットワークドライブを別のコンピューターに接続します。次に、他のコンピューターの電源を切ります。次に、Windowsエクスプローラでダブルクリックするなどして、ネットワークドライブを再接続してみてください→非常に長いタイムアウト。このタイムアウトを減らすにはどうすればよいですか?


2
:あなたはこのを探しているかもしれないsuperuser.com/a/332754/124651
deppfx

@Ƭᴇcʜιᴇ007バウンティをありがとう。しかし、人々はまだ誤解していると思います。私は質問をより明確にするためにもう一度言い直そうとしました。
アンドレアスハーファーバーグ14

1
@AndreasHaferburg問題ありません。新しい回答のいくつかをテストする時間があれば、それは便利です。:)
Ƭᴇcʜιᴇ007

回答で提案されたレジストリの変更はどれも役に立たないようです。削減したいタイムアウトは、実際にはSMBタイムアウトではなく、より一般的なTCP / IPタイムアウト(またはそれらのいくつかの組み合わせ)であると思われます。
mivk

回答:


6

Windows 7およびVistaでは、マップされたネットワークドライブはしばらくすると自動的に切断され、ドライブアイコンに赤い十字が表示されます。ドライブをクリックしてコンテンツを表示/使用することはできますが、ネットワークドライブを必要とするアプリケーションでは、それらが切断されていると表示され、ファイルは表示されません。ドライブを切断しようとしても、そこに「Disconnected Network Drive」と表示されたままになります-唯一の解決策は再起動することです。これは、非アクティブなネットワーク接続にはデフォルトの切断時間が存在するためです。これを修正し、自動切断をオフにするには、次の手順を実行します。

  1. 管理者としてコマンドプロンプトを開きます。これを行うには、次のいずれかを実行します。

    • [スタート]→[すべてのプログラム]→[アクセサリ]に移動し、[コマンドプロンプト]を右クリックして[管理者として開始]を選択するか、または

    • 入力cmdの検索ボックスとプレスにCtrl+ Shift+Enter

  2. コマンドプロンプトで、次を入力します。

    net config server /autodisconnect:-1
    
  3. 押す Enter

  4. コンピューターを再起動する

マップされたネットワークドライブは接続されたままになります-これは永続的な修正です。


4
これはOPの実際の質問には答えません。元のリクエストは誤解されました。OPの編集を参照してください。
Ƭᴇcʜιᴇ007

OPとは無関係であることは知っていますが、これはまさに私が探しているものですが、アクセスは拒否されます。私はPCの管理者です。
リック

3

http://blogs.msdn.com/b/openspecification/archive/2013/03/27/smb-2-x-and-smb-3-0-timeouts-in-windows.aspxに基づいて、Windowsのように見える共有タイムアウトは、「Request Expiration Timer」レジストリエントリによって制御されます。

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

また、迅速なフェールオーバーのために、この値がWindows 8 SMB 3.0で20秒に短縮されることも言及しました。


3
残念ながら、私のテストでは、この設定は、利用できないネットワークドライブを待機する際のタイムアウトに影響を与えないことが示されています。5秒に設定しても、設定する(そして再起動する)前と同じ約30秒(Windows 7)待機しています。
Ƭᴇcʜιᴇ007

2

私は同じ問題を抱えていましたが、最初はわずか30秒でした。しかし、(何らかの理由で)約2分にジャンプすると、非常に迷惑になり、解決する方法を見つける必要がありました。

ターゲットマシンにpingできるかどうかを確認してネットワークをテストするバッチスクリプトを作成しました。できる場合は、ドライブをマップします(マップされていない場合)。そうでない場合は、マッピングを削除します。

@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

そのスクリプトは、10分ごとにスクリプトを実行するスケジュールされたタスクによって呼び出され、最大タスク時間は10分です。この間、コンソールウィンドウは開いたままになりますが、現在Network Conditions、スケジューラ設定でこれを調査しています。これは、共有がオンになっているネットワークに接続すると共有を作成するように設定できます(フラグが設定されます)。 2つ目のスクリプトは、5分ごとに1回実行されます。フラグが少なくとも長くなった場合、共有を削除し、コンソールウィンドウの時間を最小限に抑えます。


4
残念ながら、この種のソリューションは、少なくともネットワークドライブに起因するログイン/ Explorerの起動遅延に関しては、(2014年の時点で)期待できる程度に優れていると思います。私の恵みを持っています。おそらく私たちはさらに数年後にそれを再訪できるでしょう。:)
Ƭᴇcʜιᴇ007

sleepスクリプトでは、ネイティブコマンドではありません。この場合、vbscriptを使用する方が適切です。
アゼベド

@Ƭᴇcʜιᴇ007この問題の本当の解決策を見つけましたか?多くの場合、物理的に電源がオフになっているネットワークドライブがあり、クライアントマシンからアクセスしようとすると、イライラするような遅延が発生します。
WackGet

1

あなたの解決策は以下です。

ログオン時に長い「ネットワーク接続の復元」を終了します(defer = ghosted connections)

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider]

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

"RestoreTimeout"=dword:00000005

応答しない場合、接続をゴーストします RestoreTimeout

"DeferConnection"=dword:00000001

1
この情報を入手した場所のソース、またはそれが役立つ理由を示唆するソースはありますか?
Ƭᴇcʜιᴇ007

2
残念ながら、私のテストでは、この設定は、利用できないネットワークドライブを待機する際のタイムアウトに影響を与えないことが示されています。上記のキーを作成し、それらの値を設定しましたが、設定(および再起動)する前と同じ〜30秒(Windows 7)待機しています。
Ƭᴇcʜιᴇ007

1
[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ LanmanWorkstation \ Parameters] "ReconnectTimeout" = dword:00000005が見つかりました:sevenforums.com/network-sharing/… このエントリに加えて上記のものを1に設定すると、大きな違い(再起動後)。期待どおりにすべてが高速になりました。
カーミット14

1

これは、Windows 7で期待どおりに機能しました。また、ログイン後の長い待ち時間を解決します。ここに.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

これは8.1では動作しません
midenok

0

Windows7Hackerのこの投稿によると、クライアント側でこの問題を修正するにはレジストリの編集が必要です。

  1. Regedit.exeでレジストリを開く
  2. ナビゲート HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
  3. という名前のDWORD値を作成し、KeepConn秒単位の時間に設定して、接続を維持します

たとえば、86400(1日)に設定します。


これは理論的には質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
Ivo Flipse

また、一般的な注意事項として、回答を文章よりも長くして、コンテキストを追加してください。リンクが実際に質問にどのように回答するかを説明してください-それほど明白ではないかもしれません。
slhck

@IvoFlipse:もちろん。提案をありがとう。
deppfx

@slhck:そのことを覚えておいてください。
deppfx

1
これはOPの実際の質問には答えません。元のリクエストは誤解されました。OPの編集を参照してください。
Ƭᴇcʜιᴇ007
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.