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; } }
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);
很简单又方便
其实命令很有效的,2k号称大部分功能都可以用命令行实现.
我以前用过一个修改文件安全属性,即权限的命令cacls.比较古怪.呵呵
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;
}
}