怎样用程序实现将网络上共享的磁盘映射到本地?完成WINDOWS本身自带的功能。

解决方案 »

  1.   

    ---- 建立网络驱动器的映射。
    void CMountDlg::OnMountButton()
    // TODO: Add your control notification
    handler code here
    char netpath[MAX_PATH]; //输入的网络路径
    m_NetpathEdit.GetWindowText(netpath, sizeof(netpath));
    char drv[MAX_PATH]; //本地的驱动器盘符
    m_DriveEdit.GetWindowText(drv, sizeof(drv));
    NETRESOURCE netres;
    netres.dwScope=RESOURCE_GLOBALNET;
    netres.dwType=RESOURCETYPE_ANY;
    netres.dwDisplayType=RESOURCEDISPLAYTYPE_GENERIC;
    netres.dwUsage=RESOURCEUSAGE_CONNECTABLE;
    netres.lpLocalName=drv;
    netres.lpRemoteName=netpath;
    netres.lpComment=NULL;
    netres.lpProvider=NULL;
    DWORD rslt=WNetAddConnection2(&netres, NULL, NULL, 0);
    CString str;
    str.Format("WNetAddConnection2()
    return code=%d", rslt);
    MessageBox(str);
    取消网络驱动器的映射
    void CMountDlg::OnUnmountButton()
    // TODO: Add your control notification handler
    code here
    char drv[MAX_PATH]; //本地的驱动器盘符
    m_DriveEdit.GetWindowText(drv, sizeof(drv));
    DWORD rslt=WNetCancelConnection2(drv, 0, FALSE);
    CString str;
    str.Format("WNetCancelConnection2() return code=%d",
    rslt);
    MessageBox(str);
      

  2.   

    给你个简单办法syste("net use \\neighbour\e$ passwd /user:domain\user");
    很简单又方便
      

  3.   

    应该是system() 就是调用命令完成
      

  4.   

    用过好多次啦.呵呵.
    其实命令很有效的,2k号称大部分功能都可以用命令行实现.
    我以前用过一个修改文件安全属性,即权限的命令cacls.比较古怪.呵呵
      

  5.   

    //映射网络驱动器
    void CNeighborDlg::Redirect(const char *LocalName,const char *RemoteName,const char * UserName,const char *Password)
    {
    NETRESOURCE nr;
    DWORD res; char szUserName[32],
    szPassword[32],
    szLocalName[32],
    szRemoteName[MAX_PATH]; strcpy(szUserName,UserName);
    strcpy(szPassword,Password);
    strcpy(szLocalName,LocalName);
    strcpy(szRemoteName,RemoteName);

    nr.dwType = RESOURCETYPE_ANY;
    nr.lpLocalName = szLocalName;
    nr.lpRemoteName = szRemoteName;
    nr.lpProvider = NULL;
    //
    res = WNetAddConnection2(&nr, szPassword, szUserName, FALSE);
    //
    switch(res)
    {
    case NO_ERROR:
    AfxMessageBox("网络驱动器映射成功");
    break;
    case ERROR_BAD_PROFILE:
    AfxMessageBox("ERROR_BAD_PROFILE");
    break;
    case ERROR_CANNOT_OPEN_PROFILE:
    AfxMessageBox("ERROR_CANNOT_OPEN_PROFILE");
    break;
    case ERROR_DEVICE_IN_USE:
    AfxMessageBox("ERROR_DEVICE_IN_USE");
    break;
    case ERROR_EXTENDED_ERROR:
    AfxMessageBox("ERROR_EXTENDED_ERROR");
    break;
    case ERROR_NOT_CONNECTED:
    AfxMessageBox("ERROR_NOT_CONNECTED");
    break;
    case ERROR_OPEN_FILES:
    AfxMessageBox("ERROR_OPEN_FILES");
    break;
    default:
    AfxMessageBox("未知错误,可能需要帐号和密码认证,或者该主机或文件不存在");
    break;
    }
    return;
    }//断开网络驱动器映射
    void CNeighborDlg::DisConnectDirect(const char * localname)
    {
    // CHAR  szDeviceName[80]; 
    // DWORD cchBuff = sizeof(szDeviceName); 
    /*
    dwResult = WNetGetConnection(localname, 
    (LPSTR) szDeviceName, 
    &cchBuff); 
    */ DWORD dwResult;

    dwResult = WNetCancelConnection2(localname, 
        CONNECT_UPDATE_PROFILE, // remove connection from profile 
        FALSE);                 // fail if open files or jobs 
    switch(dwResult)
    {
    case NO_ERROR:
    AfxMessageBox("成功断开网络驱动器映射");
    break;
    case ERROR_BAD_PROFILE:
    AfxMessageBox("ERROR_BAD_PROFILE");
    break;
    case ERROR_CANNOT_OPEN_PROFILE:
    AfxMessageBox("ERROR_CANNOT_OPEN_PROFILE");
    break;
    case ERROR_DEVICE_IN_USE:
    AfxMessageBox("ERROR_DEVICE_IN_USE");
    break;
    case ERROR_EXTENDED_ERROR:
    AfxMessageBox("ERROR_EXTENDED_ERROR");
    break;
    case ERROR_NOT_CONNECTED:
    AfxMessageBox("ERROR_NOT_CONNECTED");
    break;
    case ERROR_OPEN_FILES:
    AfxMessageBox("ERROR_OPEN_FILES");
    break;
    default:
    AfxMessageBox("未知错误");
    break;
    }
    }
      

  6.   

    WNetAddConnection2/WNetCancelConnection2。