我要远程拷贝一个文件,双方是可信任的,目标机器的文件夹是共享的,权限是可读写的
string RestoreFile="D:\\文件1";
string strDataDir="\\"+"\\"+"172.19.32.76"+"\\"+"d$"+"\\"+"WorkSpace"+"\\"+"文件1";
File.Copy(RestoreFile, @"\\" + strDataDir,true);WorkSpace文件夹是在172.19.32.76共享的文件夹错误:
登录失败: 未知的用户名或错误密码。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IO.IOException: 登录失败: 未知的用户名或错误密码。 
各路英雄帮忙看看有办法解决没?非常感谢

解决方案 »

  1.   

    没权限,共享目录的共享权限是everyone的吗
      

  2.   

    用一下代码可以实现:使用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);
        }
       }
      

  3.   

    使用net use 命令
    ----------------
    这个方法不错,我怎么就没想起来呢
      

  4.   

    orum/ui/scripts/csdn/Plugin/003/onion/27.gif][/img]
      

  5.   

    局域网共享的问题,最让人头疼了。试一下,下面的方法。原来搞了一上午才弄好。1.开启guest账户,并设置空密码。2.在开始-运行中输入 gpedit.msc,打开 windows设置--本地策略--安全设置--安全选项  中的 网络访问:本地账户共享和安全模式 设置为 仅来宾,本地用户以来宾身份验证。然后再打开 windows设置--本地策略--安全设置--用户权利指派  中的 拒绝从网络访问此计算机 中的 guest 去掉。3.打开 windows设置--本地策略--安全设置--安全选项  中的 账户:使用空白密码的本地账户只允许进行控制台登陆  设置为 已停用