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

Программы Delphi, заблокированные Антивирусом Касперского. Нужна помощь

У меня есть часть кода, которая пытается записать на диск много файлов за одну секунду. Однако это не удается, поскольку я установил Kaspersky Anrivirus 2011.

Stream:= TFileStream.Create(sName, fmCreate); 

Код полностью работал с Kaspersky 2010, а также работает с Kaspersky 2011, если отключить его сканеры (он не может быть полностью выгружен из памяти - если он не будет удален). Код также работает, если (Kaspersky 2011 запущен и) Я пишу на диск slooooowly. Таким образом, это явно недостаточно быстро для обработки запросов на диск.

Ошибка, которую я получаю, это EFCreateError ( "Невозможно создать файл xxx blablabla" ). Ошибка случайна. Большинство файлов записываются на диск. Около 10% ошибок.

Я попытался получить поддержку, но невозможно найти реального человека в Kaspersky, чтобы говорить. Их так называемая "поддержка" - это база данных часто задаваемых вопросов. Конечно, это говорит о том, как установить продукт и связанные с ним вещи. О проблемах, связанных с программированием, нет. Любые идеи?

PS: это имеет последствия для всего сообщества Delphi! Все наши клиенты не смогут использовать программное обеспечение Delphi, если они используют KIS 2011 в качестве антивируса. На данный момент я рекомендую своим пользователям отключить их антивирус, но мне нужно настоящее решение.

Хорошо, если человек с KIS 2011 может подтвердить проблему. Просто создайте крошечную программу, которая записывает 200 небольших файлов на диск с помощью TFileStream.

ОБНОВЛЕНИЕ:

  • Проблема появляется ТОЛЬКО, когда файл не существует и создается (создается в отличие от перезаписываемого).
  • Подобный отчет: https://forums.embarcadero.com/thread.jspa?threadID=32751&tstart=15
  • Подобный отчет: http://forum.kaspersky.com/index.php?showtopic=120561
  • Возможное решение, которое появилось у меня на ум, заключается в том, чтобы определить, работает ли KIS, и если это так, поставить задержку после каждой записи на диск. Или в режиме аренды, сообщите пользователю, что могут возникнуть проблемы. Кто-нибудь знает, как определить, работает ли служба?
  • Я добавил задержку в 650 мс (после каждого создания файла), и ошибка все еще существует). Так что не о том, как быстро вы пишете на диск, но о том, сколько файлов вы пишете.
  • Просто удалить KIS 2011. Проблема больше не появляется.
  • Просто переустановите старый добрый KIS 2010. Ошибка все еще существует, но она появляется редко (примерно каждые 300 файлов вместо 30, как в KIS 2011).
  • Проблема была подтверждена на втором компьютере.
  • НОВОСТИ: авария появляется в TFileStream.Create однако может быть вызвана функцией, называемой ранее: TestWriteAccess. Если я отключу эту функцию, TFileStream.Create больше не сработает. Ну, это не слишком сильно меняет ситуацию. Независимо от того, какая строка кода генерирует ошибку, программа по-прежнему не работает (случайно) для записи файлов на диск во время работы Kaspersky.
  • Все еще ждет ответ от реального человека из Касперского...
  • Более автоматизированные ответы, полученные от Kaspersky Support (я отправил электронные письма для поддержки в нескольких странах). Все указывает на базу данных часто задаваемых вопросов.
  • Я изменяю свой статус у своего фаната (и клиента) у Kaspersky hater, потому что я наконец получаю ответ от настоящего человека от службы Kaspersky: Я цитирую: "Является ли het waar просто нагрузок?" Встреча с друзьями, Лаборатория Касперского BV Papendorpseweg 77-79 ". Касперский может быть действительно пиратской компанией. Они не хотят отвечать на электронные письма, потому что они знают, что их продукт s **** y слишком затруднен для исправления.

