日期:2014-05-18  浏览次数:21154 次

C#调用cmd执行命令重新启动应用程序池,但无法运行cscript.exe
代码如下:
C# code

            Process p = new Process();
            p.StartInfo.FileName = "cmd.exe";
            // 这里是关键点,不用Shell启动/重定向输入/重定向输出/不显示窗口
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.RedirectStandardError = true; 
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.WorkingDirectory = "f:\\f";
            string command = "cscript.exe";
            p.StartInfo.Arguments = "c:\\windows\\system32\\iisapp.vbs /a \"DefaultAppPool\" " + command;    
            p.Start();
            //p.StandardInput.WriteLine("cscript.exe c:\\windows\\system32\\iisapp.vbs /a \"DefaultAppPool\"");  
            //p.StandardInput.WriteLine("exit");
            //p.WaitForExit(60000);
            string s = p.StandardOutput.ReadToEnd();// 得到cmd.exe的输出
            p.Close();



请多多指教!

------解决方案--------------------
up
------解决方案--------------------
1、试试把你要执行的写个批处理文件再调用一下。
2、运行cmd /? 看看有哪些参数,应该会有帮助。

------解决方案--------------------
有什么错误
------解决方案--------------------
帮 顶
------解决方案--------------------

C# code
        p.WaitForExit();
        if (p.HasExited)
        {
            string s = p.StandardOutput.ReadToEnd();
        }

------解决方案--------------------
权限够吗?

------解决方案--------------------
(1)你的程序池名对吗? DefaultAppPool
(2)你在2003 sp1下正常而在sp2下 报什么错?
------解决方案--------------------
以前用的,SP2下不知能不能用

set WebAppPool = GetObject("IIS://LocalHost/w3svc/AppPools/DefaultAppPool")
WebAppPool.Stop
WebAppPool.Start

上面代码保存为VBS脚本文件即可.再用cscript.exe调用一下试试.
------解决方案--------------------
up
------解决方案--------------------
如果在aspnet里面的话,估计是权限问题
把这个相关的网页放到另一个有管理员权限的apppool里面(用localsystem比较方便)
------解决方案--------------------
应该是找不到cscript文件路径
试试这个
BatchFile code

echo off
if exist "%SystemRoot%\Microsoft.NET\Framework\v2.0.50727" goto netOld
:DispError
echo 您的机器上没有安装 .net FrameWork 2.0
pause
goto LastEnd
:netOld
cd %SystemRoot%\Microsoft.NET\Framework\v2.0.50727
echo 您的机器上安装了相应的.net FrameWork,可以运行本脚本,按任意键继续…………
echo off
pause
%SystemRoot%\System32\Cscript %SystemRoot%\System32\iisapp.vbs /a "DefaultAppPool" 
:LastEnd
rem exit

------解决方案--------------------
学习一下
------解决方案--------------------
都是牛人啊。我只好闭嘴了。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
解决了吧?
------解决方案--------------------
你打开一个cmd窗口直接执行看启动没启动
------解决方案--------------------
顶!学习
------解决方案--------------------