程序是在本地的,不是在服务器上。
25 个解决方案
#1
可能说的不太清楚
举个例子
本地有个命令行程序nt.exe 可输入参数
点击按钮
CMD窗口显示所有用户列表
举个例子
本地有个命令行程序nt.exe 可输入参数
点击按钮
CMD窗口显示所有用户列表
#2
命令行运行完不退出可以用 cmd /k 你的命令
用process.start调用。
用process.start调用。
#3
我试试
#4
这个路径怎么写?程序在D盘根目录 调试时可以执行 但通过IE直接访问网站不能执行
#5
调试时可以 但还有问题
1.程序执行完后没返回到程序所在路径
2.用IE直接访问 程序能执行 但窗口不能弹出 权限的问题?
#6
没权限,要么在客户机上装个软件,要么换个解决方案
#7
通过IE直接访问网站,当然不行。那会在一个系统进程中执行,而不是当前用户下,所以桌面上看不到的。
#8
事实上,更不允许通过服务器访问本地的程序。否则就乱套了。
搞一个病毒网站那就太容易了——只要你访问我的网站,我就执行你客户端上的format c:,那多恐怖。
搞一个病毒网站那就太容易了——只要你访问我的网站,我就执行你客户端上的format c:,那多恐怖。
#9
权限怎么改?要用什么软件?先不想换方案
#10
自己局域网上用 安全先不用考虑
#11
我是说,根本办不到,因为标准的浏览器不管你是在哪里用,都是不支持你这么做的——事实上你的代码只能在服务器上运行。
除非你在本地部署一个客户端控件。
除非你在本地部署一个客户端控件。
#12
BS的执行本地CMD,可以用JS或者VBS
C#代码是在服务端执行的,你现在可以执行可能是因为是在本地测试,服务端和客户端都是同一台机器
C#代码是在服务端执行的,你现在可以执行可能是因为是在本地测试,服务端和客户端都是同一台机器
#13
IE默认的安全级别下是干不了这活的
#14
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
namespace StudentMain_Killer
{ ///
/// DOS命令输出类
///
public class CommandDo
{
/**/
///
/// 执行DOS命令,返回DOS命令的输出
///
/// dos命令
/// 返回输出,如果发生异常,返回空字符串
public static string Execute(string dosCommand)
{
return Execute(dosCommand, 6 * 1000);
}
/**/
///
/// 执行DOS命令,返回DOS命令的输出
///
/// dos命令
/// 等待命令执行的时间(单位:毫秒),如果设定为0,则无限等待
/// 返回输出,如果发生异常,返回空字符串
public static string Execute(string dosCommand, int milliseconds)
{
string output = ""; //输出字符串
if (dosCommand != null && dosCommand != "")
{
Process process = new Process(); //创建进程对象
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe"; //设定需要执行的命令
startInfo.Arguments = "/C " + dosCommand; //设定参数,其中的“/C”表示执行完命令后马上退出
startInfo.UseShellExecute = false; //不使用系统外壳程序启动
startInfo.RedirectStandardInput = false; //不重定向输入
startInfo.RedirectStandardOutput = true; //重定向输出
startInfo.CreateNoWindow = true; //不创建窗口
process.StartInfo = startInfo;
try
{
if (process.Start()) //开始进程
{
if (milliseconds == 0)
process.WaitForExit(); //这里无限等待进程结束
else
process.WaitForExit(milliseconds); //这里等待进程结束,等待时间为指定的毫秒
output = process.StandardOutput.ReadToEnd();//读取进程的输出
}
}
catch
{
}
finally
{
if (process != null)
process.Close();
}
}
return output;
}
}
}
#15
我晕 ,一时没注意写成小写了
楼主将就着看吧。
楼主将就着看吧。
#16
首先分析一下,你是B/S结构,所有代码都是在服务端运行的啊,服务器只返回解析完成的HTML。
所以写服务端代码是不行的。
要想在客户端执行只能用脚本语言:比如JS,vbs等。。。
这种方式要求支持ActiveX
所以写服务端代码是不行的。
要想在客户端执行只能用脚本语言:比如JS,vbs等。。。
<script language="javascript" type="text/javascript">
var myshell = new ActiveXObject( "WScript.shell" );
myshell.Run( 'ipconfig', 1, true );
</script>
这种方式要求支持ActiveX
#17
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/K " + dosCommand;
startInfo.Arguments = "/K " + dosCommand;
#18
这个方法可以 但窗口弹出来就没了
#19
<script language="javascript" type="text/javascript">
var myshell = new ActiveXObject( "WScript.shell" );
myshell.Run( 'cmd /k ipconfig', 1, true );
</script>
var myshell = new ActiveXObject( "WScript.shell" );
myshell.Run( 'cmd /k ipconfig', 1, true );
</script>
#20
程序结束后的路径为什么不是命令行程序所在的路径呢?怎么改成程序所在的路径?谢谢!
#21
上面的问题还没解决
又有新的问题了
想用按钮执行JS里的方法 但没反应
<script language="javascript" type="text/javascript">
function open(){
var myshell = new ActiveXObject( "WScript.shell" );
myshell.Run( 'cmd /k ipconfig', 1, true );
}
</script>
<input name="op" type="button" onclick="open()" value="打开程序" />
或者用Button事件后台执行
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>open();</script>");
但都没反应 怎么回事?谢谢
又有新的问题了
想用按钮执行JS里的方法 但没反应
<script language="javascript" type="text/javascript">
function open(){
var myshell = new ActiveXObject( "WScript.shell" );
myshell.Run( 'cmd /k ipconfig', 1, true );
}
</script>
<input name="op" type="button" onclick="open()" value="打开程序" />
或者用Button事件后台执行
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>open();</script>");
但都没反应 怎么回事?谢谢
#22
#23
用Button事件后台执行
前台:
<asp:Button ID="Button1" runat="server" Text="打开程序" onclick="Button1_Click" />
后台:
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>open();</script>",true);
没反应
前台:
<asp:Button ID="Button1" runat="server" Text="打开程序" onclick="Button1_Click" />
后台:
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>open();</script>",true);
没反应
#24
程序结束后的路径为什么不是命令行程序所在的路径呢?怎么改成程序所在的路径?谢谢!
#25
现在可以执行本地程序了 但还有些问题
感谢caozhy和haukwong,学到不少东西,谢谢。
结帖吧!
感谢caozhy和haukwong,学到不少东西,谢谢。
结帖吧!
#1
可能说的不太清楚
举个例子
本地有个命令行程序nt.exe 可输入参数
点击按钮
CMD窗口显示所有用户列表
举个例子
本地有个命令行程序nt.exe 可输入参数
点击按钮
CMD窗口显示所有用户列表
#2
命令行运行完不退出可以用 cmd /k 你的命令
用process.start调用。
用process.start调用。
#3
我试试
#4
这个路径怎么写?程序在D盘根目录 调试时可以执行 但通过IE直接访问网站不能执行
#5
调试时可以 但还有问题
1.程序执行完后没返回到程序所在路径
2.用IE直接访问 程序能执行 但窗口不能弹出 权限的问题?
#6
没权限,要么在客户机上装个软件,要么换个解决方案
#7
通过IE直接访问网站,当然不行。那会在一个系统进程中执行,而不是当前用户下,所以桌面上看不到的。
#8
事实上,更不允许通过服务器访问本地的程序。否则就乱套了。
搞一个病毒网站那就太容易了——只要你访问我的网站,我就执行你客户端上的format c:,那多恐怖。
搞一个病毒网站那就太容易了——只要你访问我的网站,我就执行你客户端上的format c:,那多恐怖。
#9
权限怎么改?要用什么软件?先不想换方案
#10
自己局域网上用 安全先不用考虑
#11
我是说,根本办不到,因为标准的浏览器不管你是在哪里用,都是不支持你这么做的——事实上你的代码只能在服务器上运行。
除非你在本地部署一个客户端控件。
除非你在本地部署一个客户端控件。
#12
BS的执行本地CMD,可以用JS或者VBS
C#代码是在服务端执行的,你现在可以执行可能是因为是在本地测试,服务端和客户端都是同一台机器
C#代码是在服务端执行的,你现在可以执行可能是因为是在本地测试,服务端和客户端都是同一台机器
#13
IE默认的安全级别下是干不了这活的
#14
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
namespace StudentMain_Killer
{ ///
/// DOS命令输出类
///
public class CommandDo
{
/**/
///
/// 执行DOS命令,返回DOS命令的输出
///
/// dos命令
/// 返回输出,如果发生异常,返回空字符串
public static string Execute(string dosCommand)
{
return Execute(dosCommand, 6 * 1000);
}
/**/
///
/// 执行DOS命令,返回DOS命令的输出
///
/// dos命令
/// 等待命令执行的时间(单位:毫秒),如果设定为0,则无限等待
/// 返回输出,如果发生异常,返回空字符串
public static string Execute(string dosCommand, int milliseconds)
{
string output = ""; //输出字符串
if (dosCommand != null && dosCommand != "")
{
Process process = new Process(); //创建进程对象
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = "cmd.exe"; //设定需要执行的命令
startInfo.Arguments = "/C " + dosCommand; //设定参数,其中的“/C”表示执行完命令后马上退出
startInfo.UseShellExecute = false; //不使用系统外壳程序启动
startInfo.RedirectStandardInput = false; //不重定向输入
startInfo.RedirectStandardOutput = true; //重定向输出
startInfo.CreateNoWindow = true; //不创建窗口
process.StartInfo = startInfo;
try
{
if (process.Start()) //开始进程
{
if (milliseconds == 0)
process.WaitForExit(); //这里无限等待进程结束
else
process.WaitForExit(milliseconds); //这里等待进程结束,等待时间为指定的毫秒
output = process.StandardOutput.ReadToEnd();//读取进程的输出
}
}
catch
{
}
finally
{
if (process != null)
process.Close();
}
}
return output;
}
}
}
#15
我晕 ,一时没注意写成小写了
楼主将就着看吧。
楼主将就着看吧。
#16
首先分析一下,你是B/S结构,所有代码都是在服务端运行的啊,服务器只返回解析完成的HTML。
所以写服务端代码是不行的。
要想在客户端执行只能用脚本语言:比如JS,vbs等。。。
这种方式要求支持ActiveX
所以写服务端代码是不行的。
要想在客户端执行只能用脚本语言:比如JS,vbs等。。。
<script language="javascript" type="text/javascript">
var myshell = new ActiveXObject( "WScript.shell" );
myshell.Run( 'ipconfig', 1, true );
</script>
这种方式要求支持ActiveX
#17
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "/K " + dosCommand;
startInfo.Arguments = "/K " + dosCommand;
#18
这个方法可以 但窗口弹出来就没了
#19
<script language="javascript" type="text/javascript">
var myshell = new ActiveXObject( "WScript.shell" );
myshell.Run( 'cmd /k ipconfig', 1, true );
</script>
var myshell = new ActiveXObject( "WScript.shell" );
myshell.Run( 'cmd /k ipconfig', 1, true );
</script>
#20
程序结束后的路径为什么不是命令行程序所在的路径呢?怎么改成程序所在的路径?谢谢!
#21
上面的问题还没解决
又有新的问题了
想用按钮执行JS里的方法 但没反应
<script language="javascript" type="text/javascript">
function open(){
var myshell = new ActiveXObject( "WScript.shell" );
myshell.Run( 'cmd /k ipconfig', 1, true );
}
</script>
<input name="op" type="button" onclick="open()" value="打开程序" />
或者用Button事件后台执行
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>open();</script>");
但都没反应 怎么回事?谢谢
又有新的问题了
想用按钮执行JS里的方法 但没反应
<script language="javascript" type="text/javascript">
function open(){
var myshell = new ActiveXObject( "WScript.shell" );
myshell.Run( 'cmd /k ipconfig', 1, true );
}
</script>
<input name="op" type="button" onclick="open()" value="打开程序" />
或者用Button事件后台执行
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>open();</script>");
但都没反应 怎么回事?谢谢
#22
#23
用Button事件后台执行
前台:
<asp:Button ID="Button1" runat="server" Text="打开程序" onclick="Button1_Click" />
后台:
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>open();</script>",true);
没反应
前台:
<asp:Button ID="Button1" runat="server" Text="打开程序" onclick="Button1_Click" />
后台:
ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>open();</script>",true);
没反应
#24
程序结束后的路径为什么不是命令行程序所在的路径呢?怎么改成程序所在的路径?谢谢!
#25
现在可以执行本地程序了 但还有些问题
感谢caozhy和haukwong,学到不少东西,谢谢。
结帖吧!
感谢caozhy和haukwong,学到不少东西,谢谢。
结帖吧!