نمایش نتایج 1 تا 4 از 4

نام تاپیک: رفع مشکل نمایش فایلهای CHM,MHT (یک باگ باستانی از win98 تا Vista)

  1. #1
    کاربر دائمی آواتار BOB
    تاریخ عضویت
    خرداد 1383
    محل زندگی
    http://www.mshams.ir
    پست
    450

    Tick رفع مشکل نمایش فایلهای CHM,MHT (یک باگ باستانی از win98 تا Vista)

    Key: “CHM help files error: The page cannot be displayed” “CHM MHT error Hash # sign in path” “CHM error on network resource”

    سلام

    ممکن است تا به حال با مشکل عدم نمایش فایلهای راهنمای CHM یا صفحات آرشیو MHT مواجه شده باشید. فایلهایی که از صحت محتوای آنها اطمینان دارید، ناگهان بدون هیچ دلیلی از کار باز می‌ایستند.
    اولین بار (شاید هفت سال پیش) در ویندوز 98 با این مشکل برخورد کردم. فایلهای CHM موجود در پوشه “..\..\#Library\..” هیچکدام نمایش داده نمیشدند. مسلما امکان نداشت که همه فایلها ناگهان تخریب شده باشند. (Corruped Files!)

    بعد از کمی بررسی دقیقتر متوجه شدم که در صورت کپی کردن فایلها در مسیر دیگر، همگی بدون هیچ مشکلی اجرا میشوند. در نهایت به این نکته رسیدم که مشکل اصلی مربوط تغییر نام پوشه “Library” به “#Library” میباشد. ... واقعا احمقانه بود! در صورت وجود کاراکتر “#” (Hash sign or Sharp) در مسیر فایل مربوطه، چه در نام یکی از پوشه‌های والد و چه در نام خود فایل CHM ، پروسه “HH.exe” قادر به نمایش فایل مربوطه نبود.

    مدتها بعد از این ماجرا، به مشکل مشابه‌ای در زمان ظهور ویندوز XP، در مورد فایلهای MHT برخورد کردم. واقعا جالب بود که بعد از این همه سال هنوز این مشکل پابرجا بود. البته همان موقع گزارشی از مشکل مزبور را به همراه چند فایل ضمیمه به Micro$oft ارسال نمودم.
    و اکنون پس از گذشت سالها، شاهد تکرار این رسوایی بزرگ در ویندوز Vista هستم. شاید این مشکل باستانی‌ترین باگ ویندوز عزیز باشد. (1998 to 2007)

    در هر صورت، پس از جستجو در اینترنت متوجه شدم افراد زیادی تا به حال با این مشکل روبرو بوده و چه بسا فایلهایCHM , MHT یسیار بسیار زیادی به این خاطر پاک شده باشند. نمیدانم تا به حال مرجعی رسما به خاطر این مشکل ادعای غرامت کرده یا خیر..؟؟ (امیدوارم مبلغی از آن غرامت کذایی به من برسه)


    با توجه به نکات فوق، برای رفع مشکل به نکات زیر توجه کنید:

    1. در صورت وجود کاراکترهای “%” (Percent) , “#” (Hash sign or Sharp) در نام فایل CHM یا MHT ، و یا در نام یکی از پوشه‌های والد فایل مورد نظر، میبایست نام مذکور را تغییر داده و کاراکتر مورد نظر را حذف کنید. مثلا اگر مدتها به این مسئله فکر میکردید که چرا فایلهای CHM موجود در پوشه “..\C#‎\..” خراب شده‌اند، دلیل، وجود کاراکتر "#" در نام پوشه بوده است. پس آن را به “..\C \..” و یا “..\C Sharp\” تغییر دهید.


    2. در صورتی که با مشکل مشابه‌ای در حین باز کردن این فایلها در درایوهای شبکه (Network Resources) برخورد کردید، روی فایل مورد نظر راست کلیک کرده و در صفحه Properties روی دکمه Unblock و سپس Apply کلیک کنید. البته روش ساده‌تر اینست که فایل مربوطه را در سیستم خود کپی کرده تا به صورت Local آن را باز کنید. همچنین روش دیگری در سایت Drexplain.com به شرح زیر ذکر شده:

    ابتدا Regedit را باز کرده و کلید (key) زیر را بسازید:

     
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x \ItssRestrictions


    سپس درون این کلید مقدار DWORD با نام MaxAllowedZone ایجاد کنید. (برای ایجاد آن، کافی است روی کلید ItssRestrictions راست کلیک کرده و” New\DWORD Value” را انتخاب کنید) حال مقدار آن را با توجه به گزینه‌های زیر، به یکی از اعداد 0 تا 4 تغییر دهید. (ترجیحا عدد 1)

     
    0 = My Computer 1 = Local Intranet Zone
    2 = Trusted sites Zone 3 = Internet Zone 4 = Restricted Sites Zone


    ظاهرا این مسئله به دلیل وجود برخی ملاحظات امنیتی در رابطه با صدور اجازه دسترسی به برخی فایلها، در منابع شبکه بوجود می‌آید.

     

    http://support.microsoft.com/kb/896054

    http://support.microsoft.com/kb/312456

    http://www.drexplain.com/press/chm-f...isplayed-error


    موشکافی:
    در مورد گزینه دوم (مسیرهای شبکه) مسئله کاملا حل شده و دلیل آن مشخص است، اما در مورد گزینه اول به بررسی بیشتری نیاز است.
    عده‌ای معتقد‌اند دلیل این حساسیت به کاراکتر "#"، انتخاب آن به عنوان Anchor در HTML بوده، و به این دلیل که فایلهای CHM در واقع مجموعه‌ای کامپایل شده از فایلهای Htm هستند، در حین نمایش آنها توسط IE این مشکل بروز می‌کند.(IE و HH در واقع، دو دست در یک جیب هستند)
    اما مسلما در مورد کاراکتر "%" این مسئله صادق نیست. همچنین در صورتی که فایلهای MHT مذکور را توسط HH بازکنیم، این مشکل دیده نمیشود. (حالتهای مختلفی که در این زمینه ممکن است روی دهد، در فایل ضمیمه قابل مشاهده‌اند)

    فی‌الحال در حین دیباگ کردن پروسه HH متوجه شدم که پس از طی چند مرحله، رشته (String) حاوی مسیر مربوطه (مثلا “C:\Test\AbC#‎cba.Chm” ) از مکان "#" به بعد حذف شده (Truncated) و به چیزی مانند (مثلا “C:\Test\Abc” ) تبدیل می‌شود.

    ممکن است این مسئله مربوط به خطایی در یکی از توابع رشته‌ای (مثلا RTLstring functions در Ntdll.dll ) باشد. هرچند که در انتهای اجرای پروسه مذکور، تابع SetWindowText به درستی، رشته کامل را در نوار عنوان پنجره ثبت کرد. لازم به ذکر است که در حین دیباگ این پروسه در WinME با نتایج متفاوت زیر روبرو شدم:

     
    "access violation at 0x5d30e386: read of address 0xffffffff"
    "hh.exe error in hhctrl.ocx"


    در حال حاظر نیز (اگر فرصتی باشد) می‌خواهم به بررسی گزینه‌های زیر بپردازم:

     
    url.dll, mshtml.dll, shdoclc.dll, ntdll.dll, WS2_32.dll, jscript.dll
    RtlGetFullPathName_U, RtlInitUnicodeString, RtlDosPathNameToNtPathName_U,
    RtlAnsiStringToUnicodeString, RtlInitAnsiString


    در هر صورت از دوستان علاقمند به اینگونه مسائل فنی خواهش میکنم زمانی را صرف دیباگ کردن پروسه‌های HH و IE کرده، تا شاید دلیل اصلی این مشکل را بیابیم.


    موفق باشید
    فایل های ضمیمه فایل های ضمیمه

  2. #2
    شاید مشکل ربطی به این داشته باشه که هش مارک در آدرس فایلهای اچ تی ام ال بعنوان مشخص کنندهء Fragment Identifier بکار میره. البته ظاهرا خودتون هم اشاره کردید بهش!
    پس چندان عجیب و بعید نیست که IE باهاشون به مشکل میخوره! حداقل براحتی قابل حدسه. HH هم با % به مشکل نمیخوره چون % تنها در یوآرال ها هست که بنا به محدودیت و مشخصات پروتکل معنای خاصی پیدا میکنه (بطور مثال %20 به معنای فاصلهء خالی هست و غیره) نه در اپلیکیشنهای لوکال که با آدرسهای سیستم فایل کار میکنن.
    با این توصیفات ممکنه این یک باگ نبوده باشه به اون معنا؛ گرچه ممکنه اصلاح پذیر بوده باشه.
    برای کار با اینطور آدرسها هم بنظرم کافیه فرم URL Encode شدهء اون آدرسها رو وارد کنید.

  3. #3
    منتظر تایید آدرس ایمیل
    تاریخ عضویت
    خرداد 1386
    پست
    11
    واقعا باگ جالبیه
    یه ایده خوب برای امنیت نرم افزار بهم دادی
    ممنون

  4. #4
    کاربر دائمی آواتار Mohammad_Mnt
    تاریخ عضویت
    اسفند 1381
    محل زندگی
    جنگلی به نام ایران
    سن
    42
    پست
    1,875
    راه‌حل: xCHM

تاپیک های مشابه

  1. مشکل در برنامهای نوشته شده تحت Win98 فارسی
    نوشته شده توسط mhaeri در بخش Access
    پاسخ: 0
    آخرین پست: سه شنبه 19 دی 1385, 09:34 صبح
  2. VB.net در win98 اجرا مشود یا نه
    نوشته شده توسط hbi در بخش VB.NET
    پاسخ: 8
    آخرین پست: چهارشنبه 14 بهمن 1383, 23:28 عصر
  3. نسخه 9.2 با win98 کار میکنه؟
    نوشته شده توسط alilittle در بخش گزارش سازی با Crystal Report
    پاسخ: 1
    آخرین پست: پنج شنبه 17 دی 1383, 21:08 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •