ASP:远程注册自己的组件
来源:互联网 发布:apache poi 编辑:程序博客网 时间:2024/06/15 07:48
让我们先将自己的dll文件通过ftp或http上传到服务器上,然后作一个asp程序,调用WScript.Shell来 执行regsvr32命令:
- Set oShell = CreateObject ("WScript.Shell")
- oShell.Run "c:/WINNT/system32/regsvr32.exe /s d:/xxx.dll", 0, False
当然如果对方的服务器安全搞的很好的话,这个代码也许就不能用了,但不管怎么样,学习一下 也是好的,:)
在这里也要提醒那些出租空间的朋友,你的服务器是否限制了使用WScript.Shell的权限?还是小心为妙!
完整代码如下,保存为.asp即可使用:
- <% Response.Buffer = True %>
- <% Server.ScriptTimeout = 500
- Dim frmFolderPath, frmFilePath
- frmFolderPath = Request.Form("frmFolderPath")
- frmFilePath = Request.Form("frmDllPath")
- frmMethod = Request.Form("frmMethod")
- btnREG = Request.Form("btnREG")
- %>
- <HTML>
- <HEAD>
- <TITLE>Regsvr32.asp</TITLE>
- <STYLE TYPE="TEXT/CSS">
- .Legend {FONT-FAMILY: veranda; FONT-SIZE: 14px; FONT-WEIGHT: bold; COLOR: blue}
- .FS {FONT-FAMILY: veranda; FONT-SIZE: 12px; BORDER-WIDTH: 4px; BORDER-COLOR: green;
- MARGIN-LEFT:2px; MARGIN-RIGHT:2px}
- TD {MARGIN-LEFT:6px; MARGIN-RIGHT:6px; PADDING-LEFT:12px; PADDING-RIGHT:12px}
- </STYLE>
- </HEAD>
- <BODY>
- <FORM NAME="regForm" METHOD="POST">
- <TABLE BORDER=0 CELLSPACING=6 CELLPADDING=6 MARGINWIDTH=6>
- <TR>
- <TD VALIGN=TOP>
- <FIELDSET ID=FS1 NAME=FS1 CLASS=FS>
- <LEGEND CLASS=Legend>Regsvr Functions</LEGEND>
- Insert Path to DLL Directory<BR>
- <INPUT TYPE=TEXT NAME="frmFolderPath" VALUE="<%=frmFolderPath%>"><BR>
- <INPUT TYPE=SUBMIT NAME=btnFileList VALUE="Build File List"><BR>
- <%
- IF Request.Form("btnFileList") <> "" OR btnREG <> "" Then
- Set RegisterFiles = New clsRegister
- RegisterFiles.EchoB("<B>Select File</B>")
- Call RegisterFiles.init(frmFolderPath)
- RegisterFiles.EchoB("<BR><INPUT TYPE=SUBMIT NAME=btnREG VALUE=" amp; Chr(34) _
- amp; "REG/UNREG" amp; Chr(34) amp; ">")
- IF Request.Form("btnREG") <> "" Then
- Call RegisterFiles.Register(frmFilePath, frmMethod)
- End IF
- Set RegisterFiles = Nothing
- End IF
- %>
- </FIELDSET>
- </TD>
- </TR>
- </TABLE>
- </FORM>
- </BODY>
- </HTML>
- <%
- Class clsRegister
- Private m_oFS
- Public Property Let oFS(objOFS)
- m_oFS = objOFS
- End Property
- Public Property Get oFS()
- Set oFS = Server.CreateObject("Scripting.FileSystemObject")
- End Property
- Sub init(strRoot) 'Root to Search (c:, d:, e:)
- Dim oDrive, oRootDir
- IF oFS.FolderExists(strRoot) Then
- IF Len(strRoot) < 3 Then 'Must Be a Drive
- Set oDrive = oFS.GetDrive(strRoot)
- Set oRootDir = oDrive.RootFolder
- Else
- Set oRootDir = oFS.GetFolder(strRoot)
- End IF
- Else
- EchoB("<B>Folder ( " amp; strRoot amp; " ) Not Found.")
- Exit Sub
- End IF
- setRoot = oRootDir
- Echo("<SELECT NAME=" amp; Chr(34) amp; "frmDllPath" amp; Chr(34) amp; ">")
- Call getAllDlls(oRootDir)
- EchoB("</SELECT>")
- BuildOptions
- End Sub
- Sub getAllDlls(oParentFolder) '??fso?????dll?ocx??
- Dim oSubFolders, oFile, oFiles
- Set oSubFolders = oParentFolder.SubFolders
- Set opFiles = oParentFolder.Files
- For Each oFile in opFiles
- IF Right(lCase(oFile.Name), 4) = ".dll" OR Right(lCase(oFile.Name), 4) = ".ocx" Then
- Echo("<OPTION VALUE=" amp; Chr(34) amp; oFile.Path amp; Chr(34) amp; ">" _
- amp; oFile.Name amp; "</Option>")
- End IF
- Next
- On Error Resume Next
- For Each oFolder In oSubFolders 'Iterate All Folders in Drive
- Set oFiles = oFolder.Files
- For Each oFile in oFiles
- IF Right(lCase(oFile.Name), 4) = ".dll" OR Right(lCase(oFile.Name), 4) = ".ocx" Then
- Echo("<OPTION VALUE=" amp; Chr(34) amp; oFile.Path amp; Chr(34) amp; ">" _
- amp; oFile.Name amp; "</Option>")
- End IF
- Next
- Call getAllDlls(oFolder)
- Next
- On Error GoTo 0
- End Sub
- Sub Register(strFilePath, regMethod)
- Dim theFile, strFile, oShell, exitcode
- Set theFile = oFS.GetFile(strFilePath)
- strFile = theFile.Path
- Set oShell = CreateObject ("WScript.Shell")
- IF regMethod = "REG" Then 'Register
- oShell.Run "c:/WINNT/system32/regsvr32.exe /s " amp; strFile, 0, False
- exitcode = oShell.Run("c:/WINNT/system32/regsvr32.exe /s " amp; strFile, 0, False)
- EchoB("regsvr32.exe exitcode = " exitcode)
- Else 'unRegister
- oShell.Run "c:/WINNT/system32/regsvr32.exe /u/s " amp; strFile, 0, False
- exitcode = oShell.Run("c:/WINNT/system32/regsvr32.exe /u/s " amp; strFile, 0, False)
- EchoB("regsvr32.exe exitcode = " exitcode)
- End IF
- Cleanup oShell
- End Sub
- Sub BuildOptions
- EchoB("Register: <INPUT TYPE=RADIO NAME=frmMethod VALUE=REG CHECKED>")
- EchoB("unRegister: <INPUT TYPE=RADIO NAME=frmMethod VALUE=UNREG>")
- End Sub
- Function Echo(str)
- Echo = Response.Write(str amp; vbCrLf)
- End Function
- Function EchoB(str)
- EchoB = Response.Write(str amp; "<BR>" amp; vbCrLf)
- End Function
- Sub Cleanup(obj)
- If isObject(obj) Then
- Set obj = Nothing
- End IF
- End Sub
- Sub Class_Terminate()
- Cleanup oFS
- End Sub
- End Class
- %>
- ASP学习:远程注册自己的组件
- ASP学习:远程注册自己的组件
- ASP学习:远程注册自己的组件
- ASP学习:远程注册自己的组件
- ASP远程注册自己的组件
- ASP远程注册自己的组件
- ASP:远程注册自己的组件
- 通过ASP远程注册自己的组件
- 通过ASP远程注册自己的组件
- 通过ASP远程注册自己的组件
- 远程注册自己的组件
- 远程注册自己的组件
- 远程注册自己的组件
- 远程注册自己的组件
- 远程注册组件
- 利用ASP远程注册DLL的方法
- 利用ASP远程注册DLL的方法
- 利用ASP远程注册DLL的方法
- 轻松学习Spring IoC容器和Dependency Injection模式(转)
- 关于继承和动态绑定的机制
- 关于40位MD5加密的破解
- Report Rapport in MOSS 2007
- 嵌入式操作系统呈现多元话趋势
- ASP:远程注册自己的组件
- 避免窗口一闪而过
- 热点问题Arm9与arm7的比较及优化
- 在客户端如何修改ftp的用户密码
- HAIKUO-SOFT 作品推荐 四叶草 よつのは 攻略
- win2003文件共享
- 业主的改进意识让我惊讶,我们应该更加积极地看待和推进CMMi的改进!
- SAP BOM详细解析...
- 如何更改FTP密码