type   TNetDiskMapper=class

  private
FNetResource: TNetResource;
FUserName,FPassWord:PWideChar;
public
constructor Create(DriveName,ShareURI,UserName,Password:PWideChar);
destructor Destory();
function ConnectDiskMap:boolean;
function disConnectDiskMap:boolean;
end; var NetDiskMap: TNetDiskMapper; { TNetDiskMapper } constructor TNetDiskMapper.Create(DriveName, ShareURI, UserName,
Password: PWideChar);
begin
FNetResource.dwType := RESOURCETYPE_DISK{磁盘资源};
FNetResource.lpLocalName :=driveName { 指定本地设备 };
FNetResource.lpRemoteName := PChar(ShareURI) { 指定远程网络名 };
FNetResource.lpProvider := nil { 指定提供网络资源的供应商。如为空,则表示供应商未知。 };
FUserName:=UserName { 远程资源的用户名 };
FPassword:=Password { 远程资源的口令 };
end; function TNetDiskMapper.ConnectDiskMap: boolean;
begin

{ WNetAddConnection2 的参数说明:

dwFlags标志位用于指定登录时是否重新连接(0时表示不重新连接,CCONNECT_UPDATE_PROFILE登录时重新连接)。
}

   result:=false;
case WNetAddConnection2(FNetResource,FPassword,FUserName,CONNECT_UPDATE_PROFILE) of
NO_ERROR:begin result:=true; ShowMessage('映射成功') ; end;
ERROR_ACCESS_DENIED: showmessage('Access is denied.');
ERROR_ALREADY_ASSIGNED:ShowMessage('The device specified in the lpLocalName parameter is already connected.');
ERROR_BAD_DEV_TYPE: ShowMessage('The device type and the resource type do not match.');
ERROR_BAD_DEVICE: ShowMessage('The value specified in lpLocalName is invalid');
ERROR_BAD_NET_NAME: ShowMessage('The value specified in the lpRemoteName parameter is not valid or cannot be located.');
ERROR_BAD_PROFILE : ShowMessage(' The user profile is in an incorrect format.') ;
ERROR_CANNOT_OPEN_PROFILE : ShowMessage(' The system is unable to open the user profile to process persistent connections. ');
ERROR_DEVICE_ALREADY_REMEMBERED : ShowMessage('An entry for the device specified in lpLocalName is already in the user profile.') ;
ERROR_EXTENDED_ERROR :ShowMessage('A network-specific error occurred. To get a description of the error, use the WNetGetLastError function. ');
ERROR_INVALID_PASSWORD:ShowMessage(' The specified password is invalid. ');
ERROR_NO_NET_OR_BAD_PATH:ShowMessage(' The operation cannot be performed because either a network component is not started or the specified name cannot be used.');
ERROR_NO_NETWORK:ShowMessage(' The network is not present. ');
else
ShowMessage('其他意外终止!');
end;
end; destructor TNetDiskMapper.Destory;
begin
disConnectDiskMap;
end; function TNetDiskMapper.disConnectDiskMap: boolean;
begin
if NO_ERROR= WNetCancelConnection2(FNetResource.lpLocalName,CONNECT_UPDATE_PROFILE,True) then
begin
result:=true;
end
else
result:=false;
end; procedure TForm1.Button1Click(Sender: TObject);
begin
//映射网络驱动器
NetDiskMap:=TNetDiskMapper.Create('Z:','\\127.0.0.1\2016年安规调考',nil,nil);
showmessage(booltostr(NetDiskMap.ConnectDiskMap,true));
end; procedure TForm1.Button2Click(Sender: TObject);
begin
//断开网络驱动器 if assigned(NetDiskMap) and ( NetDiskMap<>nil) then
showmessage(booltostr(NetDiskMap.disConnectDiskMap,true));
end;

