web-dev-qa-db-ja.com

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

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

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

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

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

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

29

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

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

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

    • 検索ボックスにcmdと入力し、 Ctrl+Shift+Enter

  2. コマンドプロンプトで、次のように入力します。

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

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

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

6
Krishna

ベース 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でこの値が20秒に減少したことについても言及しましたSMB 3.0は迅速なフェイルオーバーのためです。

3
Eric Leung

これは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
2
Luis Siquot

私も同じ問題を抱えていましたが、最初は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を調査しています。これは、ネットワークに接続したときに共有を作成するように設定できます。フラグを設定する)、5分程度で実行される2番目のスクリプト。これは、フラグが少なくともどれだけ古くても共有を削除し、コンソールウィンドウの時間を最小限に抑えます。

2
topherg

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

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

[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
William Topping

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

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

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

0
deppfx