我创建了一些代码来执行命令行命令。它在我的开发PC上工作正常,但是当我尝试在服务器上运行代码(Windows 2003,IIS 6)时,命令不会运行。
我检查服务器上的路径,我确信它是正确的。我可以从服务器获得一些输出(参见附图)。
我认为这可能是权限问题。但我不知道在哪里检查这个以及如何纠正它。任何帮助将不胜感激。
更新
我在我的本地开发PC(Win 7和Wind XP)上运行此代码,它运行正常。但是,只要我在Windows 2003服务器上运行代码,它就无法运行。
ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe");
processStartInfo.RedirectStandardInput = true;
processStartInfo.RedirectStandardOutput = true;
processStartInfo.UseShellExecute = false;
processStartInfo.CreateNoWindow = true;
Process process = Process.Start(processStartInfo);
if (process != null)
{
process.StandardInput.WriteLine("c:");
process.StandardInput.WriteLine("cd\\");
process.StandardInput.WriteLine("cd C:\\Program Files\\Bank2CSV Pro");
/*This is Dynamic path for our application */
process.StandardInput.WriteLine("bank2csv_pro.exe" + " " + strSavedFilePath + fileName2 + " " + strSavedFilePath + fileNameCsv);
/* This is static path for command prompt*/
process.StandardInput.Close();
string outputString = process.StandardOutput.ReadToEnd();
答案 0 :(得分:0)
我一直在测试,发现在Web服务器的Web根目录下工作时,我能够执行上面代码片段中显示的代码。
所以最后它似乎是一个权限问题。举一个我所做的实际例子
我修改了代码:
process.StandardInput.WriteLine("cd C:\\Program Files\\Bank2CSV Pro");
到此代码:
process.StandardInput.WriteLine("cd C:\\Inetpub\\wwwroot\\Bank2CSV Pro");
在此更改后,我能够执行写入磁盘的命令。显然问题是IUSR用户必须有权写入相关目录。我还可以通过给Program Files目录中的文件夹提供ISUR用户磁盘写访问权来解决问题,但我认为这不是一个好的做法......