zoukankan      html  css  js  c++  java
  • C# 远程拷贝文件

    使用net use 命令实现远程机器的文件复制。
    比如,从机器A操作实现把机器B的文件拷贝到机器A上,需要把机器B文件夹加上机器A的用户权限。

    public static bool Ping(string remoteHost)
      {
       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 = @"ping -n 1 " + remoteHost;
        proc.StandardInput.WriteLine(dosLine);
        proc.StandardInput.WriteLine("exit");
        while (proc.HasExited == false)
        {
         proc.WaitForExit(500);
        }
        string pingResult = proc.StandardOutput.ReadToEnd();
        if (pingResult.IndexOf("(0% loss)") != -1)
        {
         Flag = true;
        }
        proc.StandardOutput.Close() ;
       }
       catch (Exception ex)
       {
       }
       finally
       {
        try
        {
         proc.Close();
         proc.Dispose();
        }
        catch
        {
        }
       }
       return Flag;
      }

      public static bool Connect(string remoteHost, string userName, string passWord)
      {
       if(!Ping(remoteHost))
       {
        return false;
       }
       bool Flag = true;
       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 \\" + remoteHost + " " + passWord + " " + " /user:" + userName + ">NUL";
        proc.StandardInput.WriteLine(dosLine);
        proc.StandardInput.WriteLine("exit");
        while (proc.HasExited == false)
        {
         proc.WaitForExit(1000);
        }
        string errormsg = proc.StandardError.ReadToEnd();
        if (errormsg != "")
        {
         Flag = false;
        }
        proc.StandardError.Close() ;
       }
       catch (Exception ex)
       {
        Flag = false;
       }
       finally
       {
        try
        {
         proc.Close();
         proc.Dispose();
        }
        catch
        {
        }
       }
       return Flag;
      }
    这两个方法是对机器B建立连接,连接成功后,用File.Copy就可以了
    if (Ping("机器B"))
       {
        if (Connect("机器B","机器A用户","机器A用户访问密码"))
        {
         File.Copy("\\机器B\文件路径\文件名称","机器A存放文件完整路径",true);
        }
       }

  • 相关阅读:
    【计网实验6】静态路由实验
    【计网】第六章
    【操统5】第六章/第七章
    【计网 6】链路层
    【Java学习1】
    【机器学习1】
    【计网实验】packet
    【计网】第五章网络层:控制平面
    python中math模块常用的方法整理
    使用python如何进行截小图
  • 原文地址:https://www.cnblogs.com/bestsaler/p/1835478.html
Copyright © 2011-2022 走看看