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# 实现访问网络共享文件夹相关推荐

  1. linux访问nfs文件夹,linux配置NFS网络共享文件夹目录

    网络共享磁盘大家都用过,在windows上叫共享文件夹,linux叫共享目录,linux上配置网络共享目录也有很多中方式samba和nfs,各自有各自的优点,nfs是比较常用的. 1.安装NFS 服务 ...

  2. 本机器禁止访问mysql服务器_限制指定机器IP访问oracle数据库

    通过使用数据库服务器端的sqlnet.ora文件可以实现禁止指定IP主机访问数据库的功能,这对于提升数据库的安全性有很大的帮助,与此同时,这个技术为我们管理和约束数据库访问控制提供了有效的手段. 下面 ...

  3. 访问ECS服务器的网站提示“由于你访问的URL可能对网站造成安全威胁,您的访问被阻断”

    问题描述 用户在访问ECS服务器上的网站时,提示如下错误: 解决方案 如果您对实例或数据有修改.变更等风险操作,务必注意实例的容灾.容错能力,确保数据安全. 如果您对实例(包括但不限于ECS.RDS) ...

  4. 苹果手机访问虚拟机服务器,vmware虚拟机 ios系统怎么访问共享文件夹

    满意答案 love1109 2017.10.09 采纳率:46%    等级:9 已帮助:362人 方法/步骤 1 在 Mac 上选择想要设置共享文件夹的虚拟机,点击"设置"按钮, ...

  5. 访问不同服务器文件共享,windows共享不同用户访问不同文件夹不同权限

    需求:为方便教学管理,3名老师,张老师.李老师.陈老师通过教学机访问服务器对应文件夹下的课件资源,而3名老师各自间无法访问对方的课件资源,另有一台管理员机,可以访问3位老师所有的课件资源. 服务器:w ...

  6. 如何访问云服务器上的html?如何访问云服务器上的静态html?如何往云服务器上传静态html?如何通过ip地址访问云服务器上的网站?

    在宝塔的网站中建立新的站点,域名填写自己的ip地址和前面加上www的ip地址(如果还没有申请域名),根目录填写index.html(你写的html)所在的目录,然后直接访问ip地址就好

  7. windows不能访问linux服务器,window的vnc客户端无法访问Linux服务端的问题之一

    对于网上的各种凌乱解法,我总结了一下步骤: 1)yum安装 yum -y install vnc *vnc-server* 2)修改VNCServer主配置文件 #vim /etc/sysconfig ...

  8. ftp服务器Server-U突破局域网实现公网访问的方法

    各位朋友,大家好,头条视频里我已经发布了关于ftp服务器Server-U在公网上的web访问方法视频,相信大家看得还是比较清楚.今天,为了让各位喜欢头条文章的朋友,我还是以详细文章的形式分享给各位,也 ...

  9. opcua协议服务器端口号,访问opcua服务器地址空间

    访问opcua服务器地址空间 内容精选 换一换 配置OPC-UA服务端的用户身份,添加一个用户名和密码,如用户名:edge-test密码:1234 使用Docker run运行容器章节使用docker ...

  10. 安装httpd并修改apache服务器的首页,虚拟主机,配置不同端口号的虚拟主机访问Apache服务器

    文章目录 安装httpd,并将访问apache服务器的首页修改为hello.html, 且内容为: "My Home Page is hello" 虚拟主机:虚拟两台主机ip为10 ...

最新文章

  1. PHP开发常见功能实现流程
  2. 元宇宙行业深度研究报告:为什么元宇宙是下一代互联网?
  3. 学习Java: Queue
  4. C# 派生类的构造函数
  5. java jnlp 靠谱吗_获取当前的JNLP信息
  6. python中template是什么意思啊_Python中Template使用的一个小技巧
  7. 计算机电路板工作原理,PCB电路板测试仪的组成及测试原理.
  8. java modbus通讯协议_Modbus通 讯 协 议
  9. [转]python 正则匹配中文
  10. Swing组件集合的事件处理(三)
  11. Asp.net学习总结
  12. Spring Boot:Canonical names should be kebab-case (‘-‘ separated), lowercase alpha-numeric characters
  13. 免费动态域名解析软件dnspod每步nat123体会
  14. PTA 7-2 复数与基本类型的加减运算
  15. 课后习题3.4 编程序,用getchar函数读入两个字符给c1,c2,然后分别用putchar函数和cout语句输出这两个字符。并思考以下问题: (1)变量c1,c2应定义为字符型还是整形?抑或两者皆
  16. nexus5 博通芯片WIFI详解 (1)
  17. SAP客户主数据相关表
  18. 华为防火墙应用层过滤--URL
  19. 谷歌的语音识别利器,最先造福了自己的员工
  20. 一天吃多少个鸡蛋比较合适?再次强调:不要超过这个量

热门文章

  1. oracle 发的邮件qq,python基于SMTP发送QQ邮件
  2. 前端技术栈:后台管理端UI框架
  3. /usr/bin/ld: 找不到 -lgcc_s怎么办?
  4. Windows下免安装MySQL开机启动
  5. id Software公司介绍
  6. 数学基础 - 第十八章 平行四边形
  7. 凌云驭势 亚马逊云科技开启re:Invent中国行
  8. 云服务器(Centos7)搭建jdk环境
  9. JS,VUE检测Video视频是否全屏播放
  10. 关于“C2248 QString::QString 无法访问private成员的问题”