1

Загружаемые файлы CHM часто помечаются как потенциально вредоносные в Windows, которая эффективно блокирует все html-страницы внутри. Это легко исправить (просто разблокируйте файл после его загрузки), но мне было интересно, есть ли лучший способ предоставить разблокированные файлы chm.

Что если я скачаю файл chm (в виде потока байтов) с нашего сервера внутри приложения, а затем запишу все данные в файл на диске. Будет ли он все еще заблокирован?

Есть ли другой / лучший способ?


Изменить: Да, загрузка файла с помощью System.Net.WebClient действительно решает проблему. Но есть ли еще лучший способ?

4 ответа4

3

Щелкните правой кнопкой мыши файл .chm -> Свойства, а затем нажмите кнопку "Разблокировать", и вы готовы к работе!

1

Типичный MSFT сначала вводит такую чушь, как .chm, а затем должен блокировать ее, чтобы сделать свой корабль с миллионами дыр более безопасным. Все хорошо, но почему это не показывает правильное сообщение об ошибке с объяснением, что происходит, когда пользователь ничего не видит в файле chm.

1

Технически, что происходит, когда IE загружает файл, он использует малоизвестную функцию файловой системы Windows, где вы можете иметь дополнительные потоки данных, прикрепленные к файлу. IE добавляет: Зона.Поток идентификатора, в который они записывают данные в стиле ini в виде:

[ZoneTransfer]
ZoneId=$id

$ Id идентифицирует зону доверия для этого файла и имеет значение URLZONE_INTRANET (http://msdn.microsoft.com/en-us/library/ms537175(v=vs.85).aspx).

Один из способов исправить это - изменить $ id на URLZONE_LOCAL_MACHINE. Другое - просто удалить этот поток.

Вы можете увидеть, как я это сделал на C++ для моего средства просмотра PDF на Суматре, когда мы добавили поддержку CHM: http://code.google.com/p/sumatrapdf/source/detail?r=4639 и http://www.google. ком /codesearch # 8WOCRDPt-U8 / багажник / SRC / Utils / FileUtil.cpp & Q = SetZoneIdentifier% 20package: HTTP: //sumatrapdf%5C.googlecode%5C.com&l=340

Я не уверен, что вы считаете это лучшим решением, чем загрузка файла самостоятельно.

0

Это предположение, но вы уверены, что это Windows помечает это? Разве это не интернет-браузер, в таком случае просто используйте другой браузер?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .