研究了好久,才做成,以此做个日志。

一共两种方法

第一种:使用dos命令

        /// <summary>/// 连接共享文件/// </summary>/// <param name="path">共享文件地址</param>/// <param name="userName">用户名</param>/// <param name="passWord">密码</param>/// <returns>true:连接成功 false:连接失败</returns>public bool ConnectState(string path, string userName, string passWord, int islog){bool Flag = false;Process proc = new Process();try{proc.StartInfo.FileName = "cmd.exe";proc.StartInfo.UseShellExecute = false;proc.StartInfo.RedirectStandardInput = true;proc.StartInfo.RedirectStandardOutput = true;proc.StartInfo.RedirectStandardError = true;proc.StartInfo.CreateNoWindow = true;proc.Start();//登录验证string dosLine = @"net use \\192.168.1.205\ipc$ 12345/user:ftpuser";proc.StandardInput.WriteLine(dosLine);                proc.StandardInput.WriteLine("exit");while (!proc.HasExited){proc.WaitForExit(1000);}string errormsg = proc.StandardError.ReadToEnd();proc.StandardError.Close();if (string.IsNullOrEmpty(errormsg)){Flag = true;}else{if (islog > 0)com.log("ConnectState", "连接共享文件信息:" + errormsg);throw new Exception(errormsg);}}catch (Exception ex){if (islog > 0)com.log("ConnectState", "连接共享文件出错:" + ex.Message);//throw ex;Flag = false;}finally{proc.Close();proc.Dispose();}return Flag;}/// <summary>/// 上传文件到共享文件夹/// </summary>/// <param name="sourceFile">本地文件</param>/// <param name="remoteFile">远程文件</param>public bool UpLoadFile(string sourceFile, string remoteFile, int islog){//判断文件夹是否存在 ->不存在则创建var targetFolder = Path.GetDirectoryName(remoteFile);DirectoryInfo theFolder = new DirectoryInfo(targetFolder);if (theFolder.Exists == false){theFolder.Create();}var flag = true;try{WebClient myWebClient = new WebClient();NetworkCredential cread = new NetworkCredential();myWebClient.Credentials = cread;using (FileStream fs = new FileStream(sourceFile, FileMode.Open, FileAccess.Read)){using (BinaryReader r = new BinaryReader(fs)){byte[] postArray = r.ReadBytes((int)fs.Length);using (Stream postStream = myWebClient.OpenWrite(remoteFile)){if (postStream.CanWrite == false){//LogUtil.Error($"{remoteFile} 文件不允许写入~");if (islog > 0)com.log("UpLoadFile", remoteFile + " 文件不允许写入~");flag= false;}postStream.Write(postArray, 0, postArray.Length);}}}return flag;}catch (Exception ex){// string errMsg = $"{remoteFile}  ex:{ex.ToString()}";//LogUtil.Error(errMsg);//Console.WriteLine(ex.Message);if (islog > 0)com.log("UpLoadFile", "上传文件到共享文件夹:" + ex.Message);return false;}}

使用这个方法之前,先打开cmd窗口,用dos命令运行是否正常

命令:打开连接:net use \\IP地址\ipc$ 密码/user:用户名  注意:只有三个空格

删除连接:net use \\IP地址\ipc$ 密码/user:用户名\del

net use错误解决方案:

1.错误号5,拒绝访问:很可能你使用的用户不是管理员权限的,先提升权限;
             2.错误号51,Windows无法找到网络路径:网络有问题;
             3.错误号53,找不到网络路径:ip地址错误;目标未开机;目标lanmanserver服务未启动;目标有防火墙(端口过滤);
             4.错误号67,找不到网络名:你的lanmanworkstation服务未启动或者目标删除了ipc$;
             5.错误号1219,提供的凭据与已存在的凭据集冲突:你已经和对方建立了一个ipc$,请删除再连;
             6.错误号1326,未知的用户名或错误密码:原因很明显了;

  • WinXP:控制面板-〉文件夹选项-〉察看-〉简单的文件共享去掉选取。然后再尝试连接。果真是这个“简单文件共享”搞的鬼,把它取消就可以了。简单文件共享会把网络连接权限都归为 guest连接,是无法访问C$等管理共享的

  • win2003:运行->输入secpol.msc,打开本地安全设置->本地策略->安全选项->选择"网络安全:LAN管理器身份验证级别"的属性修改为“发送LM和NTLM响应”即可~

  • WIN7:是安全设置有一项要设置!本地安全策略-本地策略-安全选项-网络安全:LAN管理器身份验证级别,默认是“没有定义”,更改为“发送LM和NTLM响应!
    重启组策略:cmd:gpupdate

  • 或者Guest用户取消禁用

7.错误号1792,试图登录,但是网络登录服务没有启动:目标NetLogon服务未启动;
             8.错误号2242,此用户的密码已经过期:目标有帐号策略,强制定期要求更改密码.

