Я пытаюсь открыть файл .chm.
Я загрузил исходный код, извлек его, дважды щелкнул Waffle.chm
и нажал «Открыть», но независимо от того, какой элемент в файле chm я нажимаю, я получаю сообщение:
Navigation to the webpage was canceled.
What you can try:
Retype the address.
Что тут происходит?
"разблокировка" файла решает проблему. Скриншот:
источник
Win 8 x64:
просто переместите его в другую папку или переименуйте свою папку (в моем случае: моя папка была «c #»). Избегайте использования символа в имени папки. назовите его буквой.
сделанный.
источник
В дополнение к ответу Эрика Лещинского, и поскольку это stackoverflow, программное решение:
Windows использует скрытые вилки файлов, чтобы пометить контент как «загруженный». Их усечение разблокирует файл. Имя потока, используемого для CHM, - «Zone.Identifier». Можно получить доступ к потокам, добавив: имя потока при открытии файла. (сохраняйте резервные копии в первый раз, если ваш RTL все испортит!)
В Delphi это выглядело бы так:
Мне сказали, что в файловых системах без разветвления (например, FAT32) есть скрытые файлы, но я еще не разобрался в этом.
Ps Delphi DeleteFile () также должен распознавать вилки.
источник
Окончательное решение - позволить протоколу InfoTech работать в зоне интрасети.
Добавьте в реестр следующее значение, и проблема должна быть решена:
Больше информации здесь: http://support.microsoft.com/kb/896054
источник
Перейти к началу
Тип
regsvr32 hhctrl.ocx
Вы должны получить сообщение об успешном завершении, например:
Теперь попробуйте снова открыть файл CHM.
источник
Другой способ - использовать другое стороннее программное обеспечение. Эта ссылка показывает другое стороннее программное обеспечение для просмотра файлов chm ...
Я пробовал с SumatraPDF, и он отлично работает.
источник
Я исправил это программно в своем программном обеспечении, используя C ++ Builder.
Прежде чем назначить файл справки CHM,
Application->HelpFile = HelpFileName
я проверяю, содержит ли он поток «Zone.Identifier», и когда он появляется, я просто удаляю его.источник
Очевидно, существуют разные уровни аутентификации. В большинстве статей, которые я читал, предлагается установить для MaxAllowedZone значение «1», что означает, что зона локального компьютера и зона интрасети разрешены, но «4» разрешает доступ для «всех» зон.
Для получения дополнительной информации прочтите эту статью: https://support.microsoft.com/en-us/kb/892675
Вот как выглядит мой реестр (я не был уверен, что он будет работать с дикими картами, но, похоже, у меня это работает):
В качестве дополнительного примечания, как ни странно, ключ «UrlAllowList» потребовался для работы на другом ПК, но не на моем тестовом. Вероятно, это вообще не требуется, но когда я его добавил, проблема устранилась. Возможно, пользователь не закрыл исходный файл или что-то в этом роде. Так что просто соображение. Я предлагаю попробовать по крайней мере и протестировать его, а затем добавить, если необходимо. После подтверждения вы можете выполнить развертывание при необходимости. Удачи!
Изменить: PS Другой метод, который работал, заключался в сопоставлении пути к сети локально с помощью mklink / d (символическая ссылка в Windows 7 или новее), но сопоставление буквы сетевого диска (Z: для тестирования) не сработало. Просто пища для размышлений, и мне не пришлось «разблокировать» какие-либо файлы. Также принятое «Решение» не решило для меня проблему.
источник