فيما يتعلق بالمشكلة المماثلة المتمثلة في عدم قدرة ActiveX على إنشاء كائنات Scripting.FileSystemObject، فإن الحلول متشابهة بشكل عام. الشيء الرئيسي هو أن يكون لديك عقل واضح: ضع في اعتبارك أولاً مشكلة تسجيل المكون، وثانيًا مشكلة إذن المكون تكوين الخادم، ثم تحقق منه بعناية
لقد واجهت مشكلة اليوم. أبلغ موقع ويب ASP عن خطأ عند إنشاء صفحة ثابتة:
خطأ في وقت تشغيل Microsoft VBScript "800a01ad"
لا يمكن لمكون ActiveX إنشاء كائن: 'Scripting.FileSystemObject'
في الواقع، هذه المشكلة شائعة نسبيًا. سبب الخطأ هو أن الخادم لا يدعم مكون FSO. غالبًا ما يتم مواجهة هذا الموقف في أنظمة ASP CMS السائدة مثل Fengxun وKexun وDongyi، لأنها جميعًا تعتمد آليات توليد ثابتة وتتطلب دعم مكون FSO. قبل البدء، يجب عليك أولاً استخدام مسبار ASP لاختبار دعم الخادم لمكونات 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) النظر في قضايا الإذن. قم بتنفيذ العمليات التالية بالتسلسل:
قائمة ابدأ -> تشغيل -> رجديت -> حسنًا، ابحث عن HKEY_CLASSES_ROOT/Scripting.FileSystemObject بدوره، وانقر بزر الماوس الأيمن على الأذونات، وأضف أذونات الجميع، وحساب ضيف الإنترنت (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، وتأكد من وجود أي خطأ في طريقة الكتابة لإنشاء الكائن. يجب أن تكون طريقة الكتابة القياسية:
<% Set fso = Server.CreateObject(Scripting.FileSystemObject) %>
يحدث هذا الموقف في الغالب بسبب الإهمال من جانب المبرمج. في الواقع، يمكن إعادة تسمية مكون Scripting.FileSystemObject، مما سيؤدي إلى زيادة أمان الخادم، ويمكننا تغييره في السجل كما يلي:
قائمة ابدأ->تشغيل->رجديت->موافق، ابحث عن HKEY_CLASSES_ROOT/Scripting.FileSystemObject بدوره، وانقر بزر الماوس الأيمن لإعادة التسمية، ثم قم بتنفيذ الخطوة الأولى لتسجيل ملف scrrun.dll. لاحظ أنه عند كتابة البرنامج، يجب عليك إنشاء الكائن بهذا الاسم الجديد، وإلا سيتم الإبلاغ عن خطأ. 7) المرفق: يأتي IIS مع المكونات
هل اكتشفت أن أسباب هذه المشكلات كلها تكمن في مكونات IIS الخاصة، وفيما يلي بعض مكونات IIS الشائعة كمرجع:
MSWC.AdRotator
MSWC.BrowserType
MSWC.NextLink
MSWC.Tools
MSWC.Status
MSWC.Counters
SWC.PermissionChecker
WScript.Shell
مايكروسوفت.XMLHTTP
Scripting.FileSystemObject
ADODB.Connection للتلخيص، فيما يتعلق بالمشكلة المشابهة المتمثلة في عدم قدرة ActiveX على إنشاء كائنات Scripting.FileSystemObject، فإن الحلول متشابهة بشكل عام. الشيء الرئيسي هو الحصول على أفكار واضحة: ضع في اعتبارك أولاً مشكلة تسجيل المكون، وثانيًا مشكلة إذن المكون لا توجد مشكلة في تكوين الخادم. إذا كان الأمر كذلك، فتحقق بعناية من كود مصدر البرنامج الخاص بك!