/******************'*********************************************
*函 数 名: ConnectShareDir
*参 数: TCHAR tcUserName[], 远程登录用户名
TCHAR tcUserPwd[], 远程登录密码
TCHAR szShareSource[] 共享文件夹名称
*返回值: bool 成功返回true 失败放回false
*函数功能: 建立本地远程登录映射
*****************************************************************/
bool ConnectShareDir(TCHAR tcUserName[], TCHAR tcUserPwd[], TCHAR szShareSource[]);
bool ConnectShareDir(TCHAR szUserName[], TCHAR szUserPwd[], TCHAR szShareSource[])
{
bool bRes = true;
NETRESOURCE net_Resource;
net_Resource.dwDisplayType = RESOURCEDISPLAYTYPE_DIRECTORY;
net_Resource.dwScope = RESOURCE_CONNECTED;
net_Resource.dwType = RESOURCETYPE_ANY;
net_Resource.dwUsage = 0;
net_Resource.lpComment = TEXT("");
net_Resource.lpLocalName = TEXT("C:"); //映射成本地驱动器C:
net_Resource.lpProvider= NULL;
net_Resource.lpRemoteName = szShareSource;//TEXT("\\\\172.230.240.111\\ShareDir"); // \\servername\共享资源名
DWORD dwFlags = CONNECT_UPDATE_PROFILE;
DWORD dw = WNetAddConnection2(&net_Resource, szUserPwd, szUserName, dwFlags);
switch(dw)
{
case ERROR_SUCCESS:
ShellExecute(NULL, TEXT("open"), TEXT("C:"), NULL, NULL, SW_HIDE);
OutputDebugString(_T("连接共享主机 ERROR_SUCCESS\r\n"));
bRes = true;
break;
case ERROR_ACCESS_DENIED:
OutputDebugString(_T("连接共享主机没有权访问 ERROR_ACCESS_DENIED\r\n"));
bRes = false;
break;
case ERROR_ALREADY_ASSIGNED:
ShellExecute(NULL, TEXT("open"), TEXT("C:"), NULL, NULL, SW_HIDE);
OutputDebugString(_T("连接共享主机已经存在 ERROR_ALREADY_ASSIGNED\r\n"));
bRes = true;
break;
case ERROR_INVALID_ADDRESS:
OutputDebugString(_T("连接共享主机IP地址无效 ERROR_INVALID_ADDRESS\r\n"));
bRes = false;
break;
case ERROR_NO_NETWORK:
OutputDebugString(_T("连接共享主机网络不可达 ERROR_NO_NETWORK\r\n"));
bRes = false;
break;
default:
bRes = false;
}
return bRes;
}
访问时
CFile file;
file.Open(_T("\\\\172.230.240.111\\ShareDir\\13_1.jpg"), CFile::modeReadWrite||CFile::modeCreate);
DWORD dwError = GetLastError();
file.Close();
本地测试可能存在找不到网络路径 dwError为53的错误
上述方式,亲测,在使用的时候对密码和用户名似乎不生效,只能是不需要用户名和密码的共享才可以访问;下面方式写到程序中才能保证用户名密码生效
net use \\172.18.0.15\sharedDoc password /user:administrator
net use * /del /y 删除