C#中访问网盘的方法
业务背景:
有时需要在用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#中访问网盘的方法相关推荐
- 20220413安装旧版本的百度网盘的方法
20220413安装旧版本的百度网盘的方法 您的电脑已安装版本更高的百度网盘客户端, 如需降级安装,请先卸载当前版本. 新电脑装最新的百度网盘之后,感觉不适应,降级的时候出现这个问题了! 人不如旧,衣 ...
- Android盒子看百度云,【沙发管家】智能电视和电视盒子如何使用百度网盘的方法!看你想看的片子!...
原标题:[沙发管家]智能电视和电视盒子如何使用百度网盘的方法!看你想看的片子! 很多小伙伴把重要的视频资料放到了百度网盘里,想在智能电视或者电视盒子上观看.不过百度网盘没有TV版本很是纠结,不过小伙伴 ...
- 【Groovy】编译时元编程 ( ASTTransformation#visit 方法中访问 Groovy 类、方法、字段、属性 | 完整代码示例及进行编译时处理的编译过程 )
文章目录 一.ASTTransformation#visit 方法中访问 Groovy 类.方法.字段.属性 二.完整代码示例及进行编译时处理的编译过程 1.Groovy 脚本 Groovy.groo ...
- php节点对象,JavaScript_JavaScript中访问节点对象的方法有哪些如何使用,JavaScript中访问节点对象的方法 - phpStudy...
JavaScript中访问节点对象的方法有哪些如何使用 JavaScript中访问节点对象的方法有哪些? var obj = document.getElementById('fdafda'); va ...
- 博客教程中百度网盘地址
博客中百度网盘地址: 链接:https://pan.baidu.com/s/1ncGK5fXMBmmkuZGbBSohBw 提取码:v67x 复制这段内容后打开百度网盘手机App,操作更方便哦 转载于 ...
- 115网盘linux 下载速度慢,linux vps 上 下载115网盘 的方法
大多数童鞋买的vps都是只支持linux系统的,因为版权的问题,windows系统的vps价格上面要贵一些.但是,遇到要下载网盘文件时,没有装桌面只有shell的linux vps就表示压力大了,幸好 ...
- 全网最简单的百度网盘提速方法!!!!
全网最简单的百度网盘提速方法!! PanDownload 百度网盘是一个比较常用的软件啦,不管是看剧还是下文件基本上都离不开百度网盘,但是每次想要下文件的时候因为太穷冲不起会员所以速度超级慢!!!在网 ...
- 教师资格证考试备考资料大合集(历年真题+常用考点+模拟试题+面试),共460份,987M,附件中为网盘链接
教师资格证考试备考资料大合集(历年真题+常用考点+模拟试题+面试),共460份,987M,附件中为网盘链接. 下载地址:https://download.csdn.net/download/mengc ...
- 【推荐】2022年环保行业研究报告产业发展前景市场投资行情分析白皮书(附件中为网盘地址,报告持续更新)
[推荐]2022年环保行业研究报告产业发展前景市场投资行情分析白皮书(附件中为网盘地址,报告持续更新),每月至少更新一次. 下载地址:https://download.csdn.net/downloa ...
最新文章
- C Runtime Library 的来历
- bilibili怎么设置弹幕数量_python爬虫:bilibili弹幕爬取+词云生成
- java字符串元素置于最前_java_java编程常用技术(推荐),一:将String字符串放在最前面 - phpStudy...
- linux 下ip命令对比ifconfig命令
- c语言命名规则 [转载]
- Silverlight中如何获取当前xap文件的地址以及部署了当前xap的页面地址
- scrapy框架简介和基础应用
- 调试经验——使用VBA下载网络资源
- 如鹏网.Net三层架构 第四章代码生成器
- PADS——原理图的绘制
- 计算机网络抓包分析dns,DNS抓包分析详细教程
- Learning Conditioned Graph Structures for Interpretable Visual Question Answering论文解读
- 树莓派 arch linux,给树莓派安装ArchLinux
- 信息学奥赛一本通1055《判断闰年》C++方法+Python方法
- 数据备份:备份文件/文件夹怎么操作?
- 华为鸿蒙研发团队负责人,走进华为北研所:EMUI 11 背后的“人因研究”到底是什么?...
- 仓库设计之ER图箭头讲解
- 数字孪生智慧医院:构建三维医疗管控系统
- BZOJ 1814 Ural 1519 Formula 1
- oracle数据泵备份部分数据一例
热门文章
- 【离散数学】Quasi-truth assignment 、Independence of Axioms
- Android声明式UI框架 Litho 初探——基础使用
- java基本类型和封装类型区别及应用
- 360的声明腾讯要挟用户卸载360周总真有招啊!看看大家相信谁。
- php连接共享打印机实例,win10怎么连接共享打印机
- 如何测试pytorch-gpu版本和tensorflow-gpu版本是否安装成功,测试代码如下,在想要测试的环境中将两段代码分别输入测试即可
- 【Python正则表达式】网址合法性检测
- 这个世界上最重要的人是你自己
- 汇总微服务架构落地的6种java微服务框架
- PN外加电场后电场变化