我通过在网页上运行,确出现,use error! 错误提示,
输出结果是Microsoft Windows [版本 5.2.3790] (C) 版权所有 1985-2003 Microsoft Corp. C:\>test.exe 3 10001 "d:\test" "d:\test.zip" use error! C:\>exit
但奇怪的是我把输出结果:test.exe 3 10001 "d:\test" "d:\test.zip" 到CMD运行又是可以运行的。
我换个其它的应用程序如rar 是可以的。不知道问题在哪,郁闷两天了,望高人指点了。
代码如下:
string ResultStr;
Process p = new Process(); //实例一个Process类,启动一个独立进程
p.StartInfo.FileName = cmd.exe; //设定程序名
p.StartInfo.UseShellExecute = false; //关闭Shell的使用
p.StartInfo.RedirectStandardInput = true; //重定向标准输入
p.StartInfo.RedirectStandardOutput = true; //重定向标准输出
p.StartInfo.RedirectStandardError = true; //重定向错误输出
p.StartInfo.CreateNoWindow = true; // 设置不显示窗口
p.StartInfo.ErrorDialog = false;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
p.StandardInput.WriteLine(@"test.exe 3 10001 ""d:\test"" ""d:\test.zip""");
// p.StandardInput.WriteLine(@"rar a ""d:\test.zip"" ""d:\test""");
p.StandardInput.WriteLine("exit");
ResultStr = p.StandardOutput.ReadToEnd();
p.Close();
return ResultStr;
12 个解决方案
#1
天,完全不知道还可以这么用啊。。。。学习了,帮顶,等待高手解答~~
#2
p.StartInfo.FileName = "cmd.exe"; //设定程序名
在我机器上OK
楼主多贴点代码看看
在我机器上OK
楼主多贴点代码看看
#3
C#中运行命令行截取输出流的例子
说明:经常有朋友问如何在C#中运行一个dos命令,并截取输出、输出流的问题,这个问题我以前在Java中实现过,由于在C#中没有遇到过类似的 情况,为了避免每次别人问都要一遍一遍演示的情况,特地做了一个简单的例子,实现在WinForm中ping一个网站,并且将ping的结果显示在一个文本框中。
说明:经常有朋友问如何在C#中运行一个dos命令,并截取输出、输出流的问题,这个问题我以前在Java中实现过,由于在C#中没有遇到过类似的 情况,为了避免每次别人问都要一遍一遍演示的情况,特地做了一个简单的例子,实现在WinForm中ping一个网站,并且将ping的结果显示在一个文本框中。
#4
tbResult.Text = "";
ProcessStartInfo start = new ProcessStartInfo("Ping.exe");//设置运行的命令行文件问ping.exe文件,这个文件系统会自己找到
//如果是其它exe文件,则有可能需要指定详细路径,如运行winRar.exe
start.Arguments = txtCommand.Text;//设置命令参数
start.CreateNoWindow = true;//不显示dos命令行窗口
start.RedirectStandardOutput = true;//
start.RedirectStandardInput = true;//
start.UseShellExecute = false;//是否指定操作系统外壳进程启动程序
Process p=Process.Start(start);
StreamReader reader = p.StandardOutput;//截取输出流
string line = reader.ReadLine();//每次读取一行
while (!reader.EndOfStream)
{
tbResult.AppendText(line+" ");
line = reader.ReadLine();
}
p.WaitForExit();//等待程序执行完退出进程
p.Close();//关闭进程
reader.Close();//关闭流
#5
要注意一些问题:
你的“test.exe”最好写全路径,因为在命令行下运行和在网站中运行路径是有差别的。
希望你做的不是需要很高权限才能进行的操作,因为ASP.NET默认是较低的权限运行的(防治权限过高操作危害服务器)。
#6
test.exe 已经设置环境变量,可能是权限问题,我的代码运行其它程序如(winrar.exe,ping.exe..)都是没问题的,但是执行自己写的Test.exe应用程序就提示use error !
如果是权限问题,我在WEB.config,已添加管理员的权限了问题依旧<identity impersonate="true" userName="administrator" password="112233" />
#7
你換個角度想就知道了,到底是誰在運行這段代碼?
你直接在cmd上運行時,可以執行,此時你是什么身份登錄?
而IIS在運行時,其執行帳號絕對不是你自己的帳號,而是ASP.NET Machine Account (ASPNET)
而這個用戶是隸屬與User這個群的..
你直接在cmd上運行時,可以執行,此時你是什么身份登錄?
而IIS在運行時,其執行帳號絕對不是你自己的帳號,而是ASP.NET Machine Account (ASPNET)
而這個用戶是隸屬與User這個群的..
#8
程序的参数应该另外传递吧,尽量不要和命混在一起
#9
注意一下。
#10
学习帮顶!
#11
up
#12
谢谢各位,经再三测试确认存在权限问题,和以上程序无关国。 我在.net里直接运行,是可以的,但发布到IIS就存在以上的问题了。
#1
天,完全不知道还可以这么用啊。。。。学习了,帮顶,等待高手解答~~
#2
p.StartInfo.FileName = "cmd.exe"; //设定程序名
在我机器上OK
楼主多贴点代码看看
在我机器上OK
楼主多贴点代码看看
#3
C#中运行命令行截取输出流的例子
说明:经常有朋友问如何在C#中运行一个dos命令,并截取输出、输出流的问题,这个问题我以前在Java中实现过,由于在C#中没有遇到过类似的 情况,为了避免每次别人问都要一遍一遍演示的情况,特地做了一个简单的例子,实现在WinForm中ping一个网站,并且将ping的结果显示在一个文本框中。
说明:经常有朋友问如何在C#中运行一个dos命令,并截取输出、输出流的问题,这个问题我以前在Java中实现过,由于在C#中没有遇到过类似的 情况,为了避免每次别人问都要一遍一遍演示的情况,特地做了一个简单的例子,实现在WinForm中ping一个网站,并且将ping的结果显示在一个文本框中。
#4
tbResult.Text = "";
ProcessStartInfo start = new ProcessStartInfo("Ping.exe");//设置运行的命令行文件问ping.exe文件,这个文件系统会自己找到
//如果是其它exe文件,则有可能需要指定详细路径,如运行winRar.exe
start.Arguments = txtCommand.Text;//设置命令参数
start.CreateNoWindow = true;//不显示dos命令行窗口
start.RedirectStandardOutput = true;//
start.RedirectStandardInput = true;//
start.UseShellExecute = false;//是否指定操作系统外壳进程启动程序
Process p=Process.Start(start);
StreamReader reader = p.StandardOutput;//截取输出流
string line = reader.ReadLine();//每次读取一行
while (!reader.EndOfStream)
{
tbResult.AppendText(line+" ");
line = reader.ReadLine();
}
p.WaitForExit();//等待程序执行完退出进程
p.Close();//关闭进程
reader.Close();//关闭流
#5
要注意一些问题:
你的“test.exe”最好写全路径,因为在命令行下运行和在网站中运行路径是有差别的。
希望你做的不是需要很高权限才能进行的操作,因为ASP.NET默认是较低的权限运行的(防治权限过高操作危害服务器)。
#6
test.exe 已经设置环境变量,可能是权限问题,我的代码运行其它程序如(winrar.exe,ping.exe..)都是没问题的,但是执行自己写的Test.exe应用程序就提示use error !
如果是权限问题,我在WEB.config,已添加管理员的权限了问题依旧<identity impersonate="true" userName="administrator" password="112233" />
#7
你換個角度想就知道了,到底是誰在運行這段代碼?
你直接在cmd上運行時,可以執行,此時你是什么身份登錄?
而IIS在運行時,其執行帳號絕對不是你自己的帳號,而是ASP.NET Machine Account (ASPNET)
而這個用戶是隸屬與User這個群的..
你直接在cmd上運行時,可以執行,此時你是什么身份登錄?
而IIS在運行時,其執行帳號絕對不是你自己的帳號,而是ASP.NET Machine Account (ASPNET)
而這個用戶是隸屬與User這個群的..
#8
程序的参数应该另外传递吧,尽量不要和命混在一起
#9
注意一下。
#10
学习帮顶!
#11
up
#12
谢谢各位,经再三测试确认存在权限问题,和以上程序无关国。 我在.net里直接运行,是可以的,但发布到IIS就存在以上的问题了。