C#调用cmd执行命令重新启动应用程序池,但无法运行cscript.exe
代码如下:
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();
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文件路径
试试这个
echo offif exist "%SystemRoot%\Microsoft.NET\Framework\v2.0.50727" goto netOld:DispErrorecho 您的机器上没有安装 .net FrameWork 2.0pausegoto LastEnd:netOldcd %SystemRoot%\Microsoft.NET\Framework\v2.0.50727echo 您的机器上安装了相应的.net FrameWork,可以运行本脚本,按任意键继续…………echo offpause%SystemRoot%\System32\Cscript %SystemRoot%\System32\iisapp.vbs /a "DefaultAppPool" :LastEndrem exit
[解决办法]
学习一下
[解决办法]
都是牛人啊。我只好闭嘴了。
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
解决了吧?
[解决办法]
你打开一个cmd窗口直接执行看启动没启动
[解决办法]
顶!学习
------解决方案--------------------
学习+帮顶
[解决办法]
mark.
[解决办法]
学习
[解决办法]
想法一:
p.StartInfo.FileName = "cscript.exe";
p.StartInfo.Arguments = "/c c:\\windows\\system32\\iisapp.vbs /a \"DefaultAppPool\" ;
Process pr = Process.Start(p);
if (pr!=null)
{
......
pr.Dispose();
}
想法二:
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.Arguments = “/c”command+ "(空一格)c:\\windows\\system32\\iisapp.vbs /a \"DefaultAppPool\" " ;
Process pr = Process.Start(p);
if (pr!=null)
{
......
pr.Dispose();
}