Beim Öffnen einer CHM-Datei wird Folgendes angezeigt: "Die Navigation zur Webseite wurde abgebrochen."

84

Ich versuche eine .chm-Datei zu öffnen.

Ich habe die Quelle heruntergeladen, extrahiert und auf Waffle.chm"Öffnen" doppelklickt und geklickt. Unabhängig davon, auf welches Element in der chm-Datei ich klicke, wird folgende Meldung angezeigt:

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

Geben Sie hier die Bildbeschreibung ein

Was ist denn hier los?

Eric Leschinski
quelle

Antworten:

168

Zusammenfassung

Microsoft Security Updates 896358 und 840315 blockieren die Anzeige des Inhalts von CHM-Dateien, wenn diese von einem Netzwerklaufwerk (oder einem UNC-Pfad ) geöffnet werden . Dies ist der Versuch von Windows, zu verhindern, dass Angriffsvektoren für Viren / Malware Ihren Computer infizieren, und hat die .chm-Datei blockiert, die Daten über das "InfoTech" -Protokoll zeichnet, das diese chm-Datei verwendet.

Microsoft-Zusammenfassung des Problems: http://support.microsoft.com/kb/896054

Lösungen

  1. Wenn Sie Windows Server 2008, Windows 7, verwenden, hat Windows eine schnelle Lösung erstellt. Klicken Sie mit der rechten Maustaste auf die chm-Datei, und Sie erhalten das Dialogfeld "yourfile.chm Properties". Unten wird eine Schaltfläche mit dem Namen "Unblock" angezeigt. Klicken Sie auf Entsperren und drücken Sie OK. Versuchen Sie erneut, die chm-Datei zu öffnen. Sie funktioniert ordnungsgemäß. Diese Option ist für frühere Windows-Versionen vor Windows XP (SP3) nicht verfügbar.

  2. Lösen Sie das Problem, indem Sie Ihre chm-Datei vom Netzlaufwerk entfernen. Möglicherweise wissen Sie nicht, dass Sie ein Netzwerklaufwerk verwenden. Überprüfen Sie dies jetzt noch einmal: Klicken Sie mit der rechten Maustaste auf Ihre CHM-Datei, klicken Sie auf Eigenschaften und sehen Sie sich das Feld "Speicherort" an. Wenn es mit zwei Backslashes wie diesem beginnt : \\epicserver\blah\, verwenden Sie ein Netzwerklaufwerk. Um das Problem zu beheben, kopieren Sie die chm-Datei und fügen Sie sie in ein lokales Laufwerk wie C: \ oder E: ein. Versuchen Sie dann, die chm-Datei erneut zu öffnen. Windows flippt nicht aus.

  3. Letzter Ausweg, wenn Sie die Datei nicht vom Netzwerklaufwerk kopieren / verschieben können. Wenn Sie es dort öffnen müssen, wo es sich befindet, und eine kleinere Version von Windows wie XP, Vista, ME oder anderen verwenden, müssen Sie Windows manuell anweisen, nicht über diese .chm-Datei auszuflippen. Das Dienstprogramm HHReg (HTML Help Registration Utility) automatisiert diese Aufgabe. Grundsätzlich laden Sie das Dienstprogramm HHReg herunter, laden Ihre CHM-Datei, drücken OK und es werden die erforderlichen Registrierungsschlüssel erstellt, um Windows anzuweisen, sie nicht zu blockieren. Für weitere Informationen: http://www.winhelponline.com/blog/fix-cannot-view-chm-files-network-xp-2003-vista/

Windows 8 oder 10? -> Upgrade auf Windows XP.

