当网络驱动器(net use
)物理断开连接时,Windows资源管理器(和其他程序)会继续尝试枚举和/或使用它60秒钟。
有什么方法可以将此超时减少到5秒吗?
只是为了澄清,我不是在询问Windows在一定时间后自动断开连接的网络驱动器,也不是关于登录期间自动重新连接的问题。
问题是这样的:
将网络驱动器连接到另一台计算机。然后关闭另一台计算机。然后尝试重新连接网络驱动器,例如,通过双击Windows资源管理器→超时时间很长。如何减少此超时时间?
当网络驱动器(net use
)物理断开连接时,Windows资源管理器(和其他程序)会继续尝试枚举和/或使用它60秒钟。
有什么方法可以将此超时减少到5秒吗?
只是为了澄清,我不是在询问Windows在一定时间后自动断开连接的网络驱动器,也不是关于登录期间自动重新连接的问题。
问题是这样的:
将网络驱动器连接到另一台计算机。然后关闭另一台计算机。然后尝试重新连接网络驱动器,例如,通过双击Windows资源管理器→超时时间很长。如何减少此超时时间?
Answers:
在Windows 7和Vista中,映射的网络驱动器将在一段时间后自行断开连接,并在驱动器图标上显示一个红叉。您仍然可以单击驱动器并查看/使用其中的内容,但是需要网络驱动器的应用程序将其视为已断开连接,并且将看不到文件。如果您尝试断开驱动器的连接,它仍然会坐在那里,提示“ Disconnected Network Drive”(断开的网络驱动器)-唯一的解决方法是重新启动。这是因为没有活动的网络连接有默认的断开连接时间。要更正此问题并关闭自动断开连接,请执行以下操作:
以管理员身份打开命令提示符。为此,可以:
转到开始→所有程序→附件,右键单击“命令提示符”,然后选择“以管理员身份启动”,或
在搜索框中输入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共享超时由“请求过期计时器”注册表项控制。
\HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters\
Value type: Dword
Value name: SessTimeout
Default: 60 seconds (Windows Vista)
它还提到在Windows 8 SMB 3.0中此值减小到20s以进行快速故障转移。
我遇到了同样的问题,但是最初只有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分钟运行一次,如果该标志的存在时间至少长于该标志的时间,则它将删除共享,从而最大程度地减少了控制台窗口的时间。
sleep
您的脚本中的命令不是本机命令。在这种情况下,最好使用vbscript。
您的解决方案如下;
在登录时终止长时间的“恢复网络连接”(defer = ghosted连接)
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkProvider]
"RestoreConnection"=dword:00000001 ;(0=no attempt, you must click it)
"RestoreTimeout"=dword:00000005
如果没有响应,则对连接进行重影 RestoreTimeout
"DeferConnection"=dword:00000001
这按预期在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
根据Windows7Hacker上的这篇文章,在客户端解决此问题涉及注册表编辑。
HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters
KeepConn
并将其设置为以秒为单位的时间,以保持连接有效例如,我将其设置为86400(一天)。