L'ouverture d'un fichier CHM produit: "La navigation vers la page Web a été annulée"


84

J'essaye d'ouvrir un fichier .chm.

J'ai téléchargé la source, je l'ai extraite, puis j'ai double-cliqué Waffle.chmet cliqué sur "Ouvrir" mais quel que soit l'élément du fichier chm sur lequel je clique, je reçois le message:

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

entrez la description de l'image ici

Que se passe t-il ici?

Réponses:


168

Sommaire

Les mises à jour de sécurité Microsoft 896358 et 840315 bloquent l'affichage du contenu des fichiers CHM lorsqu'ils sont ouverts à partir d'un lecteur réseau (ou d'un chemin UNC ). Il s'agit de la tentative de Windows d'empêcher les vecteurs d'attaque pour virus / malware d'infecter votre ordinateur et a bloqué le fichier .chm qui extrait des données via le protocole "InfoTech", utilisé par ce fichier chm.

Résumé du problème par Microsoft: http://support.microsoft.com/kb/896054

Solutions

  1. Si vous utilisez Windows Server 2008, Windows 7, Windows a créé une solution rapide. Cliquez avec le bouton droit sur le fichier chm, et vous obtiendrez la boîte de dialogue "Propriétés de votre fichier.chm", en bas, un bouton appelé "Débloquer" apparaît. Cliquez sur Débloquer et appuyez sur OK, et essayez à nouveau d'ouvrir le fichier chm, cela fonctionne correctement. Cette option n'est pas disponible pour les versions antérieures de Windows avant WindowsXP (SP3).

  2. Résolvez le problème en déplaçant votre fichier chm hors du lecteur réseau. Vous ne savez peut-être pas que vous utilisez un lecteur réseau, revérifiez maintenant: Faites un clic droit sur votre fichier .chm, cliquez sur Propriétés et regardez le champ "emplacement". S'il commence par deux contre-obliques comme ceci:, \\epicserver\blah\alors vous utilisez un lecteur en réseau. Donc, pour résoudre ce problème, copiez le fichier chm et collez-le dans un lecteur local, comme C: \ ou E :. Ensuite, essayez de rouvrir le fichier chm, Windows ne panique pas.

  3. Dernier recours, si vous ne pouvez pas copier / déplacer le fichier hors du lecteur réseau. Si vous devez l'ouvrir là où il se trouve et que vous utilisez une version inférieure de Windows comme XP, Vista, ME ou autre, vous devrez manuellement dire à Windows de ne pas paniquer avec ce fichier .chm. L'utilitaire HHReg (HTML Help Registration Utility) automatise cette tâche. En gros, vous téléchargez l'utilitaire HHReg, chargez votre fichier .chm, appuyez sur OK et il créera les clés de registre nécessaires pour dire à Windows de ne pas le bloquer. Pour plus d'informations: http://www.winhelponline.com/blog/fix-cannot-view-chm-files-network-xp-2003-vista/

Windows 8 ou 10? -> Mettre à niveau vers Windows XP.


3
Je ne vois pas le bouton «Débloquer» sur WinXP SP3 ou WinVista Home Premium
GetFree

La solution 1 n'est pas dans Windows 8, existe-t-il un moyen simple de win8?
unique

2
Aucune des solutions proposées ne correspond aux 4 solutions possibles compte tenu de mon article référencé dans la base de connaissances. Définir 'MaxAllowedZone' sur '1' a résolu le problème pour moi
abstrask

UNBLOCK n'aide pas, vous devez ouvrir la copie du fichier sur un lecteur local et l'ouvrir à partir du lecteur local (non réseau).
Erdinc Ay

1
Ce problème affecte également chm téléchargé à partir d'Internet. Le bouton / case à cocher de déblocage peut ne pas être présent juste après le téléchargement. D'après mon expérience, il faut d'abord ouvrir le chm à partir du système de fichiers local, le voir détruit, le fermer, puis accéder uniquement aux propriétés du fichier pour le déverrouiller.
Frédéric

43

"débloquer" le fichier résout le problème. Capture d'écran:

entrez la description de l'image ici


J'ai oublié car je n'ai pas utilisé cette astuce depuis longtemps.Merci de me le rappeler à nouveau.
kta

@kaziTanvirAhsan heureux de pouvoir vous aider.
colemik

Passer d'un emplacement réseau à un emplacement local ne suffit pas - vous devez débloquer comme dans cette capture d'écran. Merci @trismarck
leinad13

Cela a fonctionné! Merci. Je n'aurais jamais pensé par moi-même.
NilsB

n'a pas pu trouver une telle option avec win-7. au lieu d'ouvrir un fichier / w, j'ai copié sur ma machine locale et cela fonctionne.
tsenapathy le

11

Gagnez 8 x64:

déplacez-le simplement dans un autre dossier ou renommez votre dossier (dans mon cas: mon dossier était "c #"). évitez d'utiliser le symbole sur le nom du dossier. nommez-le avec une lettre.

terminé.


Cela fonctionne aussi. Mon fichier .chm était dans ce dossier C: \ C # \ Samples puis je l'ai déplacé vers C: \ temp et boom! Ça marche! Merci pour cela. :)
klaydze

Excellent! Je suis un utilisateur de Windows 10: j'ai dû supprimer le "#" à la fois du nom de fichier et du nom de dossier d'un ancien fichier d'aide c # chm.
Marcelo Bergweiler

11

En plus de la réponse d'Eric Leschinski, et parce qu'il s'agit de stackoverflow, une solution programmatique:

Windows utilise des fourchettes de fichiers cachées pour marquer le contenu comme "téléchargé". Tronquer ces débloque le fichier. Le nom du flux utilisé pour les CHM est "Zone.Identifier". On peut accéder aux flux en ajoutant: streamname lors de l'ouverture du fichier. (gardez les sauvegardes la première fois, au cas où votre RTL gâcherait ça!)

Dans Delphi, cela ressemblerait à ceci:

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

On me dit que sur les systèmes de fichiers non fourchus (comme FAT32), il y a des fichiers cachés, mais je ne suis pas encore allé au fond de cela.

DeleteFile () de Ps Delphi devrait également reconnaître les fourches.


Réponse très intéressante. Où puis-je trouver plus d'informations sur cette chose de fork de fichier caché?
ViRuSTriNiTy

MSDN. Par exemple, sb a fait une remarque que deletefile fonctionne également, et j'ai regardé l'appel correspondant dans MSDN et le comportement exact de la fonction est documenté. Le bit Zone.Identifier spécifique que j'ai obtenu d'Internet. Cela fonctionne également pour par exemple les EXE dled bloqués si vous avez des paramètres de sécurité élevés pour MSIE
Marco van de Voort

6

La solution définitive est de permettre au protocole InfoTech de fonctionner dans la zone intranet.

Ajoutez la valeur suivante au registre et le problème devrait être résolu:

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

Plus d'informations ici: http://support.microsoft.com/kb/896054


4

Aller au début

Type regsvr32 hhctrl.ocx

Vous devriez recevoir un message de réussite comme:

"DllRegisterServer dans hhctrl.ocx a réussi"

Maintenant, essayez à nouveau d'ouvrir votre fichier CHM.


1
Voww ... qui fonctionne pour moi ... (clic droit sur le fichier, les propriétés n'ont pas montré le bouton «débloquer». Alors que cela fonctionne bien)
tsenapathy

3

L'autre façon consiste à utiliser différents logiciels tiers. Ce lien montre plus de logiciels tiers pour afficher les fichiers chm ...

J'ai essayé avec SumatraPDF et cela fonctionne très bien.


2

J'ai corrigé cela par programme dans mon logiciel, en utilisant C ++ Builder.

Avant d'attribuer le fichier d'aide CHM Application->HelpFile = HelpFileName, je vérifie s'il contient le flux "Zone.Identifier", et quand c'est le cas, je le supprime simplement.

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

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

1

Il existe apparemment différents niveaux d'authentification. La plupart des articles que j'ai lus vous disent de définir MaxAllowedZone sur «1», ce qui signifie que la zone de la machine locale et la zone intranet sont autorisées mais que «4» permet l'accès à «toutes» les zones.

Pour plus d'informations, lisez cet article: https://support.microsoft.com/en-us/kb/892675

Voici à quoi ressemble mon registre (je n'étais pas sûr que cela fonctionnerait avec les caractères génériques mais cela semble fonctionner pour moi):

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

Comme note supplémentaire, bizarrement, la clé "UrlAllowList" était nécessaire pour que cela fonctionne sur un autre PC mais pas mon test. Ce n'est probablement pas du tout nécessaire, mais quand je l'ai ajouté, cela a résolu le problème. L'utilisateur n'a peut-être pas fermé le fichier d'origine ou quelque chose du genre. Donc juste une considération. Je suggère d'essayer le moins et de le tester, puis d'ajouter si nécessaire. Une fois que vous confirmez, vous pouvez déployer si nécessaire. Bonne chance!

Edit: PS Une autre méthode qui a fonctionné consistait à mapper le chemin d'accès au réseau localement en utilisant mklink / d (liaison symbolique dans Windows 7 ou plus récent), mais le mappage d'une lettre de lecteur réseau (Z: pour les tests) ne fonctionnait pas. Juste matière à réflexion et je n'ai pas eu à «débloquer» de fichiers. De plus, la «solution» acceptée n'a pas résolu le problème pour moi.


Pas de problème, je suis content que quelqu'un en ait bénéficié. Meilleur!
jacktrader
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.