Eric Leschinski
quelle
3
Ich sehe die Schaltfläche "Entsperren" weder unter WinXP SP3 noch unter WinVista Home Premium
GetFree am
Lösung 1 ist nicht in Windows 8, gibt es einen einfachen Weg für Win8?
Countunique
2
Keine der vorgeschlagenen Lösungen entspricht den 4 möglichen Lösungen in meinem KB-Artikel. Das Setzen von 'MaxAllowedZone' auf '1' hat das Problem für mich
behoben
UNBLOCK hilft nicht, Sie müssen die Datei auf ein lokales Laufwerk kopieren und vom lokalen (nicht netzwerkbasierten) Laufwerk öffnen.
Erdinc Ay
1
Dieses Problem betrifft auch chm, das aus dem Internet heruntergeladen wurde. Die Schaltfläche zum Entsperren / Kontrollkästchen ist möglicherweise nicht direkt nach dem Herunterladen vorhanden. Nach meiner Erfahrung muss das chm zuerst über das lokale Dateisystem geöffnet, als beschädigt angesehen, geschlossen und dann nur zum Entsperren der Dateieigenschaften aufgerufen werden.
Frédéric
43

Das "Entsperren" der Datei behebt das Problem. Bildschirmfoto:

Geben Sie hier die Bildbeschreibung ein

colemik
quelle
Ich habe es vergessen, da ich diesen Trick lange nicht benutzt habe. Danke, dass du mich wieder daran erinnert hast.
Kta
@ kaziTanvirAhsan froh, dass ich helfen konnte.
Colemik
Der Wechsel vom Netzwerkstandort zum lokalen Standort reicht nicht aus - Sie müssen die Blockierung wie in diesem Screenshot aufheben. Danke @trismarck
leinad13
Das hat funktioniert! Vielen Dank. Ich hätte es nie alleine herausgefunden.
NilsB
konnte eine solche Option mit Win-7 nicht finden. Anstatt eine / w-Datei zu öffnen, habe ich auf meinen lokalen Computer kopiert und es funktioniert.
Tsenapathy
11

Gewinnen Sie 8 x 64:

Verschieben Sie es einfach in einen anderen Ordner oder benennen Sie Ihren Ordner um (in meinem Fall: Mein Ordner war "c #"). Vermeiden Sie die Verwendung eines Symbols für den Ordnernamen. Nennen Sie es mit Buchstaben.

getan.

Hammond22
quelle
Das funktioniert auch. Meine .chm-Datei befand sich in diesem Ordner C: \ C # \ Samples, dann habe ich sie nach C: \ temp verschoben und boom! Es klappt! Danke dafür. :)
klaydze
Ausgezeichnet! Ich bin ein Windows 10-Benutzer: Ich musste das "#" sowohl aus dem Dateinamen als auch aus dem Ordnernamen aus einer alten c # chm-Hilfedatei entfernen.
Marcelo Bergweiler
11

Zusätzlich zu Eric Leschinskis Antwort und weil dies ein Stackoverflow ist, eine programmatische Lösung:

Windows verwendet versteckte Dateigabeln, um Inhalte als "heruntergeladen" zu markieren. Durch Abschneiden werden die Dateien entsperrt. Der Name des für CHMs verwendeten Streams lautet "Zone.Identifier". Sie können auf Streams zugreifen, indem Sie beim Öffnen der Datei Folgendes anhängen: streamname. (Bewahren Sie Backups beim ersten Mal auf, falls Ihre RTL das durcheinander bringt!)

In Delphi würde es so aussehen:

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

Mir wurde gesagt, dass es auf nicht gegabelten Dateisystemen (wie FAT32) versteckte Dateien gibt, aber ich bin dem noch nicht auf den Grund gegangen.

Ps Delphis DeleteFile () sollte auch Gabeln erkennen.

Marco van de Voort
quelle
Sehr interessante Antwort. Wo finde ich weitere Informationen zu dieser Sache mit versteckten Dateigabeln?
ViRuSTriNiTy
MSDN. Zum Beispiel machte sb eine Bemerkung, dass deletefile auch funktioniert, und ich habe mir den relevanten Aufruf in MSDN angesehen und genau dokumentiert, wie sich die Funktion verhält. Das spezifische Zone.Identifier-Bit, das ich aus dem Internet erhalten habe. Es funktioniert auch für z. B. blockierte dled EXEs, wenn Sie hohe Sicherheitseinstellungen für MSIE haben
Marco van de Voort
6

