asp.net执行bat批处理文件,在自己的机器上(windows 7)完全没有问题,
但是到了服务器上,就不行执行了,
服务器的操作系统是windows 2003
是否代码有什么问题呢,请帮我看看代码如下
Process process = new Process();
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = " cmd.exe ";
startInfo.Arguments = @" /c D:\status.bat";
startInfo.UseShellExecute = false;
startInfo.RedirectStandardInput = false;
startInfo.RedirectStandardOutput = false;
startInfo.CreateNoWindow = true;
process.StartInfo = startInfo;process.Start();
process.WaitForExit();
process.Dispose();

解决方案 »

  1.   

    服务器上一般为了安全,不开cmd.exe功能startInfo.Arguments = @" /c D:\status.bat";
    地址是否正确,为什么不用server.mappth("status.bat")
      

  2.   

    是因为iis默认是以匿名账户身份运行的,没有执行exe的权限的。
      

  3.   

    那 你的web.config里是不是有程序池标识方面的设置?
      

  4.   

    另外你可以在web.config里面启用模拟<configuration>
      <system.web>
       <identity impersonate="true"  userName="服务器机器名\Administrator"   password="Administrator的密码" />
      </system.web>
    </configuration>
      

  5.   

    有一次,我告诉管理员无法运行cmd.exe,管理员说服务器上有杀毒软件,他也没法运行?
      

  6.   

    引用 31 楼 yumi_yu 的回复:
    问题解决了,真的是权限的问题,╮(╯▽╰)╭ 要在架构的IIS上面把该网站的权限设置成“NetWork Service”(是本地的内置账户组),然后在把该“NetWork Service” 加入到架构IIS的服务器的administrator的组里面~~ 不过那样做后第一次还是显示不行不过有成功转换不知道为什么,但是在上传一次就ok了~~ 我自己在找找原因~~现在结贴谢谢大家的帮忙~~(~ o ~)~
    asp.net对应的IIS的权限默认应该是NetWork Service组啊。奇怪为什么要改换其他的。另外服务器端转换exec为pdf。我觉得这个要妥善处理好。不然你们的服务器安全性太不安全了。调用系统cmd.exe或系统的可执行文件,NetWork Service组本身就把IIS站点的权限与系统权限安全隔离。把这个加入到administrator组。我还是觉得很不可思议。
    楼主试试 是不是bat文件的问题,换一个简单的bat文件试试,再把bat文件放到wwwroot里试试 都试试
      

  7.   

    你是不是用admin账号登陆的
    http://www.qicaispace.com/gonggao/server/page01/info53.asp
      

  8.   

    startInfo.Arguments = @" /c '" + Server.MapPath("~/status.bat") + "'";
    bat放你网站的根目录下