我写了一些读/写东西的代码......
我想添加一个读取/写入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,但我想与平台无关。
谢谢。
答案 0 :(得分:1)
我发现我可以检查权限的唯一方法是尝试...抓住文件存在调用的检查。
如果尝试失败,则表示我没有权限,可以调用系统(“Net Use ...”)
这样,即使我读/写10,000个文件,我也只需要登录一次......
我不喜欢我必须使用try ... catch的事实,如果有更好的方法,我会找到它,我会更新 - 如果有人知道更好的方法,请让我知道。