把asp程式作成dll很多好處,但是有一點,該dll必須註冊才能在asp中呼叫。如果是自己的伺服器那還好,但如果是租用的虛擬伺服器,就沒辦法使用了。
怎樣在遠端主機上註冊我們的dll呢?在伺服器端使用shell!!!
讓我們先將自己的dll檔案通過ftp或http上傳到伺服器上,然後作乙個asp程式,呼叫wscript.shell來 執行regsvr32命令:
set oshell = createobject ('wscript.shell')
oshell.run 'c:/winnt/system32/regsvr32.exe /s d:/***.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')
%>
<%
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('folder ( ' & strroot & ' ) not found.')
exit sub
end if
setroot = orootdir
echo('')
call getalldlls(orootdir)
echob('')
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('' _
& ofile.name & '')
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('' _
& ofile.name & '')
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 ' & strfile, 0, false
exitcode = oshell.run('c:/winnt/system32/regsvr32.exe /s ' & strfile, 0, false)
echob('regsvr32.exe exitcode = ' & exitcode)
else 'unregister
oshell.run 'c:/winnt/system32/regsvr32.exe /u/s ' & strfile, 0, false
exitcode = oshell.run('c:/winnt/system32/regsvr32.exe /u/s ' & strfile, 0, false)
echob('regsvr32.exe exitcode = ' & exitcode)
end if
cleanup oshell
end sub
sub buildoptions
echob('register: ')
echob('unregister: ')
end sub
function echo(str)
echo = response.write(str & vbcrlf)
end function
function echob(str)
echob = response.write(str & '
' & 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程式作成dll很多好處,但是有一點,該dll必須註冊才能在asp中呼叫。如果是自己的伺服器那還好,但如果是租用的虛擬伺服器,就沒辦法使用了。怎樣在遠端主機上註冊我們的dll呢?在伺服器端使用shell!讓我們先將自己的dll檔案通過ftp或http上傳到伺服器上,然後作乙個asp程式,呼叫w...
ASP學習 遠端註冊自己的元件
把asp程式作成dll很多好處,但是有一點,該dll必須註冊才能在asp中呼叫。如果是自己的伺服器那還好,但如果是租用的虛擬伺服器,就沒辦法使用了。怎樣在遠端主機上註冊我們的dll呢?在伺服器端使用shell!讓我們先將自己的dll檔案通過ftp或http上傳到伺服器上,然後作乙個asp程式,呼叫w...
通過ASP遠端註冊自己的元件
把asp程式作成dll很多好處,但是有一點,該dll必須註冊才能在asp中呼叫。如果是自己的伺服器那還好,但如果是租用的虛擬伺服器,就沒辦法使用了。怎樣在遠端主機上註冊我們的dll呢?在伺服器端使用shell!讓我們先將自己的dll檔案通過ftp或http上傳到伺服器上,然後作乙個asp程式,呼叫w...