使用UNC路径读/写文件 - 用c ++编写

时间:2013-05-17 20:59:57

标签: c++ boost file-io network-programming

我写了一些读/写东西的代码......

我想添加一个读取/写入UNC路径的选项。

一些代码:

if (boost::filesystem::exists (file_name))
{
  std::ifstream in_file(file_name.c_str(), std::ios::in|std::ios::binary|std::ios::ate);
  if(in_file.is_open())
  {
    in_file.read(...);
    in_file.close();
  }
}

如果之前使用过我尝试使用的网络共享,则可以正常使用。

但是,如果我尝试使用我之前从未见过的计算机上的共享,我会收到错误:

boost::filesystem::status: Logon failure: unknown user name or bad password: "\\xx\test.txt"

我想避免异常,检查一下boost :: filesystem :: status ...什么?查看文档,它似乎可以告诉我我是否有常规文件或目录......但如何检查我是否拥有正确的权限

有没有办法实际发送用户名和密码?

编辑:发现我可以打电话

Net Use \\yourUNC\path /user:uname password

也: http://msdn.microsoft.com/en-us/library/windows/desktop/aa375187(v=vs.85).aspx

我认为其中任何一个都会使代码平台依赖吗?

另外,如果我每次都登录 - 以10000次通话的顺序,这会导致严重的减速?

有没有办法检查用户是否已登录?

注意:我使用的是boost 1.47 - 主要是windows,但我想与平台无关。

谢谢。

1 个答案:

答案 0 :(得分:1)

我发现我可以检查权限的唯一方法是尝试...抓住文件存在调用的检查。

如果尝试失败,则表示我没有权限,可以调用系统(“Net Use ...”)

这样,即使我读/写10,000个文件,我也只需要登录一次......

我不喜欢我必须使用try ... catch的事实,如果有更好的方法,我会找到它,我会更新 - 如果有人知道更好的方法,请让我知道。