当前位置:编程学习 > C#/ASP.NET >>

利用C# process执行dos xcopy命令,无法将远端机器上的文件复制带web程序所在的服务器目录,可能是权限问题?求教

先看代码,在VS2005中执行没有问题,但一旦发布成网站,复制功能无法实现
 
protected void NextBtn_OnClick(object sender, EventArgs e)
    {
        ……  
        copyremootfile(@"\\远端机器ip\d$\coursewares\MCR0478",@"e:\coursewares\1111");
        ……

    }
    //复制文件函数
    protected void copyremootfile(string filesource, string filetag)
    {

        if (!Directory.Exists(filetag))
            Directory.CreateDirectory(filetag);
        try
        {
            Response.Write(RunCmd(@"xcopy /s/d/y "+filesource+@"\*.* "+filetag+@"\*.*"));
            Response.End();
        }
        catch {}
    }
//process执行
   private string RunCmd(string command)
    {
        Response.Write(command);
//Response.End();
Process proc=new Process();
        proc.StartInfo.FileName="cmd.exe";
        proc.StartInfo.Arguments="/c"+command;
        proc.StartInfo.CreateNoWindow=false;
        proc.StartInfo.UseShellExecute = false; 
        proc.StartInfo.RedirectStandardInput = true;
        proc.StartInfo.RedirectStandardOutput = true;
        proc.StartInfo.RedirectStandardError = true;
        proc.Start();
        return proc.StandardOutput.ReadToEnd();
    }

我将command取出来,直接在服务器命令行中执行,可以复制,但是在web页面中执行函数就是不行,返回复制了0个文件;

我估计是web访问用户没有读取远端机器目录的权限,那么远端的文件目录怎么设置权限呢?已经在远端机器上添加aspnet用户、Iuser_web服务器machine,internet来宾帐户,web服务器administrator帐号,并赋予读取文件目录的权限,还是不行。

请教中………………




     --------------------编程问答-------------------- 这跟我在winform碰到的情况可能是一样的

我是执行了nslookup > c:\temp\test.txt

process在管理员账号下运行正常,在user下就无法创建txt文件,不知道怎么去设置process的权限 --------------------编程问答-------------------- 1,在使用xcopy命令之前,先用命令"net use \\远端机器ip\d$\coursewares\MCR0478 密码 /USER:用户名"
2,用proc.StartInfo.username和proc.StartInfo.password指定帐号运行process.

我在项目中运用过了,是可行的. --------------------编程问答-------------------- 如果远端服务器装了sql server
你也可以用 sql 语句 "MASTER..XP_CMDSHELL 'XCOPY /s/d/y "+filesource+@"\*.* "+filetag+@"\*.*"+"'" 
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,