分享

创建系统服务利用 WNetAddConnection2 映射网络共享目录

 行走在理想边缘 2018-07-02
const bool Manager::NetShareFoler(const string & strIPDir, const string & strUser, const string & strPwd)
{
    if(::PathFileExistsA(strIPDir.c_str())){
        return true;
    }
    //initialize MFC and print and error on failure
    if(!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)){
        CLog::Instance()->LOG_WriteLine(LOG_INFO_ERROR,
                "%s: 获取化 MFC 控件失败", __FUNCTION__);
        return false;
    }
    DWORD dwResult;  
    NETRESOURCE nr;
    memset(&nr, 0, sizeof(nr));
    nr.dwScope=RESOURCE_CONNECTED;
    nr.dwType=RESOURCETYPE_ANY;
    nr.dwDisplayType=RESOURCEDISPLAYTYPE_GENERIC;
    nr.dwUsage=RESOURCEUSAGE_CONNECTABLE;
    //nr.lpRemoteName = L"\\\\192.168.1.110\\test";
    CString cstr = CA2W(strIPDir.c_str());
    nr.lpRemoteName = cstr.GetBuffer();
     
    dwResult = WNetAddConnection2(&nr, CA2W(strPwd.c_str()),  CA2W(strUser.c_str()), CONNECT_UPDATE_PROFILE); 
    if(dwResult == ERROR_ALREADY_ASSIGNED){
        return false;
    }
    else if(dwResult == ERROR_DEVICE_ALREADY_REMEMBERED){
        return false;
    }
    else if(dwResult != NO_ERROR){
        return false;
    }
    //连接成功 可以像操作本地磁盘一样操作共享文件夹
    //::CopyFile();//直接使用此指令将文件得到相应的网络目录即可
    cstr.ReleaseBuffer();
    return true;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多