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
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.
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.
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.
Das "Entsperren" der Datei behebt das Problem. Bildschirmfoto:
quelle
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.
quelle
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:
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.
quelle
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:
Weitere Informationen hier: http://support.microsoft.com/kb/896054
quelle
Gehen Sie zu Start
Art
regsvr32 hhctrl.ocx
Sie sollten eine Erfolgsmeldung erhalten wie:
Versuchen Sie nun erneut, Ihre CHM-Datei zu öffnen.
quelle
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.
quelle
Ich habe dies programmgesteuert in meiner Software mithilfe von C ++ Builder behoben.
Bevor ich die CHM-Hilfedatei
Application->HelpFile = HelpFileName
zuweise, überprüfe ich, ob sie den Stream "Zone.Identifier" enthält, und entferne sie dann einfach.quelle
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):
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.
quelle