Die endgültige Lösung besteht darin, das InfoTech-Protokoll in der Intranetzone arbeiten zu lassen.

Fügen Sie der Registrierung den folgenden Wert hinzu, und das Problem sollte behoben sein:

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

Weitere Informationen hier: http://support.microsoft.com/kb/896054

GetFree
quelle
4

Gehen Sie zu Start

Art regsvr32 hhctrl.ocx

Sie sollten eine Erfolgsmeldung erhalten wie:

"DllRegisterServer in hhctrl.ocx war erfolgreich"

Versuchen Sie nun erneut, Ihre CHM-Datei zu öffnen.

LoveToCode
quelle
1
Voww ... das funktioniert bei mir ... (Datei mit der rechten Maustaste klicken, Eigenschaften zeigten nicht die Schaltfläche "Entsperren". Während dies gut funktioniert)
tsenapathy
3

Eine andere Möglichkeit besteht darin, andere Software von Drittanbietern zu verwenden. Dieser Link zeigt weitere Software von Drittanbietern zum Anzeigen von CHM-Dateien ...

Ich habe es mit SumatraPDF versucht und es funktioniert gut.

Tsenapathie
quelle
2

Ich habe dies programmgesteuert in meiner Software mithilfe von C ++ Builder behoben.

Bevor ich die CHM-Hilfedatei Application->HelpFile = HelpFileNamezuweise, überprüfe ich, ob sie den Stream "Zone.Identifier" enthält, und entferne sie dann einfach.

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

if (FileExists(ZIStream))
    { DeleteFile(ZIStream) ; }
Peter
quelle
1

Es gibt anscheinend verschiedene Authentifizierungsebenen. In den meisten Artikeln, die ich lese, wird empfohlen, die MaxAllowedZone auf "1" zu setzen. Dies bedeutet, dass die lokale Computerzone und die Intranetzone zulässig sind, "4" jedoch den Zugriff für "alle" Zonen ermöglicht.

Weitere Informationen finden Sie in diesem Artikel: https://support.microsoft.com/en-us/kb/892675

So sieht meine Registrierung aus (ich war mir nicht sicher, ob es mit den Platzhaltern funktionieren würde, aber es scheint für mich zu funktionieren):

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://*;"

Als zusätzliche Anmerkung war seltsamerweise der "UrlAllowList" -Schlüssel erforderlich, damit dies auf einem anderen PC funktioniert, aber nicht auf meinem Test-PC. Es ist wahrscheinlich überhaupt nicht erforderlich, aber als ich es hinzufügte, wurde das Problem behoben. Der Benutzer hat möglicherweise die Originaldatei oder ähnliches nicht geschlossen. Also nur eine Überlegung. Ich schlage vor, versuchen Sie es am wenigsten und testen Sie es, und fügen Sie es bei Bedarf hinzu. Sobald Sie dies bestätigt haben, können Sie es bei Bedarf bereitstellen. Viel Glück!

Bearbeiten: PS Eine andere Methode, die funktioniert hat, war das lokale Zuordnen des Pfads zum Netzwerk mithilfe von mklink / d (symbolische Verknüpfung in Windows 7 oder neuer), aber das Zuordnen eines Netzwerklaufwerksbuchstabens (Z: zum Testen) funktionierte nicht. Nur Denkanstöße und ich musste keine Dateien "entsperren". Auch die akzeptierte "Lösung" hat das Problem für mich nicht gelöst.

Jacktrader
quelle
Kein Problem, ich bin froh, dass jemand davon profitiert hat. Beste!
Jacktrader