映射网络驱动器(共享路经)
调用WINDOWS API函数实现映射网络驱动器
首先引入命名空间:
using System.Runtime.InteropServices;
映射对象:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
[StructLayout(LayoutKind.Sequential)]
public class NetResource
{
public int dwScope;
public int dwType;
public int dwDisplayType;
public int dwUsage;
public string LocalName;
public string RemoteName;
public string Comment;
public string provider;
}
public class Pathing
{
[DllImport("mpr.dll", CharSet = CharSet.Ansi)]
private static extern int WNetAddConnection2(NetResource netResource, string password, string username, int flag);
[DllImport("mpr.dll",CharSet=CharSet.Ansi)]
private static extern int WNetCancelConnection2(string lpname, int flag, bool force);
/// <summary>
/// 映射网络驱动器
/// </summary>
/// <param name="localName">本地盘符</param>
/// <param name="remotePath">远程路经 如\\\\172.18.118.106\\f</param>
/// <param name="userName">远程服务器用户名</param>
/// <param name="password">远程服务器密码</param>
/// <returns>true映射成功,false映射失败</returns>
public static bool WNetAddConnection2(string localName,string remotePath,string userName,string password)
{
NetResource netResource = new NetResource();
netResource.dwScope = 2;
netResource.dwType = 0x1;
netResource.dwDisplayType = 3;
netResource.dwUsage = 1;
netResource.LocalName = localName;
netResource.RemoteName = remotePath;
netResource.provider = null;
int ret = WNetAddConnection2(netResource, password, userName, 0);
if (ret == 0)
return true;
return false;
}
/// <summary>
/// 断开网路驱动器
/// </summary>
/// <param name="lpName">映射的盘符</param>
/// <param name="flag">true时如果打开映射盘文件夹,也会断开,返回成功 false时打开映射盘文件夹,返回失败</param>
/// <returns></returns>
public static bool WNetCancelConnection2(string lpName,bool flag)
{
int ret = WNetCancelConnection2(lpName, 0, flag);
if (ret == 0)
return true;
return false;
}
}
public class NetResource
{
public int dwScope;
public int dwType;
public int dwDisplayType;
public int dwUsage;
public string LocalName;
public string RemoteName;
public string Comment;
public string provider;
}
public class Pathing
{
[DllImport("mpr.dll", CharSet = CharSet.Ansi)]
private static extern int WNetAddConnection2(NetResource netResource, string password, string username, int flag);
[DllImport("mpr.dll",CharSet=CharSet.Ansi)]
private static extern int WNetCancelConnection2(string lpname, int flag, bool force);
/// <summary>
/// 映射网络驱动器
/// </summary>
/// <param name="localName">本地盘符</param>
/// <param name="remotePath">远程路经 如\\\\172.18.118.106\\f</param>
/// <param name="userName">远程服务器用户名</param>
/// <param name="password">远程服务器密码</param>
/// <returns>true映射成功,false映射失败</returns>
public static bool WNetAddConnection2(string localName,string remotePath,string userName,string password)
{
NetResource netResource = new NetResource();
netResource.dwScope = 2;
netResource.dwType = 0x1;
netResource.dwDisplayType = 3;
netResource.dwUsage = 1;
netResource.LocalName = localName;
netResource.RemoteName = remotePath;
netResource.provider = null;
int ret = WNetAddConnection2(netResource, password, userName, 0);
if (ret == 0)
return true;
return false;
}
/// <summary>
/// 断开网路驱动器
/// </summary>
/// <param name="lpName">映射的盘符</param>
/// <param name="flag">true时如果打开映射盘文件夹,也会断开,返回成功 false时打开映射盘文件夹,返回失败</param>
/// <returns></returns>
public static bool WNetCancelConnection2(string lpName,bool flag)
{
int ret = WNetCancelConnection2(lpName, 0, flag);
if (ret == 0)
return true;
return false;
}
}