5

有时,由于“断开连接”而已经映射到驱动器号的网络驱动器。使用正常的 Windows 功能访问该驱动器上的文件/文件夹失败。只要用户手动单击该驱动器,它就会出现 Windows 资源管理器对话框,它就被神奇地修复了。

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

4

8 回答 8

1

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

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

于 2009-10-10T01:49:15.110 回答
1
NET USE V: /DELETE
NET USE V: "\\server1\videos"

NET USE L: /DELETE
NET USE L: "\\server2\archive"
于 2009-09-29T18:59:20.020 回答
0

我同意上面 CMB 的评论。我过去一直走这条路(请原谅双关语),这给我带来了无穷无尽的麻烦。

如果路径是用户可配置的,他们可以使用 m:\pathonserver 或者他们可以使用 \server\c\pathonserver。

它不应该对您的代码产生任何影响,以 m:\blahdeblah.dat 或 \server\c\blahdeblah.dat 的形式打开文件将是相同的。

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

于 2009-10-01T21:45:28.287 回答
0

这不是 WNetAddConnection 和 WNetAddConnection2 的用途吗?

于 2009-09-25T12:55:50.183 回答
0

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

于 2009-09-29T18:33:27.887 回答
0

不过,我怀疑这确实是一回事。Explorer 可能会在注册表中的某处缓存连接信息。当用户尝试访问该驱动器时,资源管理器发现映射已断开连接,从注册表中读取连接信息,然后重新创建连接。也许您可以在创建驱动器映射时尝试运行 regmon,看看是否可以确定连接信息的缓存位置和方式。

于 2009-09-27T02:53:40.967 回答
0

尝试通过以下方式重新连接到共享net use

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

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

于 2009-09-24T21:38:51.913 回答
0

如果您将驱动器映射到网络共享,则映射的驱动器可能会在定期不活动后断开连接,并且 Windows 资源管理器可能会在映射驱动器的图标上显示一个红色的“X”。但是,如果您尝试访问或浏览映射的驱动器,它会很快重新连接。

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

微软对此主题的解释:https:
//support.microsoft.com/da-dk/help/297684/mapped-drive-connection-to-network-share-may-be-lost

于 2019-02-08T12:22:06.117 回答