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);
        }
       }

  • 相关阅读:
    codechef Graph on a Table
    CF1063F. String Journey
    BZOJ1547: 周末晚会
    maxsigma
    LOJ#2351. 「JOI 2018 Final」毒蛇越狱
    BZOJ3632: 外太空旅行
    图论:tarjan相关算法复习
    Codeforces 321E. Ciel and Gondolas(凸优化+决策单调性)
    5031. 【NOI2017模拟3.27】B (k次狄利克雷卷积)
    CSAcademy Round 10 Yury's Tree(有根树点分树或kruskal重构树)
  • 原文地址:https://www.cnblogs.com/bestsaler/p/1835478.html
Copyright © 2011-2022 走看看