业务背景:

有时需要在用c#写的web服务或winform中访问网络盘上面的文件,需要用c#代码手动创建网盘。

方法:

用win api来实现连接网络盘,如果是在iis下面的web服务所连接的网盘,读写权限在iis下面有权访问,并且在windows下面

是不可见的。如果是在win下面所创建的在iis下面是没有权限访问题,下面就是原码。

1  先创建一个网盘的类文件WNetHelper


using System.Runtime.InteropServices;
using System.IO;
using System;
public class WNetHelper
{[DllImport("mpr.dll", EntryPoint = "WNetAddConnection2")]private static extern uint WNetAddConnection2(NetResource lpNetResource, string lpPassword, string lpUsername, uint dwFlags);[DllImport("Mpr.dll", EntryPoint = "WNetCancelConnection2")]private static extern uint WNetCancelConnection2(string lpName, uint dwFlags, bool fForce);[StructLayout(LayoutKind.Sequential)]public class NetResource{public int dwScope;public int dwType;public int dwDisplayType;public int dwUsage;public string lpLocalName;public string lpRemoteName;public string lpComment;public string lpProvider;}/// <summary>/// 为网络共享做本地映射/// </summary>/// <param name="username">访问用户名(windows系统需要加计算机名,如:comp-1/user-1)</param>/// <param name="password">访问用户密码</param>/// <param name="remoteName">网络共享路径(如://192.168.0.9/share)</param>/// <param name="localName">本地映射盘符</param>/// <returns></returns>public static uint WNetAddConnection(string username, string password, string remoteName, string localName){NetResource netResource = new NetResource();netResource.dwScope = 2;netResource.dwType = 1;netResource.dwDisplayType = 3;netResource.dwUsage = 1;netResource.lpLocalName = localName;netResource.lpRemoteName = remoteName.TrimEnd('/');uint result = WNetAddConnection2(netResource, password, username, 0);return result;}public static uint WNetCancelConnection(string name, uint flags, bool force){uint nret = WNetCancelConnection2(name, flags, force);return nret;}
}

