今天遇到個(gè)問題,一個(gè)ASP網(wǎng)站生成靜態(tài)頁(yè)面時(shí)報(bào)錯(cuò):
Microsoft VBScript 運(yùn)行時(shí)錯(cuò)誤 錯(cuò)誤 '800a01ad'
ActiveX 部件不能創(chuàng)建對(duì)象: 'Scripting.FileSystemObject'
其實(shí)這個(gè)問題比較常見,報(bào)錯(cuò)原因是服務(wù)器不支持FSO組件。像風(fēng)訊、科汛、動(dòng)易這些ASP的主流CMS系統(tǒng)中經(jīng)常會(huì)遇到這種情況,因?yàn)樗麄兌际遣扇§o態(tài)生成機(jī)制的,需要FSO組件支持。在開始之前,你有必要先用ASP探針測(cè)試下服務(wù)器對(duì)FSO組件的支持情況,通常我們使用的是Windows 2003系統(tǒng)的服務(wù)器。
下面說下我的具體解決思路,對(duì)每一種可能會(huì)產(chǎn)生報(bào)錯(cuò)的原因都作了相應(yīng)分析,希望對(duì)你能有所幫助。
1)“scrrun.dll”文件未注冊(cè)。行C:\WINDOWS\system32文件夾下,看下有沒有scrrun.dll文件。如果沒有,就去系統(tǒng)安裝目錄i386文件夾中拷貝一個(gè)過來。接下來,開始菜單->運(yùn)行以下命令注冊(cè)一下FSO組件即可:
regsvr32.exe %windir%/system32/scrrun.dll這樣就開啟了服務(wù)器對(duì)FSO組件的支持,如果你想關(guān)閉FSO組件,則運(yùn)行以下命令:
regsvr32.exe /u %windir%/system32/scrrun.dll正常到這里,你的問題就可以解決了。
2)如果還不行,檢查一下瀏覽器是否禁用了ActiveX控件。正常是不會(huì)的,除非是服務(wù)器,安全級(jí)別才會(huì)嚴(yán)格限制。如果存在這種情況,那就把瀏覽器的安全級(jí)別調(diào)整為中低即可。
3)你的服務(wù)器本身就不支持FSO組件。
4)考慮權(quán)限問題。依次執(zhí)行如下操作:
開始菜單->運(yùn)行->regedit->確定,依次找到HKEY_CLASSES_ROOT\Scripting.FileSystemObject,右鍵“權(quán)限”,加上Everyone、Internet來賓賬號(hào)(IUSR...)用戶的權(quán)限,重啟IIS即可解決。
5)附:服務(wù)器不支持Scripting.Dictionary組件的解決辦法
通過以上幾步就能完美解決ActiveX創(chuàng)建對(duì)象失敗的問題了。如果還出現(xiàn)不支持Scripting.Dictionary組件的問題,解決辦法也是類似的,參考第一步執(zhí)行regsvr32.exe %windir%/system32/scrrun.dll命令即可。如果還沒解決,則考慮權(quán)限問題,可以參照第四步到注冊(cè)表中給這個(gè)對(duì)象添加下權(quán)限即可。舉一反三,如果再遇到類似問題的話,知道怎么去解決了吧!
6)附:Server.CreateObject 失敗解決辦法。我們執(zhí)行程序的時(shí)候可能會(huì)提示類似錯(cuò)誤,如下:
服務(wù)器對(duì)象 錯(cuò)誤 'ASP 0177 : 800401f3'
Server.CreateObject 失敗
/include/test.asp,行38打開test.asp,檢查源碼38行附近,看下創(chuàng)建對(duì)象的寫法有沒有錯(cuò)誤,標(biāo)準(zhǔn)寫法應(yīng)該是:
<% Set fso = Server.CreateObject("Scripting.FileSystemObject") %>
這種情況大多是程序員粗心導(dǎo)致的。其實(shí),Scripting.FileSystemObject組件是可以改名的,這樣會(huì)增加服務(wù)器的安全性,我們可以在注冊(cè)表中更改,方法如下:
開始菜單->運(yùn)行->regedit->確定,依次找到HKEY_CLASSES_ROOT\Scripting.FileSystemObject,右鍵“重命名”,再執(zhí)行第一步注冊(cè)下scrrun.dll文件即可。注意一點(diǎn),你寫程序的時(shí)候要以這個(gè)新名稱創(chuàng)建對(duì)象,否則會(huì)報(bào)錯(cuò)。7)附:IIS自帶組件
有沒有發(fā)現(xiàn)一點(diǎn),這些問題的原因都出在IIS自身組件身上,下面提供下常見的IIS組件,以供參考:
MSWC.AdRotator
MSWC.BrowserType
MSWC.NextLink
MSWC.Tools
MSWC.Status
MSWC.Counters
SWC.PermissionChecker
WScript.Shell
Microsoft.XMLHTTP
Scripting.FileSystemObject
ADODB.Connection小結(jié)一下,關(guān)于ActiveX不能創(chuàng)建Scripting.FileSystemObject對(duì)象的類似問題,大體上解決辦法都是類似的,主要是思想要清晰:首先考慮組件注冊(cè)問題,其次是組件權(quán)限問題,如果服務(wù)器配置沒有問題的話,那就仔細(xì)檢查一下你的程序源碼吧!
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)。