เกี่ยวกับปัญหาที่คล้ายกันซึ่ง ActiveX ไม่สามารถสร้างออบเจ็กต์ Scripting.FileSystemObject โดยทั่วไปวิธีแก้ไขจะคล้ายกัน สิ่งสำคัญคือการมีจิตใจที่ชัดเจน: อันดับแรกให้พิจารณาปัญหาการลงทะเบียนส่วนประกอบ และประการที่สองคือปัญหาการอนุญาตส่วนประกอบ หากไม่มีปัญหากับ การกำหนดค่าเซิร์ฟเวอร์ จากนั้นตรวจสอบอย่างละเอียด ลองดูซอร์สโค้ดโปรแกรมของคุณ
วันนี้ฉันพบปัญหา เว็บไซต์ ASP รายงานข้อผิดพลาดเมื่อสร้างเพจแบบคงที่:
ข้อผิดพลาดรันไทม์ Microsoft VBScript '800a01ad'
คอมโพเนนต์ ActiveX ไม่สามารถสร้างวัตถุ: 'Scripting.FileSystemObject'
ที่จริงแล้วปัญหานี้ค่อนข้างเกิดขึ้นบ่อย สาเหตุของข้อผิดพลาดคือเซิร์ฟเวอร์ไม่รองรับคอมโพเนนต์ FSO สถานการณ์นี้มักพบในระบบ ASP CMS หลัก เช่น Fengxun, Kexun และ Dongyi เนื่องจากระบบเหล่านี้ทั้งหมดใช้กลไกการสร้างแบบคงที่และต้องการการสนับสนุนส่วนประกอบ FSO ก่อนที่จะเริ่มต้น คุณต้องใช้ ASP Probe เพื่อทดสอบการสนับสนุนของเซิร์ฟเวอร์สำหรับส่วนประกอบ FSO โดยปกติแล้วเราใช้เซิร์ฟเวอร์ Windows 2003
ด้านล่างนี้ฉันจะพูดถึงแนวคิดในการแก้ปัญหาเฉพาะของฉัน และฉันจะวิเคราะห์แต่ละเหตุผลที่เป็นไปได้สำหรับการรายงานข้อผิดพลาด ฉันหวังว่ามันจะเป็นประโยชน์กับคุณ
1) ไฟล์ scrrun.dll ไม่ได้ลงทะเบียน ไปที่โฟลเดอร์ C:/WINDOWS/system32 และดูว่ามีไฟล์ scrrun.dll หรือไม่ ถ้าไม่ ให้ไปที่โฟลเดอร์ i386 ในไดเร็กทอรีการติดตั้งระบบแล้วคัดลอก ถัดไป เมนูเริ่ม -> รันคำสั่งต่อไปนี้เพื่อลงทะเบียนส่วนประกอบ FSO:
regsvr32.exe %windir%/system32/scrrun.dll ซึ่งช่วยให้เซิร์ฟเวอร์สนับสนุนคอมโพเนนต์ FSO หากคุณต้องการปิดคอมโพเนนต์ FSO ให้เรียกใช้คำสั่งต่อไปนี้:
regsvr32.exe /u %windir%/system32/scrrun.dll เป็นเรื่องปกติ และปัญหาของคุณจะได้รับการแก้ไข
2) หากยังคงใช้งานไม่ได้ ให้ตรวจสอบว่าตัวควบคุม ActiveX ถูกปิดใช้งานในเบราว์เซอร์หรือไม่ โดยปกติมันจะไม่เกิดขึ้น เว้นแต่จะเป็นเซิร์ฟเวอร์ ระดับความปลอดภัยจะถูกจำกัดอย่างเข้มงวด ในกรณีนี้ ให้ปรับระดับความปลอดภัยของเบราว์เซอร์เป็นระดับปานกลางถึงต่ำ
3) เซิร์ฟเวอร์ของคุณไม่รองรับส่วนประกอบ FSO
4) พิจารณาประเด็นการอนุญาต ดำเนินการต่อไปนี้ตามลำดับ:
เมนู Start -> Run -> regedit -> ตกลง ค้นหา HKEY_CLASSES_ROOT/Scripting.FileSystemObject ตามลำดับ คลิกขวาที่สิทธิ์ เพิ่มทุกคน สิทธิ์ผู้ใช้ Internet Guest Account (IUSR...) รีสตาร์ท IIS เพื่อแก้ไขปัญหา
5) เอกสารแนบ: วิธีแก้ปัญหาที่เซิร์ฟเวอร์ไม่รองรับส่วนประกอบ Scripting.Dictionary
ด้วยขั้นตอนข้างต้น คุณสามารถแก้ไขปัญหาความล้มเหลวในการสร้างวัตถุ ActiveX ได้อย่างสมบูรณ์แบบ หากยังคงมีปัญหาที่ไม่รองรับส่วนประกอบ Scripting.Dictionary วิธีแก้ไขจะคล้ายกัน โปรดดูขั้นตอนแรกและดำเนินการคำสั่ง regsvr32.exe %windir%/system32/scrrun.dll หากยังไม่ได้รับการแก้ไข ให้พิจารณาปัญหาสิทธิ์ คุณสามารถดูขั้นตอนที่ 4 เพื่อเพิ่มสิทธิ์ให้กับวัตถุนี้ในรีจิสทรี ทำการอนุมานจากตัวอย่างหนึ่งและรู้วิธีแก้ไขหากคุณพบปัญหาที่คล้ายกันอีกครั้ง!
6) เอกสารแนบ: วิธีแก้ปัญหาความล้มเหลวของ Server.CreateObject เมื่อเรารันโปรแกรม เราอาจได้รับแจ้งพร้อมข้อผิดพลาดที่คล้ายกันดังต่อไปนี้:
ข้อผิดพลาดของวัตถุเซิร์ฟเวอร์ 'ASP 0177: 800401f3'
Server.CreateObject ล้มเหลว
/include/test.asp เปิด test.asp ที่บรรทัด 38 ตรวจสอบซอร์สโค้ดใกล้กับบรรทัด 38 และดูว่ามีข้อผิดพลาดใด ๆ ในวิธีการเขียนในการสร้างวัตถุหรือไม่ วิธีการเขียนมาตรฐานควรเป็น:
<% ตั้ง fso = Server.CreateObject (Scripting.FileSystemObject) %>
สถานการณ์นี้ส่วนใหญ่เกิดจากความประมาทของโปรแกรมเมอร์ ในความเป็นจริงส่วนประกอบ Scripting.FileSystemObject สามารถเปลี่ยนชื่อได้ซึ่งจะเพิ่มความปลอดภัยของเซิร์ฟเวอร์เราสามารถเปลี่ยนได้ในรีจิสทรีดังนี้:
เมนู Start->Run->regedit->OK ค้นหา HKEY_CLASSES_ROOT/Scripting.FileSystemObject จากนั้นคลิกขวาเพื่อเปลี่ยนชื่อ จากนั้นดำเนินการขั้นตอนแรกเพื่อลงทะเบียนไฟล์ scrrun.dll โปรดทราบว่าเมื่อคุณเขียนโปรแกรม คุณต้องสร้างวัตถุด้วยชื่อใหม่นี้ มิฉะนั้นข้อผิดพลาดจะถูกรายงาน 7) เอกสารแนบ: IIS มาพร้อมกับส่วนประกอบ
คุณค้นพบว่าสาเหตุของปัญหาเหล่านี้ทั้งหมดอยู่ในส่วนประกอบของ IIS เองหรือไม่ ต่อไปนี้เป็นส่วนประกอบ IIS ทั่วไปสำหรับการอ้างอิง:
MSWC.AdRotator
MSWC.BrowserType
MSWC.NextLink
MSWC.เครื่องมือ
MSWC สถานะ
MSWC.เคาน์เตอร์
SWC.PermissionChecker
WScript.เชลล์
Microsoft.XMLHTTP
การเขียนสคริปต์ FileSystemObject
ADODB.Connection เพื่อสรุปเกี่ยวกับปัญหาที่คล้ายกันซึ่ง ActiveX ไม่สามารถสร้างออบเจ็กต์ Scripting.FileSystemObject โดยทั่วไปแล้ว สิ่งสำคัญคือการมีแนวคิดที่ชัดเจน: อันดับแรกให้พิจารณาปัญหาการลงทะเบียนส่วนประกอบ และประการที่สองคือปัญหาการอนุญาตส่วนประกอบ หากมี ไม่มีปัญหากับการกำหนดค่าเซิร์ฟเวอร์ ถ้าเป็นเช่นนั้น ให้ตรวจสอบซอร์สโค้ดโปรแกรมของคุณอย่างระมัดระวัง!