При переходе на новые версии антивирусного ПО (в частности, Kaspersky Endpoint Security при обновлении через централизованный сервер администрирования Kaspersky Security Center) системные администраторы и программисты 1С часто сталкиваются с критической неполадкой. При попытке программного открытия внешних файлов (документов Excel, Word, PDF или запуске связанных приложений) платформа 1cv8.exe или 1cv8c.exe намертво зависает без вывода каких-либо диагностических сообщений. При этом обычная приостановка работы антивируса на клиентском компьютере не дает эффекта, а откат к предыдущей версии полностью снимает проблему. Разберем по шагам, почему возникает эта ошибка и как корректно настроить политики безопасности в корпоративной сети.
Проанализируем ситуацию на уровне взаимодействия операционной системы, платформы 1С и средств защиты информации:
klif.sys, klflt.sys) остаются активными в оперативной памяти ядра Windows. Они продолжают перехватывать системные вызовы ввода-вывода (I/O) и файловые дескрипторы до полной перезагрузки рабочей станции.%TEMP% или AppData и пытается запустить его с помощью команды ОС, антивирус расценивает создание дочернего процесса из временного каталога как потенциальную угрозу (эксплойт или шифровальщик) и блокирует поток до подтверждения, окно которого может не отображаться пользователю.Стандартного добавления путей к базам и каталогам кэша в исключения файлового антивируса недостаточно. Для исключения взаимоблокировок необходимо настроить параметры доверенных программ в политиках KSC. Рассмотрим подробнее последовательность действий:
%ProgramFiles%\1cv8\*\bin\1cv8.exe и %ProgramFiles%\1cv8\*\bin\1cv8c.exe, а также пути для x86-версий %ProgramFiles(x86)%\1cv8\*\bin\*).Разберем типичную системную ошибку администраторов: параметры в KSC настроены, но на рабочих станциях проблема сохраняется. Обратите внимание на пиктограммы «замков» рядом с настраиваемыми разделами исключений:
Если после добавления исполняемых файлов в доверенные программы задержки сохраняются, проведем покомпонентное тестирование на отдельной тестовой рабочей станции:
Посмотрим на программный код, который инициирует открытие файлов. Зачастую зависание происходит из-за синхронного ожидания ответа от запущенного процесса или использования устаревших COM-объектов. Проанализируем способы защиты кода от блокировок интерфейса:
ЗапуститьПриложение() третий параметр (ДождатьсяЗавершения) по умолчанию часто устанавливают в Истина. Если антивирус задерживает запуск внешней утилиты, сеанс 1С зависает навсегда. Изменим параметр на Ложь:
// Открытие файла без блокировки основного потока 1С
ИмяФайла = "C:\Temp\Report.xlsx";
ЗапуститьПриложение(ИмяФайла, , Ложь);
// Асинхронный запуск ассоциированного приложения
ИмяФайла = ПолучитьИмяВременногоФайла("pdf");
ОповещениеОЗавершении = Новый ОписаниеОповещения("ПослеОткрытияФайла", ЭтотОбъект);
НачатьЗапускПриложения(ОповещениеОЗавершении, ИмяФайла);
COMОбъект("Excel.Application") исключительно для чтения данных из файлов, антивирус может расценивать такой запуск DCOM-сервера как скрытую атаку. Заменим COM-соединение на объект ТабличныйДокумент, который считывает таблицы XLSX встроенными средствами ядра 1С без запуска сторонних процессов в операционной системе:
ТабДок = Новый ТабличныйДокумент;
Попытка
ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);
Исключение
ВызватьИсключение "Не удалось прочитать файл встроенными средствами: " + ОписаниеОшибки();
КонецПопытки;
Комплексное применение настроек — добавление 1cv8.exe в доверенную зону с отключением инжекции DLL, обязательное закрытие замков в политиках KSC и переход на неблокирующие методы запуска файлов в коде 1С — полностью устраняет зависания сеансов пользователей при работе с новой версией антивируса.