业务背景:

有时需要在用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. C Runtime Library 的来历
  2. bilibili怎么设置弹幕数量_python爬虫:bilibili弹幕爬取+词云生成
  3. java字符串元素置于最前_java_java编程常用技术(推荐),一:将String字符串放在最前面 - phpStudy...
  4. linux 下ip命令对比ifconfig命令
  5. c语言命名规则 [转载]
  6. Silverlight中如何获取当前xap文件的地址以及部署了当前xap的页面地址
  7. scrapy框架简介和基础应用
  8. 调试经验——使用VBA下载网络资源
  9. 如鹏网.Net三层架构 第四章代码生成器
  10. PADS——原理图的绘制
  11. 计算机网络抓包分析dns,DNS抓包分析详细教程
  12. Learning Conditioned Graph Structures for Interpretable Visual Question Answering论文解读
  13. 树莓派 arch linux,给树莓派安装ArchLinux
  14. 信息学奥赛一本通1055《判断闰年》C++方法+Python方法
  15. 数据备份:备份文件/文件夹怎么操作?
  16. 华为鸿蒙研发团队负责人,走进华为北研所:EMUI 11 背后的“人因研究”到底是什么?...
  17. 仓库设计之ER图箭头讲解
  18. 数字孪生智慧医院:构建三维医疗管控系统
  19. BZOJ 1814 Ural 1519 Formula 1
  20. oracle数据泵备份部分数据一例

热门文章

  1. 【离散数学】Quasi-truth assignment 、Independence of Axioms
  2. Android声明式UI框架 Litho 初探——基础使用
  3. java基本类型和封装类型区别及应用
  4. 360的声明腾讯要挟用户卸载360周总真有招啊!看看大家相信谁。
  5. php连接共享打印机实例,win10怎么连接共享打印机
  6. 如何测试pytorch-gpu版本和tensorflow-gpu版本是否安装成功,测试代码如下,在想要测试的环境中将两段代码分别输入测试即可
  7. 【Python正则表达式】网址合法性检测
  8. 这个世界上最重要的人是你自己
  9. 汇总微服务架构落地的6种java微服务框架
  10. PN外加电场后电场变化