修复“断开连接”的Windows驱动器映射

时间:2009-09-24 10:53:46

标签: c++ windows networking batch-file disconnected

有时网络驱动器已映射到驱动器盘符,因为“已断开连接”。使用常规Windows功能访问该驱动器上的文件/文件夹失败。只要用户手动点击该驱动器,就可以使用Windows资源管理器对话框,它会被神奇地修复。

由于我的程序是一个批处理程序,我想从我的程序(C ++)开始这个“魔术”,但我还没有找到一个Windows函数。通常的WNet中没有任何东西......功能......

8 个答案:

答案 0 :(得分:1)

NET USE V: /DELETE
NET USE V: "\\server1\videos"

NET USE L: /DELETE
NET USE L: "\\server2\archive"

答案 1 :(得分:1)

插入路径后,您可以检查它是否是网络资源,在打开文件之前,请使用WNetGetConnection()获取网络资源。

您也可以尝试使用WNetRestoreConnectionW(),这似乎有更多的虚假支持,具体取决于环境。

答案 2 :(得分:0)

尝试通过net use重新连接到共享:

net use \\server\folder [/user:[domain\]username] [password]

如果这不起作用,您可以先net use /delete,然后重新连接。

答案 3 :(得分:0)

这不是WNetAddConnection和WNetAddConnection2的用途吗?

答案 4 :(得分:0)

但是,我怀疑这是完全相同的事情。 Explorer可能会在注册表中的某处缓存连接信息。当用户尝试转到该驱动器时,Explorer会看到映射已断开连接,从注册表中读取连接信息,然后重新创建连接。也许您可以在创建驱动器映射时尝试运行regmon,看看是否可以找出缓存连接信息的位置和方式。

答案 5 :(得分:0)

我不久前在我的客户那里遇到了麻烦。我不知道在你的情况下是否可能,但我们的修复是调整服务器的网络设置以停止超时和断开连接。有关详细信息,请参阅MSKB 297684

答案 6 :(得分:0)

我同意上述CMB的意见。我过去一直沿着这条路走下去(请原谅双关语),这让我没有遇到麻烦。

如果路径是用户可配置的,则可以使用m:\ pathonserver,也可以使用\ server \ c \ pathonserver。

它对您的代码没有任何影响,打开文件为m:\ blahdeblah.dat或\ server \ c \ blahdeblah.dat将是相同的。

使用UNC路径更加可靠,无论映射的字母是否存在,Windows都会自动重新连接到该路径。

答案 7 :(得分:0)

  

如果将驱动器映射到网络   共享,映射的驱动器可能会在固定间隔后断开连接   处于非活动状态,并且Windows资源管理器可能在图标上显示红色的“ X”   映射的驱动器。但是,如果您尝试访问或浏览   映射的驱动器,它可以快速重新连接。

为避免此行为,请使用以下命令:
net config server /autodisconnect:-1

Microsoft关于此主题的说明:
https://support.microsoft.com/da-dk/help/297684/mapped-drive-connection-to-network-share-may-be-lost