即把本地的文件拷贝到远程计算机,或者把远程计算机的文件拷贝到本地。
我能够连接到远程计算机,并进行操作,但是只能把远程计算机上的一个文件复制到远程计算机的另一个位置,而无法复制到我的机器。
请问有什么办法?

解决方案 »

  1.   

    System.Net.FileWebRequest
    System.Net.FileWebResponse
      

  2.   

     /// <summary>
            /// WMI接続(リモートの場合)を開く
            /// </summary>
            public void WMIConnetion(string pcIp)
            {
                m_WMIConnetion_OK = false;
                try
                {
                    ConnectionOptions connection = new ConnectionOptions();
                    connection.Username = "administrator";
                    connection.Password = "drnet";
                    connection.Authority = "ntlmdomain:DOMAIN";
                    string path = "\\\\" + pcIp + "\\root\\CIMV2";
                    m_WMI_Scope = new ManagementScope(path, connection);
                    m_WMI_Scope.Connect();
                    if (m_WMI_Scope.IsConnected)
                    {
                        m_WMIConnetion_OK = true;
                    }
                }
                catch (ManagementException err)
                {
                    throw new DoctorSysInfoException(err, 4);
                }
                catch (System.UnauthorizedAccessException unauthorizedErr)
                {
                    unauthorizedErr.Data.Add("name", "administrator");
                    unauthorizedErr.Data.Add("psw", "drnet");
                    throw new DoctorSysInfoException(unauthorizedErr, 5);
                }
                catch (Exception ee)
                {
                    throw new DoctorSysInfoException(ee, 109);
                }
            }
      

  3.   

    /// <summary>
            /// リモートPCのBIOS情報を取得します
            /// </summary>
            public void WMIBiosInfo()
            {
                m_WMIBiosInfo_OK = false;
                m_Manufacturer = "";
                m_SerialNum = "";
                if (m_WMI_Scope.IsConnected)
                {
                    try
                    {
                        ObjectQuery queryBios = new ObjectQuery("SELECT Manufacturer,SerialNumber FROM Win32_BIOS");
                        ManagementObjectSearcher searcher = new ManagementObjectSearcher(m_WMI_Scope, queryBios);
                        foreach (ManagementObject queryObj in searcher.Get())
                        {
                            if (queryObj["Manufacturer"] != null)
                            {
                                m_Manufacturer = queryObj["Manufacturer"].ToString();
                                m_WMIBiosInfo_OK = true;
                            }
                            if (queryObj["SerialNumber"] != null)
                            {
                                m_SerialNum = queryObj["SerialNumber"].ToString();
                                m_WMIBiosInfo_OK = true;
                            }
                        }
                    }
                    catch (Exception ee)
                    {
                        throw new DoctorSysInfoException(ee, 101);
                    }
                }
            }
      

  4.   

    一个列子。。以前写的
    虽然不是复制文件
    主要是select语句那里改改,应该可以实现,你自己查下吧。
      

  5.   

    WMI是管理接口,不是用来文件传输的。你可以编写一个程序来在对方计算机接收文件
      

  6.   

    使用WMI不怎么好,很多限制的
    你操作的都知道远程计算机的用户和密码吗?如果知道的情况下建议使用net use命令操作
    下面是一个示例:  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;   
      }File.Copy(sourceFileName   ,   destFileName   ,   overwrite   );   
      sourceFileName     
      要复制的文件。     
      destFileName     
      目标文件的名称。不能是目录。     
      overwrite     
      如果可以改写目标文件,则为   true;否则为   false。     
      其中destFileName的值,就是远程机器IP加盘符加文件夹....
      

  7.   

    看看这个对你有没有帮助:
    Copying Folders by Using WMIhttp://www.microsoft.com/technet/scriptcenter/guide/sas_fil_ixpv.mspx?mfr=true
      

  8.   

    使用NET USE命令连接对方机器
    然后使用FIle类下面的方法
    具体请参考
    http://blog.csdn.net/lovefootball/archive/2008/08/25/2827139.aspx
      

  9.   

    我能够连接到远程计算机,并进行操作,但是只能把远程计算机上的一个文件复制到远程计算机的另一个位置-》
    你既然可以连接到远程机器
    那你直接用File类下面的命令就可以了
    注意的是远程机器上的文件地址你需要加上对方的IP
      

  10.   

    没法使用net use,找不到网络名。
    可以使用WMI
      

  11.   

    WMI的问题为什么总是没人知道啊
      

  12.   

    http://www.cnblogs.com/ajiefjcn/archive/2009/03/09/1407296.html我整理了一下,不知道在CSDN帖子中怎么插入附件,就放在我的博客上了,好久没有更新了,感觉都不好意思给人看,呵呵,有问题可以再联系我。