您现在的位置是:首页
>
cadal命令怎么用 以在ASP环境下调用的运行CMD命令的VB组件
以在ASP环境下调用的运行CMD命令的VB组件 有时我们在管理服务器时为了安全起见会禁用Wi dow Scri ti g Ho t 这样能防止某些不法用户利用WSH生成一个We Shell 对服务
以在ASP环境下调用的运行CMD命令的VB组件

有时我们在管理服务器时为了安全起见会禁用Windows Scripting Host 这样能防止某些不法用户利用WSH生成一个WebShell 对服务器造成很大的安全隐患 但如果我们又想禁用WSH 又想使用自己的WebShell用于服务器的管理怎么办呢?这里介绍了一种实现ASP中运行CMD并显示结果的组件编程 希望对大家能有所帮助 首先我们新建一个ActiveDLL工程 命名为ASPCMD 新建的类命名为CMDShell 在 Project 的 Referenct 中添加一个引用 Microsoft Active Server Pages Object Library 然后我们的思路是使用Window API ShellExecute调用cmd exe 将运行的结果保存到一个临时文本文件 然后读出这个文件的内容显示出来 以下是工程ASPCMD的类CMDShell cls的代码 Option Explicit Dim rp As Response Dim rq As Request Dim ap As Application Dim sr As Server Dim sn As Session Private Declare Sub Sleep Lib kernel (ByVal dwMilliseconds As Long) Private Declare Function ShellExecute Lib shell dll Alias ShellExecuteA (ByVal hWnd As Long ByVal lpOperation As String ByVal lpFile As String ByVal lpParameters As String ByVal lpDirectory As String ByVal nShowCmd As Long) As Long Private Sub ShellEx(ByVal sLocation As String ByVal sPara As String Optional MaxedForm As Boolean = False) On Error GoTo errhandle: Dim lR As Long Dim Style As Long Dim hWnd As Long If MaxedForm Then Style = vbMaximizedFocus Else Style = vbNormalFocus End If lR = ShellExecute(hWnd open sLocation sPara Style) If (lR < ) Or (lR > ) Then success Else rp Write Error Occered when starting the program & sLocation End If errhandle: rp Write Error: & Err Description End Sub Public Sub OnStartPage(ByVal mysc As ScriptingContext) Set rp = mysc Response Set rq = mysc Request Set sr = mysc Server Set ap = mysc Application Set sn = mysc Session End Sub Public Sub OnEndPage() Set rp = Nothing Set rq = Nothing Set sr = Nothing Set ap = Nothing Set sn = Nothing End Sub Private Function FileExists(Filename As String) As Boolean Dim i As Integer On Error Resume Next i = Len(Dir$(Filename)) If Err Or i = Then FileExists = False Else FileExists = True End Function Private Function IsOpen(Filename As String) As Boolean Dim fFile As Integer Dim msg As String fFile = FreeFile() On Error GoTo ErrOpen Open Filename For Binary Lock Read Write As fFile Close fFile Exit Function ErrOpen: If Err Number <> Then msg = Error # & Str(Err Number) & was generated by _ & Err Source & Chr( ) & Err Description Else IsOpen = True End If End Function Public Sub Exec (ByVal strCmd As String) On Error GoTo errhandle: Dim myTimer As Integer myTimer = Dim strOut As String Dim strFname As String //生成一个临时文件 If Len(App Path) = Then strFname = App Path & lp txt Else strFname = App Path & lp txt End If //如果在运行前文件已存在则删除之 If FileExists(strFname) Then Kill strFname End If //运行行用户的CMD命令 并将结果输出到临时文件中 //注意cmd exe的/c参数是指运行完一个命令后马上结束会话状态 等同于在windows的run中输入的CMD命令 Dim strPara As String strPara = /c & strCmd & > & strFname ShellEx cmd exe strPara //等待生成输出文件 Do While Not FileExists(strFname) Sleep DoEvents myTimer = myTimer + If myTimer = Then Exit Do End If Loop myTimer = //等待文件输出完毕 Do While IsOpen(strFname) Sleep DoEvents myTimer = myTimer + If myTimer = Then Exit Do End If Loop //显示输出文件的内容 Open strFname For Input As # Do While Not EOF( ) Line Input # strOut rp Write strOut & vbCrLf Loop Close # Sleep //删除临时文件 Kill strFname Exit Sub errhandle: rp Write error occured: & Err Description End Sub 生成ASPCMD dll 使用regsvr aspcmd dll注册组件 以下是调用该DLL的一个ASP程序例子 <%@LANGUAGE= VBSCRIPT %> <style type= text/css > <! singleborder { border: px solid; background color: # ; font family: Arial Helvetica sans serif; color: #FFFFFF; } noborder { border: px none; background color: # ; font family: Arial Helvetica sans serif; color: #FFFFFF; } body{background color: # ;SCROLLBAR FACE COLOR: # ; FONT SIZE: px; SCROLLBAR HIGHLIGHT COLOR: # ; SCROLLBAR SHADOW COLOR: # ; SCROLLBAR DLIGHT COLOR: # ; SCROLLBAR ARROW COLOR: # ; SCROLLBAR TRACK COLOR: # ; SCROLLBAR DARKSHADOW COLOR: # font family: Fixedsys; font size: pt} > </style> <form action= method= post > <input name= cmd class= singleborder value= <%=request form( cmd )%> size= > <input type= submit class= singleborder value= EXECUTE > </form> <% if request form( cmd )<> then set testme=server createobject( aspcmd cmdshell ) %> <div class= noborder ><%=request Form( cmd )%></div><br> <textarea cols= rows= class= noborder > <%=testme exec (request form( cmd ))%></textarea> <% set testme=nothing end if %> 以下是运行Ipconfig /all的结果 Windows IP Configuration Host Name : ibm wrk Primary DNS Suffix : Node Type : Broadcast IP Routing Enabled : No WINS Proxy Enabled : No Ethernet adapter 本地连接: Connection specific DNS Suffix : Description : Intel(R) PRO/ VM Neork Connection Physical Address : BD D EB DHCP Enabled : No IP Address : Subnet Mask : Default Gateway : DNS Servers : lishixinzhi/Article/program/net/201311/11821
很赞哦! (1034)
相关文章
- cad中xww是什么命令 CAD中的命令MS,也就是MSPACE,是起什么作用的?
- 延伸命令cad CAD中 延伸 命令怎样用?是做什么用的?
- CAD块的使用方法 CAD中BR命令使用方法
- 如果要输入dos命令 CAD中ms命令是什么意思?
- 电脑运行桌面命令 在电脑上用执行CMD命令怎么用他是干什么的
- 单例模式三种实现方式 浅谈ASP.NET开发下的MVC设计模式的实现
- vba调用dll函数实例 查看某个程序都调用哪些api函数
- 命令行编译cpp 如何在命令行下编译一个ASP.NET项目
- vb各控件的功能 VB2003-2008 遍历控件的方法
- 天正电气v50支持CAD什么版本 天正CAD 中按Ctrl+v在不同图中粘贴出现“未知命令T81_tpasteclip”,直接在CAD中就能操作
爱学记

微信收款码
支付宝收款码