大家都知道文件系統對象組件的強大和破壞性是那些支持ASP的提供者反复禁止它的原因,本文是錯新技術頻道小編介紹的三種FileSystemObject組件的禁用方法,希望對你學習有幫助!
第一種:用RegSrv32 /u C:/WINDOWS/SYSTEM/scrrun.dll(win98路徑)來註銷該組
件。此方法過於狠毒,屬於同歸於盡的方法,大家都沒得用,是下招
第二種:修改Progid的值,在ASP裡調用組件的方式通常是Set 對象名=Server.
CreateObject("Progid"),這時候我們就可以通過修改註冊表中的Progid值從達
到禁用該組件的方法。在開始-運行中敲入regedit,然後找到HKEY_CLASSES_ROO
T/Scripting.FileSystemObject,這時候我們就可以更改該Progid的值了,如改
成Scripting.FileSystemObject8。這樣在ASP頁裡就這樣調用了:
<%@ Language=Vbscript%>
<%
Set Fs=Server.CreateObject("Scripting.FileSystemObject8")
%>
(如果你前面沒有調用過該組件的話,則無須重啟,就可以看到效果了,否則請重
啟後看效果。 )
這時候我們看看還是用原來的調用方法的結果:
<%@ Language=Vbscript%>
<%
Set Fs=Server.CreateObject("Scripting.FileSystemObject")
%>
這時候的運行結果為:
服務器對象錯誤'ASP 0177 : 800401f3'
Server.CreateObject 失敗
/aspimage/testfile2.asp, 行3
800401f3
(OK,達到我們的要求)
該方法由於本人遲了兩步,結果就讓別人搶著回答了,這樣極大的刺激了我,結
果就產生了第三種方法。
第三種:細心的高手們會想,既然能通過修改Progid值來禁用該組件,那Clsid是
否也可以來修改呢? (OK,你想得和我一樣)我們知道,除了CreateObject方法以
外,也可以使用一般的<object>標註建立一個組件,我們可以在ASP裡面使用HTM
L的<object>標註,以便在網頁中加入一個組件。方法是:
<object runat=server id=fs1 scope=page progid="Scripting.FileSystemObj
ect"></object>
Runat表示是在服務端執行,Scope表示組件的生命週期,可以選用Session,Appl
ication或page(表示當前頁面,也可缺省)
這種寫法對我們沒用,還有一種寫法是:
<object runat=server id=fs1 scope=page classid="clsid:clsid的值"></obj
ect>
我們也可以通過修改該Clsid的值而禁用該組件,如將註冊表中HKEY_CLASSES_RO
OT/Scripting.FileSystemObject/CLSID的值0D43FE01-F093-11CF-8940-00A0C90
54228改成0D43FE01-F093-11CF-8940-00A0C9054229(改了最後面一位),這時候的
寫法為:
<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11
CF-8940-00A0C9054229"></object>
看運行結果,沒問題,OK。這時候我們再用
<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11
CF-8940-00A0C9054228"></object>
這時候就出錯了。
新建一用戶:iusr_domain
IIS裡設置對應站點的匿名用戶IUSR_DOMAIN
CACLS: 設置目錄權限
這樣FSO可用,但不會影響別人
上文介紹的是三種FileSystemObject組件的禁用方法,相信大家對於這方面知識都了解了吧!不管我們在做什麼工作,都需要進修自己,讓自己變得更加強大!