我写了一些读/写东西的代码......
我想添加一个选项来读/写 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/