Чтобы проверить код, попробуйте использовать код в цикле, чтобы создать 1000 файлов. Программа создает кучу файлов (случайное число), затем она не работает в StreamFile: = TFileStream.Create. Обновление: проблему можно устранить, введя небольшую задержку после создания каждого файла.
https://docs.google.com/forms/d/1H3_O1z1iEqfh9ZT9u3B0R1tGEj-Hc9o7rAE0LKPr33Y

Обновление в 2013 году

Начиная с сегодняшнего дня (после обновления) KIS конфликтует с Delphi. Каждый раз, когда я компилирую проект KIS, вы получаете 100% загрузку процессора. Мне нужно будет удалить его.


Delphi 7, Win 7 (32), KIS 2011

4b9b3361

Ответ 1

Не ответ, чтобы решить вашу проблему, но вы должны сообщить об этом Kaspersky, возможно, они не знают, что есть сигнатура вируса, связанная с библиотекой Delphi.

И если ваша программа не слишком сложна, вы можете попробовать Lazarus/FPC. Это не так хорошо, как Delphi, но я использовал его уже несколько лет и получил хорошие результаты в Windows/MacOS/Linux.

Ответ 2

Вам необходимо проинструктировать своих пользователей, то есть клиентов Касперского, что Касперский мешает работе вашего программного обеспечения и что ОНИ должны сообщать об этом. Выражайте свое разочарование тем, что вы, как разработчик, не имеете доступа к реальному человеку. Это единственный способ борьбы с вредоносными программами - плохой PR со своими клиентами.

Ответ 3

У меня были аналогичные проблемы с kaspersky 2011, когда я пытался добавить свою прогу к запуску Windows, используя d2010 new TFile.Copy(), а также функцию raw api:

 CopyFile(PChar('C:\chellenger.exe'), PChar('C:\Documents and Settings\Omair\Start Menu\Programs\Startup\chellenger.exe'), False);

Мое решение состояло в том, чтобы поместить приложение delphi в приложение vb.net в качестве ресурса, приложение vb.net извлекло его и поместило в него без ложных срабатываний. Смешение двух языков для вашей проблемы может также решить вашу проблему (одно возможное решение, но очень уродливое и непрофессиональное решение, которое я допускаю)

Ответ 4

Kaspersky = пиратская компания? Может быть да, а может быть и нет. Возможно, это еще одна компания с плохим продуктом и несуществующей поддержкой. Их "поддержка" состоит из базы данных часто задаваемых вопросов и автоматической электронной почты. Телефоны также подключены к автоответчикам. Их автоматизированный ответ объясняет мне, как добавить мою программу в базу данных "исключение" KIS. Я продолжаю отвечать на эти глупые электронные письма, которые я лично не могу сделать для всех своих клиентов дома и помещать свою программу в базу данных "исключение" и что будет лучше, если они исправит ошибку.

Когда я, наконец, получил неавтоматический ответ (единственный), парень-парень поддержки настолько груб, насколько это возможно.

Возможные решения для программистов Delphi:
* Не проверяйте, имеет ли пользователь права на запись в файл (чтобы не запускать Kaspersky Kaspersky)
* Проверьте, имеет ли пользователь разрешение на запись. Если ошибка появляется, сообщите пользователю, что Kaspersky создает проблему, и она должна быть временно отключена (во время работы программы). Для этого используйте блок TRY EXCEPT.

Совет (основанный на моем прошлом опыте):
Не всегда обвиняйте свой код, если вы когда-либо получали странные отчеты об ошибках от своих пользователей, когда ваша программа пыталась записать на диск. Проверьте также внешние факторы (например, наличие антивируса Касперского ).

UPDATE:
Я просто подал заявку на возмещение. Я пойду за возвратом денег, если они не вернут деньги (я сильно чувствую, что они не будут).

Заключение
Когда я разместил это на StackOverflow, я не осознал масштабов проблемы, и я не понял, что он будет так сильно отклоняться от начального курса. Тем не менее, я думаю, что это хорошо для цели StackOverflow. Мы все узнали, что иногда проблемы в программах не могут быть вызваны нашим ошибочным кодом, и мы не можем контролировать источник этих проблем (21 человек проголосовал за этот вопрос, что означает, что многие другие люди столкнулись с проблемами с KIS). Мы можем просто надеяться, что скоро разработанные программы, которые взаимодействуют с пользовательской системой на очень низком уровне (например, антивирусная программа KIS), скоро будут исправлены, поэтому наши продажи не пострадают (много).

