三種禁用FileSystemObject組件的方法 - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- 三種禁用FileSystemObject組件的方法 (http://www.webasp.net/article/9/8333.htm) |
| -- 作者:未知 -- 發佈日期: 2004-03-18 |
| 眾所周知,FileSystemObject組件的強大功能及破壞性是它屢屢被免費主頁
提供商(那些支持ASP)的禁用的原因,我整理了一下,本來只找到兩種方法,後來 被某人一刺激,硬是想到第三種不為人所知的方法,呵呵,也不知道是不是這樣的。 第一種:用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可用,但不會影響別人 |
| webasp.net |