Мое приложение работает с сообщениями электронной почты из разных источников, например Почтовые ящики Outlook и IMAP. Перед их анализом я записываю их во временный каталог (хранить их в памяти не вариант). Во время синтаксического анализа я мог бы писать вложения во временный каталог (например, если они слишком велики для хранения в памяти или для полнотекстового извлечения).
Но в реальной жизни происходят две вещи, которые изначально казались очень странными, но все они могут быть связаны с поведением антивирусного сканера:
Иногда мне не удается открыть файлы, которые я написал сам несколько миллисекунд назад. Очевидно, они заблокированы антивирусными сканерами, чтобы убедиться, что они чистые. Я получаю исключение.
Если антивирусный сканер считает файлы опасными, он в какой-то момент удаляет их.
Чтобы справиться с этим поведением, я написал несколько методов, которые повторяют попытку, если открытие не удается, или выполняют некоторые проверки, существуют ли файлы, но я не могу использовать их в каждой части приложения (сторонний код, например, фильтры). , так что все стало лучше, но не на 100% идеально, и мой исходный код отчасти выглядит некрасиво из-за этого.
Как вы справляетесь со сканерами вирусов?





В антивирусном сканере есть исключаемые папки. Просто посмотрите документацию и добавьте свою временную папку в этот список.
Обычно вам следует исключить файлы фильтрации почты из антивирусного сканера и использовать специальную почтовую антивирусную программу, которая находится в серии входящей почты. Обязательно подумайте о том, чтобы попросить ваших пользователей отключить опцию «удалять зараженные файлы» на их почтовом сервере, иначе они могут потерять почтовую базу данных: - /. Например, вот как вы можете настроить AV, чтобы игнорировать Exchange: http://www.sophos.com/support/knowledgebase/article/12214.html Но еще один способ взглянуть на это - это то, что в файле есть вирус, поэтому вы, вероятно, все равно не захотите его доставлять ;-)
В предыдущем ответе говорилось об изменении разрешений, чтобы только ваш процесс мог получить доступ к файлам. Это не сработает; любой достойный антивирус будет запущен в ядре и в любом случае сможет получить доступ к файлам.
Если изменение конфигурации сканера вирусов - не лучший вариант для вас. Не могли бы вы оставить файл открытым с момента его создания до конца процесса? Если у вас есть дескриптор файла, он не будет доступен для сканера вирусов.
Напишите свои файлы с шифрованием. Думаю, вам не понадобится ничего слишком сложного или запутанного. Также зашифруйте или измените имена файлов, так как это тоже может сработать антивирусный сканер.
Прагматичное решение, заслуживающее внимания. К сожалению, некоторые файлы написаны сторонними библиотеками, которые не могут записывать в потоки, но с ними можно было бы обращаться по-другому. Однако не решает проблем с блокировкой файлов антивирусными сканерами.
Есть способы «зацепить» процесс записи файла, чтобы даже сторонние библиотеки записывались в зашифрованном виде. Возможно, даже оставив дескрипторы файлов открытыми, чтобы не сообщать антивирусным сканерам, что вы закончили работу с файлом.
Это приложение для упаковки в термоусадочную пленку, а не внутри компании. Я мог сказать это своим пользователям, но они либо проигнорировали это, либо не прочитали вообще.