La apertura de un archivo CHM produce: "se canceló la navegación a la página web"

84

Estoy intentando abrir un archivo .chm.

Descargué la fuente, Waffle.chmla extraje, hice doble clic y hice clic en "Abrir", pero no importa en qué elemento del archivo chm haga clic, aparece el mensaje:

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

ingrese la descripción de la imagen aquí

¿Que está pasando aqui?

Eric Leschinski
fuente

Respuestas:

168

Resumen

Las actualizaciones de seguridad de Microsoft 896358 y 840315 bloquean la visualización del contenido del archivo CHM cuando se abren desde una unidad de red (o una ruta UNC ). Este es el intento de Windows de evitar que los vectores de ataque de virus / malware infecten su computadora y ha bloqueado el archivo .chm que extrae datos sobre el protocolo "InfoTech", que utiliza este archivo chm.

Resumen del problema de Microsoft: http://support.microsoft.com/kb/896054

Soluciones

  1. Si está utilizando Windows Server 2008, Windows 7, Windows ha creado una solución rápida. Haga clic con el botón derecho en el archivo chm y obtendrá el cuadro de diálogo "Propiedades de yourfile.chm", en la parte inferior, aparecerá un botón llamado "Desbloquear". Haga clic en Desbloquear y presione Aceptar, e intente abrir el archivo chm nuevamente, funciona correctamente. Esta opción no está disponible para versiones anteriores de Windows anteriores a WindowsXP (SP3).

  2. Resuelva el problema moviendo su archivo chm fuera de la unidad de red. Es posible que no sepa que está utilizando una unidad de red, verifique ahora: haga clic con el botón derecho en su archivo .chm, haga clic en propiedades y observe el campo "ubicación". Si comienza con dos barras invertidas como esta:, \\epicserver\blah\entonces estás usando una unidad en red. Entonces, para solucionarlo, copie el archivo chm y péguelo en una unidad local, como C: \ o E :. Luego intente volver a abrir el archivo chm, Windows no se asustará.

  3. Último recurso, si no puede copiar / mover el archivo fuera de la unidad de red. Si debe abrirlo donde está y está usando una versión menor de Windows como XP, Vista, ME u otra, tendrá que decirle manualmente a Windows que no se asuste por este archivo .chm. La utilidad HHReg (Utilidad de registro de ayuda HTML) automatiza esta tarea. Básicamente, descarga la utilidad HHReg, carga su archivo .chm, presione Aceptar y creará las claves de registro necesarias para decirle a Windows que no lo bloquee. Para más información: http://www.winhelponline.com/blog/fix-cannot-view-chm-files-network-xp-2003-vista/

Windows 8 o 10? -> Actualice a Windows XP.

Eric Leschinski
fuente
3
No veo el botón "Desbloquear" ni en WinXP SP3 ni en WinVista Home Premium
GetFree
La solución 1 no está en Windows 8, ¿hay alguna forma fácil de win8?
countunique
2
Ninguna de las soluciones propuestas coincide con las 4 posibles soluciones dado mi artículo de KB al que se hace referencia. Establecer 'MaxAllowedZone' en '1' solucionó el problema para mí
abstrask
DESBLOQUEAR no ayuda, debe abrir, copiar el archivo a una unidad local y abrirlo desde la unidad local (que no sea de la red).
Erdinc Ay
1
Este problema también afecta al chm descargado de Internet. Es posible que el botón / casilla de verificación de desbloqueo no esté allí justo después de descargar. En mi experiencia, primero requiere abrir el chm desde el sistema de archivos local, verlo arruinado, cerrarlo y luego ir solo a las propiedades del archivo para desbloquearlo.
Frédéric
43

"Desbloquear" el archivo soluciona el problema. Captura de pantalla:

ingrese la descripción de la imagen aquí

colemik
fuente
Lo he olvidado ya que no usé este truco durante mucho tiempo. Gracias por recuérdamelo nuevamente.
kta
@kaziTanvirAhsan me alegro de poder ayudar.
colemik
Moverse de la ubicación de la red a la ubicación local no es suficiente; debe desbloquear como en esta captura de pantalla. Gracias @trismarck
leinad13
¡Esto funcionó! Gracias. Nunca lo hubiera descubierto por mi cuenta.
NilsB
No pude encontrar esa opción con win-7. en lugar de abrir un archivo / w, lo copié en mi máquina local y funciona.
tsenapathy
11

Ganar 8 x64:

simplemente muévalo a otra carpeta o cambie el nombre de su carpeta (en mi caso: mi carpeta era "c #"). Evite utilizar el símbolo en el nombre de la carpeta. nombrarlo con letra.

