映射网络驱动器

实现原理

//映射网络驱动器
void CWangshanglinjuDlg::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 CWangshanglinjuDlg::DisConnectDirect(const char *localname)
{

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

你可能感兴趣的:(映射网络驱动器)