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

lf5gs5x2  于 12个月前  发布在  Windows
关注(0)|答案(8)|浏览(180)

有时,网络驱动器已经Map到驱动器号,因为“断开连接”。使用正常的Windows功能访问该驱动器上的文件/文件夹失败。只要用户手动单击该驱动器,Windows资源管理器对话框,它就会神奇地修复。
由于我的程序是一个批处理程序,我想从我的程序(C++)开始这个“魔术”,但我还没有找到一个Windows函数。

z9zf31ra

z9zf31ra1#

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

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

字符串

t98cgbkg

t98cgbkg2#

插入路径后,您可以检查它是否是网络资源,并在打开文件之前使用WNetGetConnection()获取网络资源。
您也可以尝试使用WNetRestoreConnectionW(),它似乎有更多的虚假支持,这取决于环境。

bihw5rsg

bihw5rsg3#

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

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

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

6qfn3psc

6qfn3psc4#

这不就是WNetAddConnection和WNetAddConnection2的作用吗?

kh212irz

kh212irz5#

我怀疑这其实是一回事。Explorer可能会在注册表中的某个地方缓存连接信息。当用户试图转到该驱动器时,Explorer会看到Map断开,从注册表中读取连接信息,并重新创建连接。也许你可以在创建驱动器Map时尝试运行regmon,看看是否可以找出连接信息的缓存位置和方式。

ht4b089n

ht4b089n6#

不久前,我在一个客户端遇到了这个问题。我不知道在你的情况下是否可能,但我们的解决方案是调整服务器的网络设置来停止超时和断开连接。有关详细信息,请参阅MSKB 297684

lb3vh1jj

lb3vh1jj7#

我同意上面来自CMB的评论。我过去一直沿着这条路走(请原谅双关语),它给我带来了无尽的麻烦。
如果路径是用户可配置的,则可以使用m:\pathonserver或\server\c\pathonserver。
这不会对您的代码产生任何影响,打开文件时使用m:\blahdeblah.dat或\server\c\blahdeblah.dat将是相同的。
使用路径是更可靠的,Windows将自动重新连接到该路径是否Map的字母在那里。

1tuwyuhd

1tuwyuhd8#

如果您将驱动器Map到网络共享,则Map的驱动器可能会在定期不活动后断开连接,并且Windows资源管理器可能会在Map驱动器的图标上显示红色“X”。但是,如果您尝试访问或浏览Map的驱动器,则它会快速重新连接。
要避免此行为,请使用以下命令:
第一个月
Microsoft对此主题的解释:
https://support.microsoft.com/da-dk/help/297684/mapped-drive-connection-to-network-share-may-be-lost

相关问题