2013-05-17 129 views
1

我編寫了一段代碼,讀/寫的東西...讀/寫文件與UNC路徑 - 在C++

我想補充一個選項,讀/寫的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 ::文件系統::狀態爲了什麼 ?看文檔,它似乎可以告訴我,如果我有一個普通的文件,或目錄...但我如何檢查我是否有正確的權限

有沒有辦法實際發送用戶名和密碼?

編輯:發現我可以打電話

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

我發現我可以檢查權限的唯一方法是嘗試...抓住周圍的文件檢查存在調用。

如果嘗試失敗,這意味着我沒有權利,可以調用系統(「網絡使用...」)

這樣,我只需要登錄一次,即使我讀/寫10,000個文件...

我不喜歡這樣的事實,即我必須使用try ... catch,如果有更好的方法,我會找到它,我會更新 - 如果有人知道更好的方法,請讓我知道。