自动映射网络驱动器


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返回所指定的共享连接路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值