delphi实现映射和断开网络驱动器

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;
时间: 2024-10-10 00:02:41

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

Windows Server2012域用户映射网络驱动器

信息安全的今天,很多企业都在强调数据不落地,那么比较好的一种解决方案就是把用户的重要数据存放在公司文件服务器上,为了便于用户操作,一般可以映射网络驱动器的功能.如果用户数量比较少,使用手动的方法就可以.实现方法也很简单: 第一步,我们需要先到文件服务器上共享出一个共享夹,如下图所示: 然后,我们再到域控制器上,编辑用户属性,如下图所示,我们就拿张三开刀了: 在上图的配置界面,我们编辑主文件夹选项,映射的网络驱动器为Z:,当然,只要是没有使用的都可以,网络路径是:\\192.168.1.102\s

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

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

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

同一个局域网内,配置好了一台win7(假设计算机名为A)的共享文件夹,设置方法可以参考http://www.doudouxitong.com/guzhang/xitongjiqiao/2014/0829/3284.html. 配置好之后,局域网内的其他win7系统可以在“网络”里看到A计算机,并且可以访问设置的共享文件夹.但是win8的系统“网络”中却看不到A计算机,其实就差最后一步了,可以通过A计算机的IP来访问.例如A计算机的IP是192.168.1.100,打开“我的电脑”,或者win+R

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

也许很多朋友在做WEB项目的时候都会碰到这样一个需求: 当用户上传文件时,需要将上传的文件保存到另外一台专门的文件服务器. 要实现这样一个功能,有两种解决方案: 方案一.在文件服务器上新建一站点,用来接收上传的文件,然后保存. 方案二.将文件服务器的指定目录共享给WEB服务器,用来保存文件. 方案一不用多说,应该是很简单的了,将上传文件的FORM表单的ACTION属性指向文件服务器上的站点即可,我们来重点说下方案二. 也许你会说,其实方案二也很简单,在WEB服务器上做下磁盘映射,然后直接访问不就

关闭 window 7 映射网络驱动器后,打开里面任何文件的提弹出安全提示的功能

在使用虚拟机运行linux来做测试时,因为需要物理机与虚拟机需要共享文件,所以使用samba搭建了共享服务; 但是在window下打开通过网络驱动器共享成虚拟盘中的文件时,不管是打开txt这种无关运行权限的文件都弹出一个"我们无法验证创建此文件的人员. 是否确定要打开此文件"的安全提示确认提示.够烦人的;每次都需要使用右键来打开才能避开这个提示.郁闷.今天在google上找了一下,终于有了解决方案; 打开文件的提示见下图: 解决方案是: 打开ie浏览器,在站点安全上把这个映射路径加入安

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

CentOS虚拟机如何设置共享文件夹,并在Windows下映射网络驱动器? 转自这里 一.为什么要这么做? 最近在做Linux下的软件开发,但又想使用Windows下的编程工具“Source Insight”. 二.安装环境 本机系统:Windows 7 旗舰版 VMware:VMware Workstation 9.0 CentOS:CentOS 6.4 网络适配器设置为:NAT 转换 三.查看是否已经安装“samba” 命令:rpm -qa|grep samba 输出结果: samba-cl

临时和持久化的网络驱动器映射

临时创建一个网络驱动器映射: (New-Object -ComObject WScript.Network).MapNetworkDrive("Z:", "\\TEST-PC\USERS") 创建一个持久化的网络驱动器映射: # New-PSDrive 加上 -Persist 参数使得驱动器在 PowerShell 之外可见.# 要真正地创建一个永久的网络驱动器,请确保加上 -Scope Global./# 如果 New-PSDrive 在全局作用域范围之外运行(例

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

最近在使用映射网络驱动器的时候出现一个奇怪的现象.事情源于我在资源管理器里面映射了来自多个不同账号的网络驱动器.使用的是win10系统.映射不同账号的网络驱动器是不允许的.于是只能删掉其他账号和凭证重新映射.删除成功之后,发现还是不行.重启电脑或者重启explore之后发现可以了.但是资源管理器里面没有显示映射成功的驱动器.但是重新映射的时候发现那个驱动器是映射成功的. 于是进入CMD界面,采用net use命令查看,发现确实映射成功了,在CMD下还能访问到.但是在资源管理器是无法访问,也看不到

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

一.为什么要这么做? 最近在做Linux下的软件开发,但又想使用Windows下的编程工具“Source Insight”. 二.安装环境 本机系统:Windows 7 旗舰版 VMware:VMware Workstation 9.0 CentOS:CentOS 6.4 网络适配器设置为:NAT 转换 三.查看是否已经安装“samba” 命令:rpm -qa|grep samba 输出结果: samba-client-3.0.33-3.28-1.el5samba-common-3.0.33-3