การเปิดไฟล์ CHM ทำให้เกิด:“ การนำทางไปยังเว็บเพจถูกยกเลิก”


84

ฉันกำลังพยายามเปิดไฟล์. chm

ฉันดาวน์โหลดแหล่งที่มาแตกไฟล์แล้วดับเบิลคลิกWaffle.chmและคลิก "เปิด" แต่ไม่ว่าฉันจะคลิกองค์ประกอบใดในไฟล์ chm ฉันจะได้รับข้อความ:

Navigation to the webpage was canceled.  
What you can try: 
Retype the address.  

ใส่คำอธิบายภาพที่นี่

เกิดอะไรขึ้นที่นี่?

คำตอบ:


168

สรุป

Microsoft Security Updates 896358 & 840315 บล็อกการแสดงเนื้อหาไฟล์ CHM เมื่อเปิดจากไดรฟ์เครือข่าย (หรือเส้นทาง UNC ) นี่เป็นความพยายามของ Windows ในการหยุดการโจมตีเวกเตอร์สำหรับไวรัส / มัลแวร์ไม่ให้ติดคอมพิวเตอร์ของคุณและได้บล็อกไฟล์. chm ที่ดึงข้อมูลผ่านโปรโตคอล "InfoTech" ซึ่งไฟล์ chm นี้ใช้

สรุปปัญหาของ Microsoft: http://support.microsoft.com/kb/896054

แนวทางแก้ไข

  1. หากคุณใช้ Windows Server 2008, Windows 7, windows ได้สร้างการแก้ไขด่วน คลิกขวาที่ไฟล์ chm และคุณจะได้รับกล่องโต้ตอบ "yourfile.chm Properties" ที่ด้านล่างปุ่มที่เรียกว่า "Unblock" จะปรากฏขึ้น คลิกเลิกบล็อกแล้วกดตกลงแล้วลองเปิดไฟล์ chm อีกครั้งก็ทำงานได้อย่างถูกต้อง ตัวเลือกนี้ไม่สามารถใช้ได้กับ Windows รุ่นก่อนหน้าก่อน WindowsXP (SP3)

  2. แก้ปัญหาโดยการย้ายไฟล์ chm ของคุณออกจากไดรฟ์เครือข่าย คุณอาจไม่ทราบว่าคุณกำลังใช้ไดรฟ์เครือข่ายโปรดตรวจสอบอีกครั้งทันที: คลิกขวาที่ไฟล์. chm ของคุณคลิกคุณสมบัติและดูที่ฟิลด์ "ตำแหน่ง" หากเริ่มต้นด้วยแบ็กสแลชสองตัวแบบนี้แสดง\\epicserver\blah\ว่าคุณกำลังใช้ไดรฟ์บนเครือข่าย ดังนั้นในการแก้ไขให้คัดลอกไฟล์ chm แล้ววางลงในไดรฟ์ในเครื่องเช่น C: \ หรือ E: จากนั้นลองเปิดไฟล์ chm อีกครั้ง windows จะไม่หลุดออกไป

  3. ทางเลือกสุดท้ายหากคุณไม่สามารถคัดลอก / ย้ายไฟล์ออกจากไดรฟ์ในเครือข่าย หากคุณต้องเปิดในตำแหน่งที่ตั้งอยู่และคุณกำลังใช้ Windows รุ่นที่น้อยกว่าเช่น XP, Vista, ME หรืออื่น ๆ คุณจะต้องบอก Windows ด้วยตนเองว่าอย่าทำอะไรเกินเลยกับไฟล์. chm นี้ HHReg (HTML Help Registration Utility)ยูทิลิตี้ทำให้งานนี้ทำงานโดยอัตโนมัติ โดยทั่วไปคุณจะดาวน์โหลดยูทิลิตี้ HHReg โหลดไฟล์. chm ของคุณกดตกลงและจะสร้างคีย์รีจิสทรีที่จำเป็นเพื่อบอกไม่ให้ Windows ปิดกั้น สำหรับข้อมูลเพิ่มเติม: http://www.winhelponline.com/blog/fix-cannot-view-chm-files-network-xp-2003-vista/

Windows 8 หรือ 10? -> อัปเกรดเป็น Windows XP


3
ฉันไม่เห็นปุ่ม "เลิกบล็อก" ใน WinXP SP3 หรือ WinVista Home Premium
ฟรี

โซลูชันที่ 1 ไม่ได้อยู่ใน Windows 8 มีวิธีง่ายๆใน win8 หรือไม่?
countunique

2
ไม่มีโซลูชันใดที่เสนอตรงกับ 4 โซลูชันที่เป็นไปได้เนื่องจากบทความ KB อ้างอิงของฉัน การตั้งค่า 'MaxAllowedZone' เป็น '1' ช่วยแก้ปัญหาให้ฉันได้
Abbrask

