Windows网络共享上的std :: fstream

时间:2016-08-08 12:19:57

标签: c++

我正在努力从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资源管理器导航到该目录,之后,它工作。

如何解决此问题?

1 个答案:

答案 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 ...