delphi实现映射和断开网络驱动器的更多相关文章

  1. win8访问win7中的共享文件夹 映射网络驱动器

    同一个局域网内,配置好了一台win7(假设计算机名为A)的共享文件夹,设置方法可以参考http://www.doudouxitong.com/guzhang/xitongjiqiao/2014/082 ...

  2. C#映射网络驱动器

    using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential)] public class NetResource ...

  3. serv-u中如何映射网络驱动器

    用一台机器作服务器,但硬盘空间不足,想通过影射网络驱动器来实现ftp的空间扩容! 如何映射网络硬盘或文件? 首先打开我的电脑--工具选项--映射网络驱动器: 如图示: 在文件夹输入映射路径:\\XXX ...

  4. CentOS虚拟机如何设置共享文件夹,并在Windows下映射网络驱动器?

    一.为什么要这么做? 最近在做Linux下的软件开发,但又想使用Windows下的编程工具“Source Insight”. 亲测有效.  要注意查看smb.conf.example,centos7的 ...

  5. [转]CentOS虚拟机如何设置共享文件夹,并在Windows下映射网络驱动器?

    CentOS虚拟机如何设置共享文件夹,并在Windows下映射网络驱动器? 转自这里 一.为什么要这么做? 最近在做Linux下的软件开发,但又想使用Windows下的编程工具“Source Insi ...

  6. Windows映射网络驱动器提示错误

    问题描述:Windows映射网络驱动器的时候,提示文件和打印机共享资源处于联机状态未对连接尝试检测到做出响应 解决方法:不同情况可能不一样,我的原因是,映射的Linux,防火墙处于开启状态,关闭了就可 ...

  7. windows 10的资源管理器不显示映射的网络驱动器怎么办?

    最近在使用映射网络驱动器的时候出现一个奇怪的现象.事情源于我在资源管理器里面映射了来自多个不同账号的网络驱动器.使用的是win10系统.映射不同账号的网络驱动器是不允许的.于是只能删掉其他账号和凭证重 ...

  8. ASP.NET访问网络驱动器(映射磁盘)

    也许很多朋友在做WEB项目的时候都会碰到这样一个需求: 当用户上传文件时,需要将上传的文件保存到另外一台专门的文件服务器. 要实现这样一个功能,有两种解决方案: 方案一.在文件服务器上新建一站点,用来 ...

  9. 在WIN7、WIN10操作系统用WebDAV映射网络驱动器需要的操作

    如果WebDAV不是https的,win7默认是添加不上的,需要修改注册表使得WIN7同时支持http和https,默认只支持https,然后重启服务 某一服务器,配置好了WebDAV.用苹果电脑作客 ...

随机推荐

  1. HBase的BlockCache

    BlockCache 首先要明白Block,在HBase里面存储的最小单元:在memstore向硬盘刷的时候,如果目标block的大小+size之后大于MAX_SIZE,将会新创建一个block来存储 ...

  2. VS2010/MFC编程入门系列教程 (转)

    http://www.jizhuomi.com/school/  鸡啄米编程课堂 http://www.jizhuomi.com/software/257.html http://blog.csdn. ...

  3. bzoj 3674 可持久化并查集加强版——可持久化并查集

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3674 用主席树维护 fa[ ]  和 siz[ ] .改 fa[ ] 和改 siz[ ] 都 ...

  4. go test 初始化--- TestMain的使用

    go test 功能,提高了开发和测试的效率. 有时会遇到这样的场景: 进行测试之前需要初始化操作(例如打开连接),测试结束后,需要做清理工作(例如关闭连接)等等.这个时候就可以使用TestMain( ...

  5. Sql Server Report Service 的部署问题

    近期在研究SSRS部署问题,因为以前也用到过SSRS报表,但当时开发的报表是有专门的集成系统的,不需要我自己去部署,所以对这一块的部署也不熟悉,我记得当时我是直接开发出一个SSRS 报表,然后会通过自 ...

  6. Android启动过程中背景图片显示

    转自:http://blog.csdn.net/zhangzhikaixinya/article/details/17001321 大部分Android App启动过程中,都会设置一个背景图片,直到A ...

  7. BASIC-30_蓝桥杯_阶乘计算

    题目: 问题描述 输入一个正整数n,输出n!的值. 其中n!=1*2*3*…*n. 算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法.使用一个数组A来表示一个大整数a,A ...

  8. 分布式一致性协议之:Gossip(八卦)算法

    Gossip算法因为Cassandra而名声大噪,Gossip看似简单,但要真正弄清楚其本质远没看起来那么容易.为了寻求Gossip的本质,下面的内容主要参考Gossip的原始论文:<<E ...

  9. python3+selenium3.13的简单操作

    1.浏览器 1.1 浏览器窗口大小位置 driver.set_window_size(self, width, height, windowHandle) 将某个窗口设置为固定大小 driver.se ...

  10. Win10巧用自带输入法轻松打出特殊字符

    给电脑输入信息时,如果要用上键盘上没有的特殊符号,那就为难了.其实,在Win10中,自带的微软拼音就能让你轻松输入键盘上没有的符号.下面来看看Win10如何输入特殊符号. 微软拼音不但中文输入智能化做 ...