有时一个networking驱动器已经映射到一个驱动器号,因为“断开”。 使用正常的Windowsfunction访问该驱动器上的文件/文件夹失败。 只要用户手动点击它的Windows资源pipe理器对话框,它神奇地修复。
由于我的程序是一个批处理程序,我想从我的程序(C ++)开始这个“魔术”,但是我还没有find一个Windows的函数。 在通常的WNet中没有任何function…
NET USE V: /DELETE NET USE V: "\\server1\videos" NET USE L: /DELETE NET USE L: "\\server2\archive"
插入路径时,可以检查是否是网络资源,在打开文件之前,使用WNetGetConnection()获取网络资源。
您也可以尝试使用WNetRestoreConnectionW() ,这似乎有更多的虚假支持,这取决于环境。
尝试通过net use
重新连接到共享:
net use \\server\folder [/user:[domain\]username] [password]
如果这不起作用,你可以先net use /delete
它,然后重新连接。
这不是WNetAddConnection和WNetAddConnection2的用途吗?
不过,我怀疑这真的是一回事。 资源管理器可能缓存连接信息在注册表中的某处。 当用户试图去该驱动器资源管理器看到映射断开连接,从注册表中读取连接信息,并重新创建连接。 也许你可以尝试在创建驱动器映射时运行regmon,并查看是否可以确定连接信息的缓存位置和方式。
不久前,我在这个客户遇到了麻烦。 我不知道在你的情况下是否可能,但我们的解决方法是调整服务器的网络设置,以停止超时和断开连接。 有关详细信息,请参阅MSKB 297684 。
我同意上面CMB的意见。 我过去一直在这条路上(原谅这个双关语),这使我陷入了无尽的困境。
如果路径是用户可配置的,则可以使用m:\ pathonserver,或者使用\ server \ c \ pathonserver。
它不应该有任何区别于您的代码,打开文件为m:\ blahdeblah.dat或\ server \ c \ blahdeblah.dat将是相同的。
使用UNC路径远为可靠,Windows将自动重新连接到该路径,而不管映射的字母是否在那里。