|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于ASP提供的是一对多的服务,所以用户的一些特殊需求很难得到满足。把asp程序作成dll良多优点,可是有一点,该dll必需注册才干在asp中挪用。假如是本人的服务器那还好,但假如是租用的假造服务器,就没举措利用了。
如何在远程主机上注册我们的dll呢?在服务器端利用Shell!!!
让我们先将本人的dll文件经由过程ftp或http上传到服务器上,然后作一个asp程序,挪用WScript.Shell来实行regsvr32命令:
SetoShell=CreateObject("WScript.Shell")
oShell.Run"c:WINNTsystem32egsvr32.exe/sd:xxx.dll",0,False
固然假如对方的服务器平安弄的很好的话,这个代码大概就不克不及用了,但不论怎样,进修一下也是好的,:)
在这里也要提示那些出租空间的伴侣,你的服务器是不是限定了利用WScript.Shell的权限?仍是当心为妙
完全代码以下,保留为.asp便可利用:
<%Response.Buffer=True%>
<%Server.ScriptTimeout=500
DimfrmFolderPath,frmFilePath
frmFolderPath=Request.Form("frmFolderPath")
frmFilePath=Request.Form("frmDllPath")
frmMethod=Request.Form("frmMethod")
btnREG=Request.Form("btnREG")
%>
<HTML>
<HEAD>
<TITLE>Regsvr32.asp</TITLE>
<STYLETYPE="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>
<FORMNAME="regForm"METHOD="POST">
<TABLEBORDER=0CELLSPACING=6CELLPADDING=6MARGINWIDTH=6>
<TR>
<TDVALIGN=TOP>
<FIELDSETID=FS1NAME=FS1CLASS=FS>
<LEGENDCLASS=Legend>RegsvrFunctions</LEGEND>
InsertPathtoDLLDirectory<BR>
<INPUTTYPE=TEXTNAME="frmFolderPath"VALUE="<%=frmFolderPath%>"><BR>
<INPUTTYPE=SUBMITNAME=btnFileListVALUE="BuildFileList"><BR>
<%
IFRequest.Form("btnFileList")""ORbtnREG""Then
SetRegisterFiles=NewclsRegister
RegisterFiles.EchoB("<B>SelectFile</B>")
CallRegisterFiles.init(frmFolderPath)
RegisterFiles.EchoB("<BR><INPUTTYPE=SUBMITNAME=btnREGVALUE="&Chr(34)_
&"REG/UNREG"&Chr(34)&">")
IFRequest.Form("btnREG")""Then
CallRegisterFiles.Register(frmFilePath,frmMethod)
EndIF
SetRegisterFiles=Nothing
EndIF
%>
</FIELDSET>
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>
<%
ClassclsRegister
Privatem_oFS
PublicPropertyLetoFS(objOFS)
m_oFS=objOFS
EndProperty
PublicPropertyGetoFS()
SetoFS=Server.CreateObject("Scripting.FileSystemObject")
EndProperty
Subinit(strRoot)RoottoSearch(c:,d:,e:)
DimoDrive,oRootDir
IFoFS.FolderExists(strRoot)Then
IFLen(strRoot)<3ThenMustBeaDrive
SetoDrive=oFS.GetDrive(strRoot)
SetoRootDir=oDrive.RootFolder
Else
SetoRootDir=oFS.GetFolder(strRoot)
EndIF
Else
EchoB("<B>Folder("&strRoot&")NotFound.")
ExitSub
EndIF
setRoot=oRootDir
Echo("<SELECTNAME="&Chr(34)&"frmDllPath"&Chr(34)&">")
CallgetAllDlls(oRootDir)
EchoB("</SELECT>")
BuildOptions
EndSub
SubgetAllDlls(oParentFolder)经由过程fso枚举一切的dll和ocx文件
DimoSubFolders,oFile,oFiles
SetoSubFolders=oParentFolder.SubFolders
SetopFiles=oParentFolder.Files
ForEachoFileinopFiles
IFRight(lCase(oFile.Name),4)=".dll"ORRight(lCase(oFile.Name),4)=".ocx"Then
Echo("<OPTIONVALUE="&Chr(34)&oFile.Path&Chr(34)&">"_
&oFile.Name&"</Option>")
EndIF
Next
OnErrorResumeNext
ForEachoFolderInoSubFoldersIterateAllFoldersinDrive
SetoFiles=oFolder.Files
ForEachoFileinoFiles
IFRight(lCase(oFile.Name),4)=".dll"ORRight(lCase(oFile.Name),4)=".ocx"Then
Echo("<OPTIONVALUE="&Chr(34)&oFile.Path&Chr(34)&">"_
&oFile.Name&"</Option>")
EndIF
Next
CallgetAllDlls(oFolder)
Next
OnErrorGoTo0
EndSub
SubRegister(strFilePath,regMethod)
Dim</p>大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧 |
|