C++ std::文件系统::复制失败,并显示"无法访问网络位置"



我编写了一个小型c++应用程序,该应用程序在Windows启动后在几个客户端上自动启动。此应用程序将文件从网络共享(所有客户端都是相同的网络共享(复制到本地磁盘。当我一次重新启动所有客户端时,其中一些客户端将从std::filesystem::copy函数中得到一个错误1231,并显示以下消息:

"无法到达网络位置">

如果我以几秒钟的间隔重新启动所有客户端,那么就没有问题。这让我觉得复制功能可能在复制过程中阻塞了文件。

有没有我缺少的一些设置阻止了这一点?这是正常行为吗?

编辑:我已经解决了网络问题,但现在我得到了一个错误32,该错误指出"该进程无法访问该文件,因为它正被另一个进程使用"。复制功能是否锁定当前正在复制的文件?

听起来更像是网络共享尚未挂载。如果所有客户端都试图同时装载相同的网络共享,这可能意味着分发共享的服务器要做大量工作。因此,一些客户可能会超时,可能不得不重复他们的请求。在您尝试从网络共享进行复制之前,请确保网络共享已实际安装。

由于客户端工作站的网络未初始化,您正面临一个问题。错误error_NETWORK_UNREACHABLE-1231(0x4CF(表示在实例中无法访问所提供的路径。

您可以使用两种方法:

1( 继续while循环,直到成功检查文件路径是否存在。使用try-catch(如果有的话(处理错误情况。当你获得成功时,请下载/复制。

2( 在下载/复制当前程序中的文件之前,睡眠60秒到180秒。

我编辑了我的问题;活动目录确实存在问题,其中客户端没有立即被赋予IP地址,因此无法访问共享。经过更多的测试,我现在看到我只能使用std::filesystem::copy在其中一个客户端上执行复制命令,而其他客户端则显示错误消息32,指出"该进程无法访问该文件,因为它正被另一个进程使用"。如果我在批处理文件中同时在所有设备上使用xcopy命令,我不会收到任何错误。。。

最新更新