Это просто разочаровывает, когда ваша программа помечена как "багги", и вы не можете многое сделать!

Ответ 5

При создании файла любой антивирус проверяет его. Вероятно, существует какое-то столкновение между вашим приложением и KAV. Вы пытались объединить fmCreate с режимами совместного использования. Вы можете увидеть в справке для TFileStream.Create для доступных режимов.

Ответ 6

Если проблема только с kapersky, то просто попробуйте определить ее программу, если она запущена. Если это так, уменьшите время создания/записи файла на все, что проходит их обнаружение. Удостоверьтесь, что у вас есть небольшое сообщение о статусе, которое сообщает пользователю, почему все происходит медленно. Кстати, вирусописатели уже знают об этом, поэтому эти эвристики просто не работают.

После этого свяжитесь с Kapersky и работайте с ними напрямую, чтобы решить эту проблему.

Это проходит мимо вашей непосредственной проблемы и даст вам и kapersky время, чтобы найти долгосрочное решение.

В качестве альтернативы вы можете просто закрыть кеперски вниз. Просто убедитесь, что вы захватили все свои часовые собаки в процессе. Но это, как правило, немного более боевое.

Ответ 7

Создание огромного количества файлов звучит как нечто, что не обязательно A Good Thing, но у вас, вероятно, есть свои причины:)

Когда вы получите код ошибки в Delphi, появляется ли KAV какие-либо эвристические предупреждения или он полностью бесшумен? Было бы не странно получить эвристический "omg, это приложение делает что-то плохое!" от создания тонны нового файла, но если KAV молчат, я бы сказал, что это ошибка.

Можете ли вы разместить исполняемый файл delphi с минимальным количеством кода, который воспроизводит ошибку? И версия, которая делает тот же шаг, но создает только один файл, может быть интересно проследить с ProcMon SysInternals.

Ответ 8

Во-первых, вам действительно нужно проверить права на запись, создав файл? Не можете ли вы просто проверить разрешение напрямую? Я чувствую, что создание файла для этой цели - это хромой способ сделать это в любом случае.

Во-вторых, как было отмечено выше, вероятно, что после создания и удаления файла, некоторые механизмы безопасности Kaspersky работают. Вероятно, драйвер пытается проверить содержимое файла, который вы удалили, и удерживает его в течение некоторого времени. Вот так:

  • Вы создаете файл и открываете его, увеличивая коэффициент пересчета.
  • Kaspersky driver замечает это и открывает файл. Даже если вы установили отказ в режиме общего доступа в качестве драйвера, у него, вероятно, есть возможность его открыть (если Касперский не сможет обойти отказ в доступе, любой вирус мог использовать тот же трюк, чтобы скрыть свои данные!).
  • Закройте файл и удалите его. Когда вы удаляете файл, система просто отмечает его "FILE_FLAG_DELETE_ON_CLOSE", но файл все еще существует до тех пор, пока все его дескрипторы не будут закрыты.
  • Kaspersky продолжает сканировать файл, все еще не выпустил дескриптор.
  • Поэтому файл все еще существует.
  • Вы пытаетесь создать новый файл, и вызов завершится неудачно, потому что старый файл все еще не удален.

Причиной всего этого беспорядка является, конечно, частично проверка на работоспособность Kaspersky, но они ничего особенного здесь не сделали. В любом случае, Kaspersky нуждается в сканировании файла, вряд ли что-то можно сделать по этому поводу - это антивирус, для громкого крика. С другой стороны, проверка прав при создании и удалении файла (вероятно) очень и очень ошибочна. Так что, наверное, ты здесь виноват.

Ответ 9

У меня была та же проблема. KIS справлялся со всеми неприятностями. Пока я не переустановил его. Таким образом, это была просто неисправная установка.