UNBLOCK ไม่ได้ช่วยคุณต้องเปิดคัดลอกไฟล์ไปยังไดรฟ์ภายในเครื่องและเปิดจากไดรฟ์ภายใน (ที่ไม่ใช่เครือข่าย)
Erdinc Ay

1
ปัญหานี้ส่งผลต่อ chm ที่ดาวน์โหลดจากอินเทอร์เน็ตด้วย ปุ่มปลดบล็อก / ช่องทำเครื่องหมายอาจไม่อยู่ที่นั่นทันทีหลังจากดาวน์โหลด จากประสบการณ์ของฉันต้องเปิด chm จากระบบไฟล์ในเครื่องก่อนดูว่ามันอับปางแล้วปิดจากนั้นไปที่คุณสมบัติไฟล์เพื่อปลดล็อกเท่านั้น
Frédéric

43

"การปลดบล็อก" ไฟล์ช่วยแก้ปัญหาได้ ภาพหน้าจอ:

ใส่คำอธิบายภาพที่นี่


ลืมไปแล้วเพราะไม่ได้ใช้เคล็ดลับนี้มานานแล้วขอบคุณที่เตือนอีกครั้ง
kta

@kaziTanvir Ahsan ดีใจที่ช่วยได้
colemik

การย้ายจากตำแหน่งเครือข่ายไปยังตำแหน่งในพื้นที่นั้นไม่เพียงพอคุณต้องปลดบล็อกเหมือนในภาพหน้าจอนี้ ขอบคุณ @trismarck
leinad13

ได้ผล! ขอบคุณ. ฉันไม่เคยคิดได้ด้วยตัวเอง
NilsB

ไม่พบตัวเลือกดังกล่าวกับ win-7 แทนที่จะเปิดไฟล์ / w ฉันคัดลอกไปยังเครื่องในพื้นที่ของฉันและมันใช้งานได้
tsenapathy

11

ชนะ 8 x64:

เพียงแค่ย้ายไปยังโฟลเดอร์อื่นหรือเปลี่ยนชื่อโฟลเดอร์ของคุณ (ในกรณีของฉัน: โฟลเดอร์ของฉันคือ "c #") หลีกเลี่ยงการใช้สัญลักษณ์บนชื่อโฟลเดอร์ ตั้งชื่อด้วยตัวอักษร

เสร็จแล้ว


นี้ยังใช้งานได้ ไฟล์. chm ของฉันอยู่ในโฟลเดอร์นี้ C: \ C # \ ตัวอย่างจากนั้นฉันก็ย้ายไปที่ C: \ temp และ boom! มันได้ผล! ขอบคุณสำหรับสิ่งนี้. :)
klaydze

ยอดเยี่ยม! ฉันเป็นผู้ใช้ Windows 10: ต้องลบ "#" ทั้งจากชื่อไฟล์และชื่อโฟลเดอร์จากไฟล์วิธีใช้ c # chm เก่า
Marcelo Bergweiler

11

นอกเหนือจากคำตอบของ Eric Leschinski และเนื่องจากนี่คือ stackoverflow ซึ่งเป็นโซลูชันทางโปรแกรม:

Windows ใช้ส้อมไฟล์ที่ซ่อนอยู่เพื่อทำเครื่องหมายเนื้อหาว่า "ดาวน์โหลด" การตัดทอนสิ่งเหล่านี้เป็นการปลดบล็อกไฟล์ ชื่อของสตรีมที่ใช้สำหรับ CHM คือ "Zone.Identifier" หนึ่งสามารถเข้าถึงสตรีมโดยต่อท้าย: streamname เมื่อเปิดไฟล์ (สำรองข้อมูลในครั้งแรกในกรณีที่ RTL ของคุณยุ่ง!)

ในเดลฟีจะมีลักษณะดังนี้:

var f : file;
begin
 writeln('unblocking ',s);
 assignfile(f,'some.chm:Zone.Identifier');
 rewrite(f,1);
 truncate(f);
 closefile(f);
end;

ฉันบอกว่าในระบบไฟล์ที่ไม่ได้แยก (เช่น FAT32) มีไฟล์ที่ซ่อนอยู่ แต่ฉันยังไม่ได้ไปที่ด้านล่าง

DeleteFile () ของ Ps Delphi ควรรู้จักส้อมด้วย


คำตอบที่น่าสนใจมาก ฉันจะหาข้อมูลเพิ่มเติมเกี่ยวกับสิ่งแยกไฟล์ที่ซ่อนอยู่นี้ได้ที่ไหน
ViRuSTriNiTy

MSDN. เช่น sb ตั้งข้อสังเกตว่า deleteefile ใช้งานได้เช่นกันและฉันดูการโทรที่เกี่ยวข้องใน MSDN และวิธีการทำงานของฟังก์ชันนั้นได้รับการบันทึกไว้ เฉพาะ Zone.Identifier บิตที่ฉันได้รับจากอินเทอร์เน็ต นอกจากนี้ยังใช้งานได้เช่น EXE ที่ถูกบล็อกหากคุณมีการตั้งค่าความปลอดภัยสูงสำหรับ MSIE
Marco van de Voort

