using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace WebApplication3
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Button Button1;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void Button1_Click(object sender, System.EventArgs e);
private string RunCmd(string strCmd)
{
string rInfo;
try
{
Process myProcess = new Process();
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("cmd.exe");
myProcessStartInfo.UseShellExecute = false;
myProcessStartInfo.RedirectStandardOutput = true;
myProcess.StartInfo = myProcessStartInfo;
myProcessStartInfo.Arguments = "/c " + strCmd;
myProcess.Start();
StreamReader myStreamReader = myProcess.StandardOutput;
rInfo = myStreamReader.ReadToEnd();
myProcess.Close();
rInfo = strCmd +"\r\n"+ rInfo;
return rInfo;
}
catch(Exception ex)
{
return ex.Message;
}
}
}
}
F:\x_asedo\WebApplication3\WebForm1.aspx.cs(49): “WebApplication3.WebForm1.Button1_Click(object, System.EventArgs)”必须声明主体,因为它未标记为 abstract 或 extern郁闷死了,大家看下吧,有什么啥好办法,cmd执行命令的项目
调试失败不知道怎么办了。诶。。界面就一个文本框一个button
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;namespace WebApplication3
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.Button Button1;
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void Button1_Click(object sender, System.EventArgs e);
private string RunCmd(string strCmd)
{
string rInfo;
try
{
Process myProcess = new Process();
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("cmd.exe");
myProcessStartInfo.UseShellExecute = false;
myProcessStartInfo.RedirectStandardOutput = true;
myProcess.StartInfo = myProcessStartInfo;
myProcessStartInfo.Arguments = "/c " + strCmd;
myProcess.Start();
StreamReader myStreamReader = myProcess.StandardOutput;
rInfo = myStreamReader.ReadToEnd();
myProcess.Close();
rInfo = strCmd +"\r\n"+ rInfo;
return rInfo;
}
catch(Exception ex)
{
return ex.Message;
}
}
}
}
F:\x_asedo\WebApplication3\WebForm1.aspx.cs(49): “WebApplication3.WebForm1.Button1_Click(object, System.EventArgs)”必须声明主体,因为它未标记为 abstract 或 extern郁闷死了,大家看下吧,有什么啥好办法,cmd执行命令的项目
调试失败不知道怎么办了。诶。。界面就一个文本框一个button
this.RunCmd();
}
我想你大概是这个意思吧。
没有函数体,我想你可能是想点击了button后调用RunCmd()吧,所以应该在Button1_Click调用。
换成这一段(执行dir命令):
private void Button1_Click(object sender, System.EventArgs e){
this.RunCmd("dir");
}
http://218.27.204.17/aspnet/a_user.aspx
using System.Diagnostics;
不加编译通不过。然后把你的Button1_Click改为下面这个样子,可以在页面上看到结果。
private void Button1_Click(object sender, System.EventArgs e) {
Response.Write(this.RunCmd("dir"));
}
结果示例:
dir 驱动器 D 中的卷是 System 卷的序列号是 F07E-F984 D:\WINNT\system32 的目录 2005-02-17 08:51
. 2005-02-17 08:51
.. 2002-03-26 00:26 328 $winnt$.inf 2001-06-27 13:47 2,151 12520437.cpx........
换成这一段(执行dir命令):
private void Button1_Click(object sender, System.EventArgs e){
this.RunCmd("dir");
}
我照做了,还是不行,那个分号我也改了,不行。。错误始终是一样的一个
“WebApplication3.WebForm1.Button1_Click(object, System.EventArgs)”必须声明主体,因为它未标记为 abstract 或 extern
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Diagnostics; //这个引用要加
namespace WebAppCSharpt
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.TextBox TextBox1;
private void Page_Load(object sender, System.EventArgs e){
} /// <summary>
/// certificate test
/// </summary>
#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion private void Button1_Click(object sender, System.EventArgs e) {
string cmd = this.TextBox1.Text ;
if (cmd==null||cmd.Length==0)
return;
//输出执行命令的结果
Response.Write(this.RunCmd(cmd));
}
private string RunCmd(string strCmd) {
string rInfo;
try {
Process myProcess = new Process();
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("cmd.exe");
myProcessStartInfo.UseShellExecute = false;
myProcessStartInfo.RedirectStandardOutput = true;
myProcess.StartInfo = myProcessStartInfo;
myProcessStartInfo.Arguments = "/c " + strCmd;
myProcess.Start();
StreamReader myStreamReader = myProcess.StandardOutput;
rInfo = myStreamReader.ReadToEnd();
myProcess.Close();
rInfo = strCmd +"\r\n"+ rInfo;
return rInfo;
}
catch(Exception ex) {
return ex.Message;
}
}
}
}
佩服你,等下给你加分。调试成功了,不过。
试图运行项目时出错。无法在web服务器上启动调试。。您不具备调试此应用程序的权限。此项目的url位于internet区域
{
string rl;
Process p=new Process(); p.StartInfo.FileName = "cmd.exe";
p.StartInfo.UseShellExecute = false;
p.StartInfo.WorkingDirectory="c:\\";
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;
p.StartInfo.CreateNoWindow = true;
p.Start(); p.StandardInput.WriteLine(strExec);
p.StandardInput.WriteLine("exit"); while((rl=p.StandardOutput.ReadLine())!=null)
{
Response.Write(p.StandardOutput.ReadLine());
}
}把要执行的命令传进来就可以了,但是现在执行完不退出就有问题,必须执行一个命令退出一次,而且像ping这样的命令就打印不出来,建议最好把要执行的命令一行写完,执行一次。因为退出以后再执行的命令还是在默认目录下的。
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vsdebug/html/vxurferrorurlisininternetzone.asp
有问题多查msdn