2011-04-26 59 views
1

请帮助我如何从客户端打开命令提示符。当我点击按钮时,它应该打开命令提示符。我在我的个人电脑上尝试过,它在开发环境中工作,但是在IIS中部署时不能打开。如何从我的应用程序@Client端打开命令提示符

代码:

var Processstartinfo = new ProcessStartInfo 
    {   
     FileName = "cmd" 
    }; 
    Process process = Process.Start(Processstartinfo); 
+2

这是服务器端代码..所以它会在服务器上打开这个 – V4Vendetta 2011-04-26 07:21:39

+0

你想让别人访问你的网站和cmd.exe窗口出现?你想要这个的原因是什么?你是否明白,如果浏览器厂商允许这样做,那么接管你的计算机并窃取磁盘上的所有内容将是非常容易的。 – IanNorton 2011-04-26 08:06:00

+0

实际上,在我的应用程序中,自动Shell脚本批处理文件将运行@background ..因此,如果任何用户想要重新检查这些命令,那些可以通过打开命令propmt来追踪命令,这就是为什么我们需要打开 – santhosh 2011-04-26 08:22:17

回答

5

asp.net的服务器上运行。我怀疑你在本地运行在cassini上,所以你的服务器桌面和客户端桌面是一样的。你正在做的是打开命令提示符在服务器;如果你仔细考虑它,这是一个有趣的DDOS攻击面(即不这样做)。

简短回答:你不能这样做。没有浏览器会(或者应该......我会为IE做补贴; p)允许这样做。客户端操作系统甚至不需要支持命令提示符,也不需要.NET;即使这样做,很少有浏览器会让你产生一个进程。

+0

但我需要做...你可以帮助我如何去做.. – santhosh 2011-04-26 07:25:34

+4

@santhosh如果你“需要”做一些你不应该从浏览器上做的事情,那么你做出了糟糕的设计选择。浏览器***不能可靠地做到这一点***。有几个黑客**仅用于IE浏览器**我可以想到,但是这是第二个糟糕的设计决策。如果您需要客户端的命令提示符,您应该编写一个桌面应用程序,而不是浏览器应用程序。 – 2011-04-26 07:27:17

1

您需要创建一个虚假的命令提示符才能执行此操作。正如马克所说,它引入了巨大的安全风险,我决不会这样做。

要解决它,您需要重定向标准输入/输出,以便您可以读取/写入它们。 Here is an example。创建命令过程并将Process对象保存在会话变量中。

在客户端添加<div id="commandOutput"></div><input type="text" name="command" /><input type="submit" value="Execute command" />。使用jquery或类似的钩住按钮点击事件。

使用ajax提交表单。通过将其写入保存在会话变量中的Process对象中的stdin来执行该命令。从标准读出并将结果返回给客户端,该客户端使用jQuery或其他方法将其添加到commandOutput div。

这应该做到这一点。请注意,任何有访问权限的人都可以在您的服务器上使用任何东西

+0

这是一个答案,但(如你注意)*所以*危险。而且,它对农场来说效果并不好。通过VPN的RPD在这里是首选... – 2011-04-26 08:07:08

相关问题