6

ทางออกที่ชัดเจนคือการอนุญาตให้โปรโตคอล InfoTech ทำงานในโซนอินทราเน็ต

เพิ่มค่าต่อไปนี้ลงในรีจิสทรีและปัญหาควรได้รับการแก้ไข:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000001

ข้อมูลเพิ่มเติมที่นี่: http://support.microsoft.com/kb/896054


4

ไปที่เริ่ม

ประเภท regsvr32 hhctrl.ocx

คุณควรได้รับข้อความแสดงความสำเร็จเช่น:

"DllRegisterServer ใน hhctrl.ocx สำเร็จ"

ตอนนี้ลองเปิดไฟล์ CHM ของคุณอีกครั้ง


1
Voww ... ที่เหมาะกับฉัน ... (คลิกขวาที่ไฟล์คุณสมบัติไม่แสดงปุ่ม 'ปลดบล็อก' ในขณะที่ใช้งานได้ดี)
tsenapathy

3

วิธีอื่นคือการใช้ซอฟต์แวร์ของบุคคลที่สามอื่น ลิงค์นี้แสดงซอฟต์แวร์ของบุคคลที่สามเพิ่มเติมเพื่อดูไฟล์ chm ...

ฉันลองใช้ SumatraPDF แล้วก็ใช้ได้ดี


2

ฉันแก้ไขสิ่งนี้โดยทางโปรแกรมในซอฟต์แวร์ของฉันโดยใช้ C ++ Builder

ก่อนที่จะกำหนดไฟล์วิธีใช้ CHM Application->HelpFile = HelpFileNameฉันตรวจสอบว่ามีสตรีม "Zone.Identifier" หรือไม่และเมื่อใดฉันก็ลบออก

String ZIStream(HelpFileName + ":Zone.Identifier") ;

if (FileExists(ZIStream))
    { DeleteFile(ZIStream) ; }

1

เห็นได้ชัดว่ามีระดับการพิสูจน์ตัวตนที่แตกต่างกัน บทความส่วนใหญ่ที่ฉันอ่านบอกให้คุณตั้งค่า MaxAllowedZone เป็น '1' ซึ่งหมายความว่าอนุญาตให้ใช้โซนเครื่องและโซนอินทราเน็ตได้ แต่ '4' อนุญาตให้เข้าถึงโซน 'ทั้งหมด'

สำหรับข้อมูลเพิ่มเติมโปรดอ่านบทความนี้: https://support.microsoft.com/en-us/kb/892675

นี่คือลักษณะของรีจิสทรีของฉัน (ฉันไม่แน่ใจว่ามันจะใช้ได้กับไวลด์การ์ด แต่ดูเหมือนว่าจะใช้ได้กับฉัน):

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x]

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"MaxAllowedZone"=dword:00000004

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTMLHelp\1.x\ItssRestrictions]
"UrlAllowList"="\\\\<network_path_root>;\\\\<network_path_root>\*;\\ies-inc.local;http://www.*;http://*;https://www.*;https://*;"

ตามหมายเหตุเพิ่มเติมที่น่าแปลกคือต้องใช้คีย์ "UrlAllowList" เพื่อให้ทำงานนี้บนพีซีเครื่องอื่น แต่ไม่ใช่การทดสอบของฉัน อาจไม่จำเป็นเลย แต่เมื่อฉันเพิ่มเข้าไปมันก็แก้ไขปัญหาได้ ผู้ใช้อาจไม่ได้ปิดไฟล์ต้นฉบับหรืออะไรทำนองนั้น ดังนั้นเพียงแค่พิจารณา ฉันขอแนะนำให้ลองน้อยที่สุดและทดสอบจากนั้นเพิ่มหากจำเป็น เมื่อคุณยืนยันคุณสามารถทำให้ใช้งานได้หากจำเป็น โชคดี!

แก้ไข:ป.ล. อีกวิธีหนึ่งที่ใช้ได้ผลคือการแมปเส้นทางไปยังเครือข่ายภายในเครื่องโดยใช้ mklink / d (การเชื่อมโยงสัญลักษณ์ใน Windows 7 หรือใหม่กว่า) แต่การแมปอักษรระบุไดรฟ์เครือข่าย (Z: สำหรับการทดสอบ) ไม่ได้ผล เป็นเพียงอาหารสำหรับความคิดและฉันไม่ต้อง 'เลิกบล็อก' ไฟล์ใด ๆ นอกจากนี้ 'โซลูชัน' ที่ยอมรับก็ไม่สามารถแก้ปัญหาให้ฉันได้


ไม่มีปัญหาฉันดีใจที่มีคนได้รับประโยชน์ ดีที่สุด!
jacktrader
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.