1

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

我想添加一个选项来读取/写入 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,但我想独立于平台。

谢谢你。

4

1 回答 1

1

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

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

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

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

于 2013-05-23T20:59:53.357 回答