1.保存共享路径和密码;操作过程网上很多。
2.代码,本人适用,作为参考
void CBSMessageProcess::SetConnect(const char* LocalName,const char* RemoteName,const char* UserName,const char* Password)
{
//将8字节字符转化为16字节
int length1 = MultiByteToWideChar(CP_ACP,0,LocalName,-1,NULL,0);
int length2 = MultiByteToWideChar(CP_ACP,0,RemoteName,-1,NULL,0);
int length3 = MultiByteToWideChar(CP_ACP,0,UserName,-1,NULL,0);
int length4 = MultiByteToWideChar(CP_ACP,0,Password,-1,NULL,0);
WCHAR SzLocalName[20],SzRemoteName[100],SzUserName[20],SzPassWord[20];
MultiByteToWideChar(CP_ACP,0,LocalName,-1,SzLocalName,length1);
MultiByteToWideChar(CP_ACP,0,RemoteName,-1,SzRemoteName,length2);
MultiByteToWideChar(CP_ACP,0,UserName,-1,SzUserName,length3);
MultiByteToWideChar(CP_ACP,0,Password,-1,SzPassWord,length4);
//结构体赋值
NETRESOURCE net;
net.dwScope = RESOURCE_GLOBALNET; //
net.dwType = RESOURCETYPE_ANY;
net.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE;
net.dwUsage = RESOURCEUSAGE_CONNECTABLE;
net.lpLocalName = SzLocalName;
net.lpRemoteName = SzRemoteName;
net.lpComment = NULL;
net.lpProvider = NULL;
//调用创建连接函数
DWORD ANY = WNetAddConnection2(&net, NULL, NULL, CONNECT_UPDATE_PROFILE);
if( ANY== NO_ERROR )
{
printf("映射网络驱动器成功!");
}
else
{
printf("映射网络驱动器失败!");
}
}
void main()
{
const char* LocalName = "O:";
const char* RemoteName = "\\\\172.18.1.14\\system";
const char* UserName = "administrator";
const char* Password = "111111";
SetConnect(LocalName,RemoteName,UserName,Password);
vector<string> lstDrivers;
char szBuf[256] = {0};
GetLogicalDriveStringsA(256, szBuf);
char* pBuf = szBuf;
for(;*pBuf != '\0'; pBuf += strlen(pBuf) + 1)
{
UINT dwType = GetDriveTypeA(pBuf);
if(DRIVE_FIXED == dwType || DRIVE_REMOTE == dwType)
{
char szTmp2[30] = {0};
memcpy(szTmp2, pBuf, strlen(pBuf) - 1);
lstDrivers.push_back(string(szTmp2));
printf("%s",szTmp2);
}
}
}
上面的可以运行;还有几个问题需要解决。
1.账号密码没有起到作用,原因不详,要慢慢研究
2.windows服务程序开启下,没有在系统界面看到映射盘,原因不详