眾所周知,F(xiàn)ileSystemObject組件的強(qiáng)大功能及破壞性是它屢屢被免費(fèi)主頁提供商(那些支持ASP)的禁用的原因。
第一種:用RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll(win98路徑)來注銷該組件。
第二種:修改Progid的值,在ASP里調(diào)用組件的方式通常是 Set 對(duì)象名=Server.CreateObject("Progid"),這時(shí)候我們就可以通過修改注冊(cè)表中的Progid值從達(dá)到禁用該組件的方法。在 開始-運(yùn)行中敲入regedit,然后找到HKEY_CLASSES_ROOT\Scripting.FileSystemObject,這時(shí)候我們就可以更改該rogid的值了,如改成Scripting.FileSystemObject8。這樣在ASP頁里就這樣調(diào)用了:
<%@ Language=Vbscript%>
<%
Set Fs=Server.CreateObject("Scripting.FileSystemObject8")
%>
(如果你前面沒有調(diào)用過該組件的話,則無須重啟,就可以看到效果了,否則請(qǐng)重啟后看效果。)
這時(shí)候我們看看還是用原來的調(diào)用方法的結(jié)果:
<%@ Language=Vbscript%>
<%
Set Fs=Server.CreateObject("Scripting.FileSystemObject")
%>
這時(shí)候的運(yùn)行結(jié)果為:
服務(wù)器對(duì)象 錯(cuò)誤 'ASP 0177 : 800401f3'
Server.CreateObject 失敗
/aspimage/testfile2.asp, 行3
800401f3
OK,達(dá)到我們的要求。
第三種:能通過修改Progid值來禁用該組件,那也可以通過修改Clsid來實(shí)現(xiàn)。
我們知道,除了CreateObject方法以外,也可以使用一般的<object>標(biāo)注建立一個(gè)組件,我們可以在ASP里面使用HTML的<object>標(biāo)注,以便在網(wǎng)頁中加入一個(gè)組件。方法是:<object runat=server id=fs1 scope=page progid="Scripting.FileSystemObj
ect"></object>Runat表示是在服務(wù)端執(zhí)行,Scope表示組件的生命周期,可以選用Session,Application或page(表示當(dāng)前頁面,也可缺省)這種寫法對(duì)我們沒用,還有一種寫法是:
<object runat=server id=fs1 scope=page classid="clsid:clsid的值"></obj
ect>
我們也可以通過修改該Clsid的值而禁用該組件,如將注冊(cè)表中HKEY_CLASSES_ROOT\Scripting.FileSystemObject\CLSID的值0D43FE01-F093-11CF-8940-00A0C9054228改成0D43FE01-F093-11CF-8940-00A0C9054229(改了最后面一位),這時(shí)候的寫法為:
<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11
CF-8940-00A0C9054229"></object>
看運(yùn)行結(jié)果,沒問題,OK。這時(shí)候我們?cè)儆?lt;object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054228"></object>這時(shí)候就出錯(cuò)了。
新建一用戶:iusr_domain
IIS里設(shè)置對(duì)應(yīng)站點(diǎn)的匿名用戶IUSR_DoMAIN
CACLS: 設(shè)置目錄權(quán)限
這樣FSO可用,但不會(huì)影響別人