利用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#