c++映射网络驱动器

c++映射网络驱动器

c++映射网络驱动器

mount

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;
}

umount


bool sys::umount2(const std::string& szTarget, std::string& err)
{
    bool res = false;
    do
    {

#ifdef WIN32

#ifdef UNICODE
        std::wstring path = mm::Charset::ANSIToUnicode(szTarget.c_str());
#else
        std::string path = mm::Charset::ANSIToUnicode(szTarget);
#endif // 

        if (::PathFileExists(path.c_str()))
        {
            DWORD dwRetVal = ::WNetCancelConnection2(path.c_str(), 1, true);
            if (NO_ERROR != dwRetVal)
            {
                LOG_ERROR("WNetCancelConnection2 dwRetVal=%ld", dwRetVal);
                break;
            }
        }

#endif // 


        res = true;

    } while (0);


    return res;
}

参考:

PathFileExists

WNetAddConnection2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值