c#访问其他服务器的共享文件夹,C# 实现访问网络共享文件夹
C#实现访问网络共享文件夹,使用 WNetAddConnection2A 和
WNetCancelConnection2A。
在目标服务器建立共享文件夹,建立访问账号test;
public enum ERROR_ID
{
ERROR_SUCCESS = 0, // Success
ERROR_BUSY = 170,
ERROR_MORE_DATA = 234,
ERROR_NO_BROWSER_SERVERS_FOUND = 6118,
ERROR_INVALID_LEVEL = 124,
ERROR_ACCESS_DENIED = 5,
ERROR_INVALID_PASSWORD = 86,
ERROR_INVALID_PARAMETER = 87,
ERROR_BAD_DEV_TYPE = 66,
ERROR_NOT_ENOUGH_MEMORY = 8,
ERROR_NETWORK_BUSY = 54,
ERROR_BAD_NETPATH = 53,
ERROR_NO_NETWORK = 1222,
ERROR_INVALID_HANDLE_STATE = 1609,
ERROR_EXTENDED_ERROR = 1208,
ERROR_DEVICE_ALREADY_REMEMBERED = 1202,
ERROR_NO_NET_OR_BAD_PATH = 1203
}
public enum RESOURCE_SCOPE
{
RESOURCE_CONNECTED = 1,
RESOURCE_GLOBALNET = 2,
RESOURCE_REMEMBERED = 3,
RESOURCE_RECENT = 4,
RESOURCE_CONTEXT = 5
}
public enum RESOURCE_TYPE
{
RESOURCETYPE_ANY = 0,
RESOURCETYPE_DISK = 1,
RESOURCETYPE_PRINT = 2,
RESOURCETYPE_RESERVED = 8,
}
public enum RESOURCE_USAGE
{
RESOURCEUSAGE_CONNECTABLE = 1,
RESOURCEUSAGE_CONTAINER = 2,
RESOURCEUSAGE_NOLOCALDEVICE = 4,
RESOURCEUSAGE_SIBLING = 8,
RESOURCEUSAGE_ATTACHED = 16,
RESOURCEUSAGE_ALL = (RESOURCEUSAGE_CONNECTABLE |
RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED),
}
public enum RESOURCE_DISPLAYTYPE
{
RESOURCEDISPLAYTYPE_GENERIC = 0,
RESOURCEDISPLAYTYPE_DOMAIN = 1,
RESOURCEDISPLAYTYPE_SERVER = 2,
RESOURCEDISPLAYTYPE_SHARE = 3,
RESOURCEDISPLAYTYPE_FILE = 4,
RESOURCEDISPLAYTYPE_GROUP = 5,
RESOURCEDISPLAYTYPE_NETWORK = 6,
RESOURCEDISPLAYTYPE_ROOT = 7,
RESOURCEDISPLAYTYPE_SHAREADMIN = 8,
RESOURCEDISPLAYTYPE_DIRECTORY = 9,
RESOURCEDISPLAYTYPE_TREE = 10,
RESOURCEDISPLAYTYPE_NDSCONTAINER = 11
}
[StructLayout(LayoutKind.Sequential)]
public struct NETRESOURCE
{
public RESOURCE_SCOPE dwScope;
public RESOURCE_TYPE dwType;
public RESOURCE_DISPLAYTYPE dwDisplayType;
public RESOURCE_USAGE dwUsage;
[MarshalAs(UnmanagedType.LPStr)]
public string lpLocalName;
[MarshalAs(UnmanagedType.LPStr)]
public string lpRemoteName;
[MarshalAs(UnmanagedType.LPStr)]
public string lpComment;
[MarshalAs(UnmanagedType.LPStr)]
public string lpProvider;
}
public class NetworkConnection
{
[DllImport("mpr.dll")]
public static extern int WNetAddConnection2A (NETRESOURCE[]
lpNetResource, string lpPassword, string lpUserName, int
dwFlags);
[DllImport("mpr.dll")]
public static extern int WNetCancelConnection2A (string sharename,
int dwFlags, int fForce);
public static int Connect (string remotePath, string localPath,
string username, string password)
{
NETRESOURCE[] share_driver = new NETRESOURCE[1];
share_driver[0].dwScope = RESOURCE_SCOPE.RESOURCE_GLOBALNET;
share_driver[0].dwType = RESOURCE_TYPE.RESOURCETYPE_DISK;
share_driver[0].dwDisplayType =
RESOURCE_DISPLAYTYPE.RESOURCEDISPLAYTYPE_SHARE;
share_driver[0].dwUsage =
RESOURCE_USAGE.RESOURCEUSAGE_CONNECTABLE;
share_driver[0].lpLocalName = localPath;
share_driver[0].lpRemoteName = remotePath;
Disconnect(localPath);
int ret = WNetAddConnection2A(share_driver, password, username,
1);
return ret;
}
public static int Disconnect (string localpath)
{
return WNetCancelConnection2A(localpath, 1, 1);
}
调用方式:
public static void TestNetWorkConnection()
{
string localpath = "X:";
//int status = NetworkConnection.Connect(@"//192.168.0.2/test",
localpath, @"test", "test");
int status = NetworkConnection.Connect("192.168.0.2//test",
localpath, @"test", "test");
if (status == (int)ERROR_ID.ERROR_SUCCESS)
{
FileStream fs = new FileStream(localpath + @"//123.txt",
FileMode.OpenOrCreate);
using (StreamWriter stream = new StreamWriter(fs))
{
stream.WriteLine("你好呀,成功了");
stream.Flush();
stream.Close();
}
fs.Close();
}
else
{
Console.WriteLine(status);
}
NetworkConnection.Disconnect(localpath);
}
参考文档:
http://support.microsoft.com/kb/173011
http://support.microsoft.com/kb/842789
c#访问其他服务器的共享文件夹,C# 实现访问网络共享文件夹相关推荐
- linux访问nfs文件夹,linux配置NFS网络共享文件夹目录
网络共享磁盘大家都用过,在windows上叫共享文件夹,linux叫共享目录,linux上配置网络共享目录也有很多中方式samba和nfs,各自有各自的优点,nfs是比较常用的. 1.安装NFS 服务 ...
- 本机器禁止访问mysql服务器_限制指定机器IP访问oracle数据库
通过使用数据库服务器端的sqlnet.ora文件可以实现禁止指定IP主机访问数据库的功能,这对于提升数据库的安全性有很大的帮助,与此同时,这个技术为我们管理和约束数据库访问控制提供了有效的手段. 下面 ...
- 访问ECS服务器的网站提示“由于你访问的URL可能对网站造成安全威胁,您的访问被阻断”
问题描述 用户在访问ECS服务器上的网站时,提示如下错误: 解决方案 如果您对实例或数据有修改.变更等风险操作,务必注意实例的容灾.容错能力,确保数据安全. 如果您对实例(包括但不限于ECS.RDS) ...
- 苹果手机访问虚拟机服务器,vmware虚拟机 ios系统怎么访问共享文件夹
满意答案 love1109 2017.10.09 采纳率:46% 等级:9 已帮助:362人 方法/步骤 1 在 Mac 上选择想要设置共享文件夹的虚拟机,点击"设置"按钮, ...
- 访问不同服务器文件共享,windows共享不同用户访问不同文件夹不同权限
需求:为方便教学管理,3名老师,张老师.李老师.陈老师通过教学机访问服务器对应文件夹下的课件资源,而3名老师各自间无法访问对方的课件资源,另有一台管理员机,可以访问3位老师所有的课件资源. 服务器:w ...
- 如何访问云服务器上的html?如何访问云服务器上的静态html?如何往云服务器上传静态html?如何通过ip地址访问云服务器上的网站?
在宝塔的网站中建立新的站点,域名填写自己的ip地址和前面加上www的ip地址(如果还没有申请域名),根目录填写index.html(你写的html)所在的目录,然后直接访问ip地址就好
- windows不能访问linux服务器,window的vnc客户端无法访问Linux服务端的问题之一
对于网上的各种凌乱解法,我总结了一下步骤: 1)yum安装 yum -y install vnc *vnc-server* 2)修改VNCServer主配置文件 #vim /etc/sysconfig ...
- ftp服务器Server-U突破局域网实现公网访问的方法
各位朋友,大家好,头条视频里我已经发布了关于ftp服务器Server-U在公网上的web访问方法视频,相信大家看得还是比较清楚.今天,为了让各位喜欢头条文章的朋友,我还是以详细文章的形式分享给各位,也 ...
- opcua协议服务器端口号,访问opcua服务器地址空间
访问opcua服务器地址空间 内容精选 换一换 配置OPC-UA服务端的用户身份,添加一个用户名和密码,如用户名:edge-test密码:1234 使用Docker run运行容器章节使用docker ...
- 安装httpd并修改apache服务器的首页,虚拟主机,配置不同端口号的虚拟主机访问Apache服务器
文章目录 安装httpd,并将访问apache服务器的首页修改为hello.html, 且内容为: "My Home Page is hello" 虚拟主机:虚拟两台主机ip为10 ...
最新文章
- PHP开发常见功能实现流程
- 元宇宙行业深度研究报告:为什么元宇宙是下一代互联网?
- 学习Java: Queue
- C# 派生类的构造函数
- java jnlp 靠谱吗_获取当前的JNLP信息
- python中template是什么意思啊_Python中Template使用的一个小技巧
- 计算机电路板工作原理,PCB电路板测试仪的组成及测试原理.
- java modbus通讯协议_Modbus通 讯 协 议
- [转]python 正则匹配中文
- Swing组件集合的事件处理(三)
- Asp.net学习总结
- Spring Boot:Canonical names should be kebab-case (‘-‘ separated), lowercase alpha-numeric characters
- 免费动态域名解析软件dnspod每步nat123体会
- PTA 7-2 复数与基本类型的加减运算
- 课后习题3.4 编程序,用getchar函数读入两个字符给c1,c2,然后分别用putchar函数和cout语句输出这两个字符。并思考以下问题: (1)变量c1,c2应定义为字符型还是整形?抑或两者皆
- nexus5 博通芯片WIFI详解 (1)
- SAP客户主数据相关表
- 华为防火墙应用层过滤--URL
- 谷歌的语音识别利器,最先造福了自己的员工
- 一天吃多少个鸡蛋比较合适?再次强调:不要超过这个量
热门文章
- oracle 发的邮件qq,python基于SMTP发送QQ邮件
- 前端技术栈:后台管理端UI框架
- /usr/bin/ld: 找不到 -lgcc_s怎么办?
- Windows下免安装MySQL开机启动
- id Software公司介绍
- 数学基础 - 第十八章 平行四边形
- 凌云驭势 亚马逊云科技开启re:Invent中国行
- 云服务器(Centos7)搭建jdk环境
- JS,VUE检测Video视频是否全屏播放
- 关于“C2248 QString::QString 无法访问private成员的问题”