WinForm程序,目的是从机器A拷贝文件到机器B,已经知道机器B的管理员密码。机器A,B是同一个组,都是XP的系统。现在程序使用File.Copy,但因为权限问题而操作不成功。各位是否有好方法

解决方案 »

  1.   

    如果你是一个局域网,必须用文件共享,才能进行IO操作
    public static bool NetUse(string ip,string uid,string pwd)
    {
        
    Process   p   =   new   Process();   
        
    p.StartInfo.FileName   =   "cmd.exe";   
        
    p.StartInfo.UseShellExecute   =   false;   
        
    p.StartInfo.RedirectStandardInput   =   true;   
        
    p.StartInfo.RedirectStandardOutput   =   true;   
        
    p.StartInfo.RedirectStandardError   =   true;   
        
    p.StartInfo.CreateNoWindow   =   true;  
        
    p.Start();   
    byte[] buffer =  Convert.FromBase64String(pwd);
    pwd = System.Text.UTF8Encoding.Default.GetString(buffer);
    string cmdText="net use \\\\"+ip+" "+pwd+" /USER:"+uid;
    p.StandardInput.WriteLine(cmdText);   
        
    p.StandardInput.WriteLine("exit");       
    string   strRst   =   p.StandardOutput.ReadToEnd();   
    p.Close();  
    if(strRst.IndexOf("命令成功完成")!=-1)       
    return true;     
    return   false;   
    }
    IO操作之前先运行上面函数 ,就可以了像本地一样了
      

  2.   

    to greennetboy(我的老婆叫静静) 这个命令主要是做什么用,你说的共享是什么意思。
      

  3.   

    byte[] buffer = Convert.FromBase64String(pwd); 
    有问题,FromBase64String要求参数长度大于4并且并且是4的倍数
      

  4.   

    to greennetboy(我的老婆叫静静)
    刚才试了。密码不用转换吧,除了设IP外,应该还要求指定哪个盘共享。
    现在还要一个问题,连接建立后,Copy完后应该把它Delete掉吧。因为我要往很多电脑拷贝文件,这个Delete比较麻烦
      

  5.   

    FromBase64String()
    是我这里的使用方法,你换成你自己的,直接传名文就可以
    共享要事先设置好才可以
      

  6.   

    Copy完后应该把它Delete掉,不如用File.Move把
      

  7.   

    to greennetboy
    我是想在其他机器不共享的前提下访问,所以想用D $的方式 :)to liangxf0022(小新) 
    这个Delete不是删除文件,而是删除共享链接我想这个删除共享链接还是很必要的
      

  8.   

    to greennetboy如果要访问共享文件夹,不需要创建共享链接了,只要同一个域就可以了,还有就是共享文件夹分配给我访问的权限
      

  9.   

    我的程序是 把A电脑共熟文件夹的文件 copy 到 B电脑,
    结果也是不行,报错:
    目标目录已存在。why?
      

  10.   

    Windows共享是一个自己的文件传输协议,
    两个主机之间通讯肯定要一种协议的。
      

  11.   

    因为我有域管理员密码,就算没有共享,理应可以进行Copy