| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 
 | bool sys::mount2(const std::string& szSource, const std::string& szTarget, const std::string& szUser, const std::string& szPwd, std::string& err){
 bool res = false;
 do
 {
 #ifdef WIN32
 
 #ifdef UNICODE
 std::wstring source = mm::Charset::ANSIToUnicode(szSource.c_str());
 std::wstring target = mm::Charset::ANSIToUnicode(szTarget.c_str());
 std::wstring name = mm::Charset::ANSIToUnicode(szUser.c_str());
 std::wstring pwd = mm::Charset::ANSIToUnicode(szPwd.c_str());
 if ('\\'==source[source.length()-1])
 {
 source[source.length()-1] = 0;
 }
 #else
 std::string source=szSource;
 std::string target=szTarget;
 std::wstring name= szUser;
 std::string pwd=szPwd;
 
 #endif
 DWORD dwRetVal;
 NETRESOURCE nr;
 DWORD dwFlags;
 memset(&nr, 0, sizeof(NETRESOURCE));
 nr.dwType = RESOURCETYPE_ANY;
 nr.lpLocalName = (LPTSTR)(LPCTSTR)target.c_str();
 nr.lpRemoteName = (LPTSTR)(LPCTSTR)source.c_str();
 nr.lpProvider = NULL;
 dwFlags = CONNECT_UPDATE_PROFILE;
 dwRetVal = ::WNetAddConnection2(&nr, pwd.c_str(), name.c_str(), dwFlags);
 if (dwRetVal != NO_ERROR)
 {
 LOG_ERROR("WNetAddConnection2 dwRetVal=%ld", dwRetVal);
 break;
 }
 #endif
 res = true;
 } while (0);
 
 return res;
 }
 
 |