2 调用创建网盘示例

 string picturePath1 = "";string picturePath2 = "";string NetRoot = "";string NetPath = "";string NetUser = "";string NetPSW = "";uint state = 0;NetRoot = ConfigurationManager.ConnectionStrings["NetRoot"].ConnectionString;NetPath = ConfigurationManager.ConnectionStrings["NetPath"].ConnectionString;NetUser = ConfigurationManager.ConnectionStrings["NetUser"].ConnectionString;NetPSW = ConfigurationManager.ConnectionStrings["NetPSD"].ConnectionString;picturePath1 = ConfigurationManager.ConnectionStrings["PicturePath1"].ConnectionString;picturePath2 = ConfigurationManager.ConnectionStrings["PicturePath2"].ConnectionString;if (!Directory.Exists(NetRoot)){//WNetHelper.WNetAddConnection(@"计算机名称\登录账户", "登录密码", @"映射路径", @"映射盘符名称"); state = WNetHelper.WNetAddConnection(NetUser, NetPSW, NetPath, NetRoot);}if (state.Equals(0)){}else{Console.WriteLine("添加网络驱动器错误,错误号:" + state.ToString());}

3 网盘建好后,就同本地盘一样的方法进行访问了。测试函数:

public string A_TEST_A(string file){string filepath = picturePath1 + file + ".jpg";if (File.Exists(filepath)){return filepath+"文件存在";}else{filepath = picturePath2 + file + ".jpg";if (File.Exists(filepath)){return filepath + "文件存在";}elsereturn filepath+"文件不存在";}}

C#中访问网盘的方法相关推荐

  1. 20220413安装旧版本的百度网盘的方法

    20220413安装旧版本的百度网盘的方法 您的电脑已安装版本更高的百度网盘客户端, 如需降级安装,请先卸载当前版本. 新电脑装最新的百度网盘之后,感觉不适应,降级的时候出现这个问题了! 人不如旧,衣 ...

  2. Android盒子看百度云,【沙发管家】智能电视和电视盒子如何使用百度网盘的方法!看你想看的片子!...

    原标题:[沙发管家]智能电视和电视盒子如何使用百度网盘的方法!看你想看的片子! 很多小伙伴把重要的视频资料放到了百度网盘里,想在智能电视或者电视盒子上观看.不过百度网盘没有TV版本很是纠结,不过小伙伴 ...

  3. 【Groovy】编译时元编程 ( ASTTransformation#visit 方法中访问 Groovy 类、方法、字段、属性 | 完整代码示例及进行编译时处理的编译过程 )

    文章目录 一.ASTTransformation#visit 方法中访问 Groovy 类.方法.字段.属性 二.完整代码示例及进行编译时处理的编译过程 1.Groovy 脚本 Groovy.groo ...

  4. php节点对象,JavaScript_JavaScript中访问节点对象的方法有哪些如何使用,JavaScript中访问节点对象的方法 - phpStudy...

    JavaScript中访问节点对象的方法有哪些如何使用 JavaScript中访问节点对象的方法有哪些? var obj = document.getElementById('fdafda'); va ...

  5. 博客教程中百度网盘地址

    博客中百度网盘地址: 链接:https://pan.baidu.com/s/1ncGK5fXMBmmkuZGbBSohBw 提取码:v67x 复制这段内容后打开百度网盘手机App,操作更方便哦 转载于 ...

  6. 115网盘linux 下载速度慢,linux vps 上 下载115网盘 的方法

    大多数童鞋买的vps都是只支持linux系统的,因为版权的问题,windows系统的vps价格上面要贵一些.但是,遇到要下载网盘文件时,没有装桌面只有shell的linux vps就表示压力大了,幸好 ...

  7. 全网最简单的百度网盘提速方法!!!!

    全网最简单的百度网盘提速方法!! PanDownload 百度网盘是一个比较常用的软件啦,不管是看剧还是下文件基本上都离不开百度网盘,但是每次想要下文件的时候因为太穷冲不起会员所以速度超级慢!!!在网 ...

  8. 教师资格证考试备考资料大合集(历年真题+常用考点+模拟试题+面试),共460份,987M,附件中为网盘链接

    教师资格证考试备考资料大合集(历年真题+常用考点+模拟试题+面试),共460份,987M,附件中为网盘链接. 下载地址:https://download.csdn.net/download/mengc ...

  9. 【推荐】2022年环保行业研究报告产业发展前景市场投资行情分析白皮书(附件中为网盘地址,报告持续更新)

    [推荐]2022年环保行业研究报告产业发展前景市场投资行情分析白皮书(附件中为网盘地址,报告持续更新),每月至少更新一次. 下载地址:https://download.csdn.net/downloa ...

最新文章

  1. 关于bitmap,为什么android会有bitmap
  2. MULE ESB中的一些值得关注的地方
  3. 可以分屏吗_LED透明屏分屏是怎么一回事?
  4. 窗口之间值、控件的传递
  5. webservice 服务器无法处理请求_Message Queue与WebService比较
  6. [emacs] 用 ido 或 anything 进行选择
  7. vbs获取程序窗体句柄_VBS调用windows api函数(postmessage)实现后台发送按键脚本...
  8. [运维笔记] - (命令).Windows server常用网络相关命令
  9. 使用mybaits遇见有大写的sql语句错误的bug分析
  10. 解决centos7 ssh连接慢的问题
  11. python 下载公众号文章_python如何导出微信公众号文章方法详解
  12. 网站Webshell大马密码极速暴力爆破工具-cheetah
  13. 博弈论——人生就是在博弈
  14. 百度地图坐标转换及跨域
  15. 10秒钟搞定圆柱齿轮设计所有课题
  16. thinkpad l470 一种键盘错乱解决方法
  17. 百练2801解题报告---填词
  18. 2022年中南大学计算机考研复试内容是什么
  19. 蓝奏云直链解析php,【带源码】新思路--蓝奏云直链解析
  20. 数据分享|PYTHON用决策树分类预测糖尿病和可视化实例

热门文章

  1. python内置函数之setattr() 函数
  2. Mac应用Drone Station结合普通游戏手柄让AR Drone飞起来
  3. 常见Dom操作有哪些?
  4. 如何注重物联网安全?守好物联网这3个薄弱攻击点
  5. 2020牛客寒假算法基础集训营3 A.牛牛的DRB迷宫I
  6. 安卓AudioBuffer流程
  7. VMware workstation虚拟机联网的方法
  8. 解惑 | 逆转录时到底要不要去除gDNA?
  9. 使用python发送邮件和企业微信
  10. Java算法一:汉诺塔