我正在努力从Windows网络共享中读取文件。
我将网络共享安装为S:
所以我的代码看起来像这样:
std::fstream in;
in.open("S:/adir/new folder/afile.txt", std::fstream::in);
if (in.fail())
throw "failed";
... //use in for reading
当我第一次运行此程序时,它会抛出“失败”。它一直失败,直到我将Windows资源管理器导航到该目录,之后,它工作。
如何解决此问题?
答案 0 :(得分:0)
为了打开文件,执行代码的系统在执行时应该可以访问共享或映射的网络驱动器。
WNetAddConnection2
函数建立与网络资源的连接,并可以将本地设备重定向到网络资源。
DWORD dwRetVal;
NETRESOURCE nr;
DWORD dwFlags;
// Zero out the NETRESOURCE struct
memset(&nr, 0, sizeof (NETRESOURCE));
nr.dwType = RESOURCETYPE_ANY;
nr.lpLocalName = <name of a local device>;
nr.lpRemoteName = <network resource to connect to>;
nr.lpProvider = NULL;
dwFlags = CONNECT_UPDATE_PROFILE;
// Call the WNetAddConnection2 function to assign
// a drive letter to the share.
dwRetVal = WNetAddConnection2(&nr,
<password to be used>,
<a user name>,
dwFlags);
if (dwRetVal == NO_ERROR)
// Success ...
// Now you can open the file
else
// Failed ...