ネットワークドライブ( Net Use
)は物理的に切断されており、Windowsエクスプローラー(および他のプログラム)はそれを列挙および/または60秒ほど使用しようとし続けます。
このタイムアウトをおそらく5秒に減らす方法はありますか?
明確にするために、一定の時間が経過するとWindowsによって自動的に切断されるネットワークドライブや、ログイン中の自動再接続については質問しません。
問題はこれについてです:
ネットワークドライブを別のコンピュータに接続します。次に、他のコンピュータの電源を切ります。次に、ネットワークドライブを再接続してみます。 Windowsエクスプローラでダブルクリック→非常に長いタイムアウト。このタイムアウトを減らすにはどうすればよいですか?
Windows 7およびVistaでは、マップされたネットワークドライブはしばらくすると切断され、ドライブアイコンに赤い十字が表示されます。ドライブをクリックして内容を表示/使用することはできますが、ネットワークドライブを必要とするアプリケーションでは、それらが切断されていると見なされ、ファイルは表示されません。ドライブを切断しようとしても、「ネットワークドライブの切断」と表示されたままになります-唯一の解決策は再起動することです。これは、非アクティブなネットワーク接続にはデフォルトの切断時間が存在するためです。これを修正して自動切断をオフにするには、次のようにします。
管理者としてコマンドプロンプトを開きます。これを行うには、次のいずれかを実行します。
[スタート]→[すべてのプログラム]→[アクセサリ]に移動し、[コマンドプロンプト]を右クリックして[管理者として開始]を選択するか、
検索ボックスにcmdと入力し、 Ctrl+Shift+Enter
コマンドプロンプトで、次のように入力します。
net config server /autodisconnect:-1
押す Enter
コンピュータを再起動します
これで、マップされたネットワークドライブは接続されたままになります-これは永続的な修正です。
ベース 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は迅速なフェイルオーバーのためです。
これは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
私も同じ問題を抱えていましたが、最初は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番目のスクリプト。これは、フラグが少なくともどれだけ古くても共有を削除し、コンソールウィンドウの時間を最小限に抑えます。
あなたの解決策は以下のとおりです。
ログオン時に長い「ネットワーク接続の復元」を強制終了します(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
Windows7Hacker に関するこの投稿によると、この問題をクライアント側で修正するにはレジストリの編集が必要です。
HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
へのナビゲートKeepConn
という名前の[〜#〜] dword [〜#〜]値を作成し、接続を維持する時間を秒単位で設定します生きているたとえば、86400(1日)に設定します。