1.
利用批处理文件来自动映射
① 首先制作自动映射网络驱动器批处理文件;
② 利用Net Use命令,其基本格式如下:
NET USE
[devicename | *] [\\computername\sharename[\volume] [password | *]]
[/USER:[domainname\]username]
[/USER:[dotted domain name\]username]
[/USER:[username@dotted domain name]
[/SMARTCARD]
[/SAVECRED]
[[/DELETE] | [/PERSISTENT:{YES | NO}]]
其中,devicename是映射的盘符,自己定义,比如Z:、Y:等,如果为*,则每次创建都选择一个盘符;computername为所要映射的计算机名称,用其IP地址也可以;sharename为共享的文件夹;password为连接所需密码;username是连接该计算机的用户名;SAVECRED是否保存用户名和密码;PERSISTENT是否永久连接,YES或NO,示例如下:
@echo off
net use z: \\Server\sharefile "" /user:"guest" /persistent:no
即映射\\Server\sharefile到Z:盘,用户名为Guest,密码为空
③ 制作步骤如下:
首先定义一个txt文件,然后修改其扩展名为bat,比如NetMapping.bat;接着编辑这个批处理文件,写入如下命令:
@echo off
net use z: \\Server\sharefile "" /user:"guest" /persistent:no
根据需要修改要连接的计算机名称,共享文件名,登陆用户名和密码,还有定义的盘符。
再接着有几种执行方式,最简单的方式是将这个批处理文件放在“启动”项里,用户每次注销或重启计算机都会自动映射网络驱动器,但是如果Z:映射的已经存在,则不再创建。
2.
利用
API
函数来自动映射网络驱动器
首先包含所需lib库和头文件,即mpr.lib 和
#i nclude <winnetwk.h>
① 判断映射网络驱动器路径是否存在,需要包含#i nclude <io.h>
CString strTempath = _T("z:");
if (_access(strTempath,0) != 0) //没有该文件夹
{
MessageBox("Z:不存在!");
}
② 如果存在,则先断开其连接
char remotePath[256];
CString strRemote = _T("\\\\Server\\sharefile");
DWORD len = strRemote.GetLength();
sprintf(remotePath, strRemote,len);
//首先删除网络连接
DWORD retCancel = WNetCancelConnection2(remotePath,0,TRUE); //强行断开
if (retCancel != NO_ERROR)
{
MessageBox("断开网络映射失败!");
}
③ 自动创建映射网络驱动器
NETRESOURCE NetR;
NetR.dwScope = RESOURCE_GLOBALNET;
NetR.dwType = RESOURCETYPE_DISK;
NetR.dwDisplayType = RESOURCEDISPLAYTYPE_SHARE;
NetR.dwUsage = RESOURCEUSAGE_CONNECTABLE;
NetR.lpLocalName = "Z:"; //盘符可以修改
NetR.lpRemoteName = "\\\\ Server\\sharefile "; //要映射的共享文件
NetR.lpComment = "自动创建映射网络驱动器";
NetR.lpProvider = "";
DWORD ret = WNetAddConnection2(&NetR,"","guest",NULL);
if (ret == ERROR_NETWORK_UNREACHABLE)
{
MessageBox("网络不通!");
}
if (ret == ERROR_ALREADY_ASSIGNED)
{
MessageBox("此网络映射已经存在!");
}
if (NO_ERROR != ret)
{
MessageBox("自动映射不成功!");
}
3.
解决映射网络驱动器自动断线问题
映射的网络驱动器在一段时间自动断开,是由于服务器服务自动断开连接功能的默认超时期限造成的,我们可以通过以下方法来更改断开时间。
⑴使用注册表编辑器增加默认超时期限。
A、在注册表中找到并单击下面的注册表项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters
B、 在右窗格中,单击值 autodisconnect,然后在“编辑”菜单上单击“修改”。如果值 autodisconnect 不存在,请按照下列步骤操作: 在“编辑”菜单上,指向“新建”,然后单击“REG_DWORD”。
C 键入 autodisconnect,然后按 ENTER 键。
D、 单击“十六进制”。 在“数值数据”框中键入 ffffffff,然后单击“确定”。
⑵ 更改默认超时期限
A、打开命令窗口,键入net config server /autodisconnect:number命令行,然后按 ENTER 键
(其中 number 是您希望让服务器在断开映射的网络驱动器之前等待的分钟数。此命令的最大值是 65535。)
B、如果将自动断开连接值设置为 0,并不表示关闭了自动断开功能,而是表示仅在闲置几秒钟之后服务器服务就会断开映射的网络驱动器。
C、如要关闭自动断开连接功能,请打开命令窗口,键入net config server /autodisconnect:-1命令,然后按 ENTER 键
4.获取映射网络连接的信息
char remotePath[256];
CString strLocal = _T("z:");
char local[10];
sprintf(local,strLocal, strLocal.GetLength());
DWORD remotelen = 256;
DWORD retGet = WNetGetConnection(strLocal,remotePath,&remotelen);
其中,remotePath返回所指定的共享连接路径。