Подтвердить что ты не робот

Открытие CHM файла создает: "Навигация на веб-странице был отменен"

Я пытаюсь открыть файл .chm.

Я загрузил источник, извлек его и дважды щелкнул по Waffle.chm и нажал "Открыть", но независимо от того, какой элемент в файле chm нажимаю, я получаю сообщение:

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

enter image description here

Что здесь происходит?

4b9b3361

Ответ 1

Резюме

Обновления безопасности Microsoft 896358 и 840315 блокируют отображение содержимого файла CHM при открытии с сетевого диска (или пути UNC). Это попытка Windows остановить векторы атаки для вирусов/вредоносных программ на заражение вашего компьютера, и она заблокировала файл .chm, который рисует данные по протоколу "InfoTech", который использует этот файл chm.

Сводка проблемы Microsoft: http://support.microsoft.com/kb/896054

Решения

  1. Если вы используете Windows Server 2008, Windows 7, Windows создала быстрое решение. Щелкните правой кнопкой мыши на файле chm, и вы получите диалоговое окно "Свойства вашего файла .chm", внизу появляется кнопка "Разблокировать". Нажмите Разблокировать и нажмите ОК, и попробуйте снова открыть файл chm, он работает правильно. Этот параметр недоступен для более ранних версий Windows до WindowsXP (SP3).

    N1jEQ.png

  2. Решите проблему, переместив файл chm с сетевого диска. Возможно, вы не знаете, используете ли вы сетевой диск, проверьте дважды: щелкните правой кнопкой мыши свой файл .chm, выберите "Свойства" и посмотрите на поле "Местоположение". Если он начинается с двух обратных косых черт, например: \\epicserver\blah\, то вы используете сетевой диск. Чтобы исправить это, скопируйте файл chm и вставьте его на локальный диск, например C:\или E :. Затем попробуйте снова открыть файл CHM, Windows не волнуется.

  3. В крайнем случае, если вы не можете скопировать/переместить файл с сетевого диска. Если вам нужно открыть его там, где он находится, и вы используете меньшую версию Windows, такую как XP, Vista, ME или другие, вам придется вручную сказать Windows, чтобы не волноваться из-за этого CHM файла. HHReg (утилита регистрации справки HTML) Автоматизирует эту задачу. В основном вы загружаете утилиту HHReg, загружаете свой файл .chm, нажимаете OK, и он создает необходимые ключи реестра, чтобы запретить Windows блокировать его. Для получения дополнительной информации: http://www.winhelponline.com/blog/fix-cannot-view-chm-files-network-xp-2003-vista/

Windows 8 или 10? → Обновление до Windows XP.

Ответ 2

"разблокировка" файла устраняет проблему. Снимок экрана:

enter image description here

Ответ 3

В дополнение к Eric Leschinski ответ, и потому что это stackoverflow, программное решение:

Windows использует скрытые вилки файлов для маркировки содержимого как "загруженного". Усечение этих разблокирует файл. Название потока, используемого для CHM, - "Zone.Identifier". Можно получить доступ к потокам, добавив: streamname при открытии файла. (сохраняйте резервные копии в первый раз, в случае, если ваш RTL перестанет работать!)

В Delphi это будет выглядеть так:

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

Мне говорят, что на не разветвленных файловых системах (например, FAT32) есть скрытые файлы, но я еще не дошел до этого.

P.s. Delphi DeleteFile() также должен распознавать forks.

Ответ 4

Win 8 x64:

просто переместите его в другую папку или переименуйте свою папку (в моем случае: моя папка была "С#" ). избегать использования символа в имени папки. назовите его буквой.

сделано.

Ответ 5

Окончательное решение - разрешить работу протокола InfoTech в зоне интрасети.

Добавьте в реестр следующее значение, и проблема должна быть решена:

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

Дополнительная информация здесь: http://support.microsoft.com/kb/896054

Ответ 6

Перейдите в начало

Введите regsvr32 hhctrl.ocx

Вы должны получить сообщение об успешном завершении, например:

"DllRegisterServer в hhctrl.ocx преуспел"

Теперь попробуйте снова открыть CHM файл.

Ответ 7

другим способом является использование другого стороннего программного обеспечения. Эта ссылка показывает больше стороннего программного обеспечения для просмотра файлов chm...

Я пробовал с SumatraPDF, и он отлично работает.

Ответ 8

Я исправил это программно в своем программном обеспечении, используя С++ Builder.

Прежде чем назначить файл справки CHM, Application->HelpFile = HelpFileName, я проверяю, содержит ли он поток "Zone.Identifier", и когда он это делает, я просто удаляю его.

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

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

Ответ 9

Существуют, по-видимому, разные уровни аутентификации. В большинстве статей, которые я прочитал, вы указываете, что 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" должен был выполнять эту работу на другом ПК, но не на моем тестовом. Это, вероятно, совсем не требуется, но когда я добавил его, он исправил проблему. Пользователь, возможно, не закрыл исходный файл или что-то в этом роде. Так что просто соображение. Я предлагаю попробовать поменьше и протестировать его, а затем добавить, если необходимо. Как только вы подтвердите, вы можете развернуть при необходимости. Удачи!

Изменить: P.S. Другим методом, который работал, было сопоставление пути к локальной сети с помощью mklink/d (символическая ссылка в Windows 7 или новее), но отображение буквы сетевого диска (Z: для тестирования) не сработало. Просто пища для размышлений, и мне не пришлось "Разблокировать" любые файлы. Также принятое "решение" не разрешило проблему для меня.