c++ - 使用 UNC 路径读取/写入文件 - 在 C++ 中

标签 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,但我希望独立于平台。

谢谢。

最佳答案

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

如果尝试失败,说明我没有权限,可以调用system("Net Use...")

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

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

关于c++ - 使用 UNC 路径读取/写入文件 - 在 C++ 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16617830/

相关文章:

xcode - 在 XCode 3.2 中链接 Boost 文件系统 (MacPorts)

java - 在Mapr FS中写入字符串内容时附加了垃圾字符

c++ - 如何在不复制的情况下从 C 数组构造 std::vector 或 boost::array?

c++ - 如何在字符串中找到一个字符串并替换它?

c++ - 使用 CGAL 对流形进行三角剖分

c++ - 甚至在 C++ 中执行空循环吗?

c++ - ascii 和二进制 - 按应有的方式显示,但读取返回垃圾

c++ - 列出目录 C++ 中的文件夹

c++ - 试图向下转换 std::vector 中对象的指针

c++ - 指向指针的指针长度