正在载入。。。。。。
用户公告
正在载入。。。。。。
时间记忆
正在载入。。。。。。
登录
正在载入。。。。。。
最新日志
正在载入。。。。。。
最新回复
正在载入。。。。。。
最新留言
正在载入。。。。。。
加入群组
正在载入。。。。。。
我的好友
正在载入。。。。。。
我的相册
站点信息
正在载入。。。。。。
自动映射网络驱动器

   今天实验了映射网络驱动器,整理出来,总结在此。

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是否永久连接,YESNO,示例如下:

@echo off

net use z: \\Server\sharefile  "" /user:"guest" /persistent:no

即映射\\Server\sharefileZ:盘,用户名为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返回所指定的共享连接路径。

 

   边学边积累~!

 

发表评论:
正在载入。。。。。。
Copyright © 2006.09.20 design                                        生活因感动而精彩,理想在创造中放飞--水中月