hecho.

Hammond22
fuente
Esto también funciona. Mi archivo .chm estaba en esta carpeta C: \ C # \ Samples, luego lo moví a C: \ temp y ¡boom! ¡Funciona! Gracias por esto. :)
klaydze
¡Excelente! Soy un usuario de Windows 10: tuve que eliminar el "#" tanto del nombre del archivo como del nombre de la carpeta de un antiguo archivo de ayuda de c # chm.
Marcelo Bergweiler
11

Además de la respuesta de Eric Leschinski, y debido a que se trata de stackoverflow, una solución programática:

Windows utiliza bifurcaciones de archivo ocultas para marcar el contenido como "descargado". Truncarlos desbloquea el archivo. El nombre de la secuencia utilizada para los CHM es "Zone.Identifier". Se puede acceder a las secuencias agregando: streamname al abrir el archivo. (¡mantenga copias de seguridad la primera vez, en caso de que su RTL lo estropee!)

En Delphi se vería así:

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

Me dijeron que en sistemas de archivos no bifurcados (como FAT32) hay archivos ocultos, pero aún no he llegado al fondo de eso.

DeleteFile () de Ps Delphi también debería reconocer bifurcaciones.

Marco van de Voort
fuente
Respuesta muy interesante. ¿Dónde puedo encontrar más información sobre esta bifurcación de archivos ocultos?
ViRuSTriNiDAD
MSDN. Por ejemplo, sb hizo un comentario de que deletefile también funciona, y miré la llamada relevante en MSDN y se documentó exactamente cómo se comporta la función. El bit Zone.Identifier específico que obtuve de Internet. También funciona, por ejemplo, para EXE dled bloqueados si tiene una configuración de alta seguridad para MSIE
Marco van de Voort
6

La solución definitiva es permitir que el protocolo InfoTech funcione en la zona de intranet.

Agregue el siguiente valor al registro y el problema debería resolverse:

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

Más información aquí: http://support.microsoft.com/kb/896054

Liberarse
fuente
4

Ir a Inicio

Tipo regsvr32 hhctrl.ocx

Debería recibir un mensaje de éxito como:

"DllRegisterServer en hhctrl.ocx se realizó correctamente"

Ahora intente abrir su archivo CHM nuevamente.

LoveToCode
fuente
1
Voww ... eso funciona para mí ... (clic derecho en el archivo, las propiedades no mostraron el botón 'desbloquear'. Mientras que esto funciona bien)
tsenapathy
3

otra forma es utilizar un software de terceros diferente. Este enlace muestra más software de terceros para ver archivos chm ...

Probé con SumatraPDF y funcionó bien.

tsenapatía
fuente
2

Arreglé esto programáticamente en mi software, usando C ++ Builder.

Antes de asignar el archivo de ayuda de CHM, Application->HelpFile = HelpFileNameverifico si contiene el flujo "Zone.Identifier" y, cuando lo hace, simplemente lo elimino.

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

if (FileExists(ZIStream))
    { DeleteFile(ZIStream) ; }
Pedro
fuente
1

Aparentemente, existen diferentes niveles de autenticación. La mayoría de los artículos que leí le dicen que configure MaxAllowedZone en '1', lo que significa que la zona de máquina local y la zona de intranet están permitidas, pero '4' permite el acceso para 'todas' las zonas.

Para obtener más información, lea este artículo: https://support.microsoft.com/en-us/kb/892675

Así es como se ve mi registro (no estaba seguro de que funcionaría con los comodines, pero parece funcionar para mí):

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

Como nota adicional, extrañamente la clave "UrlAllowList" era necesaria para que esto funcionara en otra PC, pero no en la de prueba. Probablemente no sea necesario en absoluto, pero cuando lo agregué, solucionó el problema. Es posible que el usuario no haya cerrado el archivo original o algo por el estilo. Así que solo una consideración. Sugiero probar lo mínimo y probarlo, luego agregarlo si es necesario. Una vez que lo confirme, puede implementarlo si es necesario. ¡Buena suerte!

Editar: PD Otro método que funcionó fue mapear la ruta a la red localmente usando mklink / d (enlace simbólico en Windows 7 o más reciente) pero mapear una letra de unidad de red (Z: para prueba) no funcionó. Solo para pensar y no tuve que "Desbloquear" ningún archivo. Además, la 'Solución' aceptada no resolvió el problema para mí.

jacktrader
fuente
No hay problema, me alegro de que alguien se haya beneficiado. ¡Mejor!
jacktrader