第二种方法:

        /// <summary>/// 上传文件:要设置共享文件夹是否有创建的权限,否则无法上传文件/// </summary>/// <param name="fileNamePath">本地文件路径</param>/// <param name="urlPath">共享文件夹地址</param>/// <param name="User"></param>/// <param name="Pwd"></param>/// <param name="islog"></param>/// <returns></returns>public bool UpLoadFile2(string fileNamePath, string urlPath, string User, string Pwd, int islog){var flag = false;string newFileName = fileNamePath.Substring(fileNamePath.LastIndexOf(@"\") + 1);//取文件名称//MessageBox.Show(newFileName);if (urlPath.EndsWith(@"\") == false) urlPath = urlPath + @"\";urlPath = urlPath + newFileName;WebClient myWebClient = new WebClient();NetworkCredential cread = new NetworkCredential(User, Pwd, "Domain");myWebClient.Credentials = cread;FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read);BinaryReader r = new BinaryReader(fs);Stream postStream =null;try{byte[] postArray = r.ReadBytes((int)fs.Length);postStream = myWebClient.OpenWrite(urlPath);// postStream.mif (postStream.CanWrite){postStream.Write(postArray, 0, postArray.Length);//MessageBox.Show("文件上传成功!", "提醒", MessageBoxButtons.OK, MessageBoxIcon.Information);flag= true;}else{//MessageBox.Show("文件上传错误!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);flag= false;}postStream.Close();return flag;}catch (Exception ex){//MessageBox.Show(ex.Message, "错误");if (islog > 0)com.log("UpLoadFile", "上传文件到共享文件夹:" + ex.Message);if (postStream != null)postStream.Close();return false;}}

一开始直接打开文档窗口,输入共享文件地址访问是没有问题的,代码连接却总是报错,估计跟Guest被禁止的原因

C# 向共享文件夹上传文件相关推荐

  1. JAVA共享文件夹上传文件

    1.jcifs官方包只支持smb1.0; 2.经过不断开发调试,总结以下可以支持smb2/smb3协议的jar包: smbj-0.11.3.jar mbassador-1.3.2.jar bcprov ...

  2. 利用Sharepoint里面Mysite的Shared Pictures的图片做相册 [包括创建文件夹,上传文件]...

    Shared Pictures里面的图片做一个相册,且文件夹管理为树形!可以根据点击的树形节点创建其子节点(子文件夹),相册则使用JQuery的插件lightbox-0.5,使用起来相对简单! [更新 ...

  3. Java 实现上传文件到共享文件夹,创建文件夹到共享文件夹

    Java 实现在共享文件夹下创建文件夹和文件 1.需要使用的依赖: <dependency><groupId>org.codelibs</groupId><a ...

  4. BS文件夹上传操作(二) ——基本功能实现

    上篇<BS文件夹上传操作 >大概说明了我所需要的需求, 接着上次的命题:  "如果有一个需求,要求你在BS上实现文件夹上传操作功能?你该如何实现?" ActiveX?J ...

  5. 递归上传文件和文件夹至SharePoint

    如果你使用SharePoint 2010的话,可以直接"上传多个文件".在弹出的对话框中可以直接往里拖放整个文件夹.如下图所示: 如果是SharePoint 2007的话,可以通过 ...

  6. 阿里云本地上传文件夹内所有内容代码

    public static void main(String[] args){ // Endpoint以杭州为例,其它Region请按实际情况填写. String endpoint = "& ...

  7. 通过sftp由本地向Linux上传文件文件夹

    有时候我们需要将本地的一些文件上传到虚拟机的Linux或云服务器中.本文介绍一种比较方便的安全文件传输协议SFTP. 本文主要介绍如何使用sftp,具体安装另需百度 可以使用3A服务器,我就是使用3A ...

  8. C#上传文件到共享文件夹

    使用C#上传文件到局域网内共享文件夹 源码如下: public void Main(){OpenFileDialog openFileDialogTemp = new OpenFileDialog() ...

  9. 使用SMBJ协议上传文件到windows文件夹

    使用SMBJ协议远程传输文件到共享文件夹 SMBJ概述 SMB(Server Message Block)通信协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为M ...

最新文章

  1. 【软件】我安装Tomcat5.5(Java Web开发服务器)的几点经验
  2. python if语句
  3. android studio 引入arr的问题
  4. activiti 工作流_一文让你读懂什么是Activiti工作流
  5. stft isar成像 matlab,基于STFT和FRFT的运动目标雷达三维成像方法与流程
  6. 发外链网站服务器瘫痪,哪些操作可以导致网站接入瘫痪 - 搜外SEO问答
  7. python中文版电脑下载-Python IDLE下载
  8. 伪元素在父元素中居中_从ArrayList中移除元素
  9. mp3 播放自动 html5,HTML5打造简易播放器:Chrome运行.mp3
  10. qt 矩形连续移动_建筑案例:海门謇公湖农产品展销中心-咬合的连续曲面坡屋顶...
  11. PMP考试的打分标准是怎样的?
  12. Hexo设置背景图片轮播效果
  13. Python人工智能学习路线(长篇干货)
  14. Python学习初阶:Python基本介绍及常用数据类型
  15. 深度解析高通RF360移动射频前端解决方案
  16. 客户端与服务端的区别
  17. 微信小程序入门与实战之更多电影列表与电影搜索
  18. 详解 502 Bad Gateway nginx/xxx
  19. 印度人还上不起网?每天超过800万人在火车站使用免费WiFi
  20. 中国碗扣式脚手架行业市场供需与战略研究报告

热门文章

  1. windows server 2012 Hyper-V 虚拟机的导出及导入
  2. 离散随机变量的常用分布
  3. 梯度下降与随机梯度下降概念及推导过程
  4. ajax 文本框 搜索,JQuery+AJAX实现搜索文本框的输入提示功能
  5. 【C语言】C语言三角形打印
  6. ppt将矩形形状的某个边做成曲线
  7. echarts图表y坐标轴单位
  8. PHP报错:Call to undefined function bcmul()
  9. 被嫌弃的程序员的一生
  10. 利用python合并与拆分excel