Почему 1С зависает при программном открытии файлов после обновления антивируса Касперского и как это исправить?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При переходе на новые версии антивирусного ПО (в частности, Kaspersky Endpoint Security при обновлении через централизованный сервер администрирования Kaspersky Security Center) системные администраторы и программисты 1С часто сталкиваются с критической неполадкой. При попытке программного открытия внешних файлов (документов Excel, Word, PDF или запуске связанных приложений) платформа 1cv8.exe или 1cv8c.exe намертво зависает без вывода каких-либо диагностических сообщений. При этом обычная приостановка работы антивируса на клиентском компьютере не дает эффекта, а откат к предыдущей версии полностью снимает проблему. Разберем по шагам, почему возникает эта ошибка и как корректно настроить политики безопасности в корпоративной сети.

Выясним причину: почему отключение антивируса не помогает и где происходит зависание

Проанализируем ситуацию на уровне взаимодействия операционной системы, платформы 1С и средств защиты информации:

  1. Драйверы-фильтры ядра ОС. При выгрузке пользовательского интерфейса антивируса или временной приостановке защиты низкоуровневые системные драйверы (например, klif.sys, klflt.sys) остаются активными в оперативной памяти ядра Windows. Они продолжают перехватывать системные вызовы ввода-вывода (I/O) и файловые дескрипторы до полной перезагрузки рабочей станции.
  2. Внедрение библиотек в адресное пространство процессов (DLL Injection). Современные версии KES используют механизм инжекции собственных библиотек в запускаемые процессы для мониторинга вызовов Windows API. Когда процесс 1С пытается вызвать системную функцию открытия ассоциированного файла или инициализировать COM-сервер, возникает взаимная блокировка потоков (deadlock) из-за внутренних проверок антивирусного модуля.
  3. Модули HIPS, защита от эксплойтов и мониторинг активности. Если процедура 1С сохраняет временный файл в системный каталог %TEMP% или AppData и пытается запустить его с помощью команды ОС, антивирус расценивает создание дочернего процесса из временного каталога как потенциальную угрозу (эксплойт или шифровальщик) и блокирует поток до подтверждения, окно которого может не отображаться пользователю.

Шаг 1. Корректная настройка доверенной зоны и исключений в Kaspersky Security Center

Стандартного добавления путей к базам и каталогам кэша в исключения файлового антивируса недостаточно. Для исключения взаимоблокировок необходимо настроить параметры доверенных программ в политиках KSC. Рассмотрим подробнее последовательность действий:

  1. Откроем консоль администрирования Kaspersky Security Center и перейдем в свойства политики, действующей на проблемную группу компьютеров.
  2. Перейдем в раздел Общие параметры → Исключения из проверки (или Доверенная зона) и откроем список Доверенные программы.
  3. Добавим исполняемые файлы тонкого и толстого клиентов платформы (например, маски %ProgramFiles%\1cv8\*\bin\1cv8.exe и %ProgramFiles%\1cv8\*\bin\1cv8c.exe, а также пути для x86-версий %ProgramFiles(x86)%\1cv8\*\bin\*).
  4. В свойствах каждого добавленного исполняемого файла обязательно отметим следующие флаги исключений:
    • Не внедрять код в адресное пространство процесса — ключевой параметр, предотвращающий зависание 1С при создании дочерних процессов и межпроцессных связках.
    • Не контролировать активность программы.
    • Не контролировать активность дочерних программ — необходимо для того, чтобы запущенные из 1С средства просмотра файлов (Word, Excel, Adobe Acrobat) не вызывали блокировку родительского процесса платформы.
    • Не проверять открываемые файлы.

Шаг 2. Проверка состояния политик («замков») на сервере администрирования

Разберем типичную системную ошибку администраторов: параметры в KSC настроены, но на рабочих станциях проблема сохраняется. Обратите внимание на пиктограммы «замков» рядом с настраиваемыми разделами исключений:

  1. Если значок замка рядом с разделом «Доверенная зона» или «Контроль активности программ» находится в открытом состоянии, политика считается необязательной (рекомендательной). Клиентские компьютеры не применяют эти значения и сохраняют свои локальные настройки по умолчанию.
  2. Обязательно переведите замок в закрытое состояние (защелкните его), после чего сохраните политику.
  3. Принудительно запустите синхронизацию политик на клиентских агентах через KSC или дождитесь регламентного опроса, после чего выполните перезагрузку тестового клиентского ПК для обновления состояния драйверов-перехватчиков.

Шаг 3. Локализация и покомпонентная диагностика модулей KES

Если после добавления исполняемых файлов в доверенные программы задержки сохраняются, проведем покомпонентное тестирование на отдельной тестовой рабочей станции:

  1. Временно создадим тестовую политику в KSC и последовательно отключим следующие компоненты:
    • Контроль активности программ (HIPS);
    • Мониторинг системы (System Watcher / Защита от эксплойтов);
    • Проверка защищенных соединений.
  2. После отключения каждого компонента производим перезагрузку компьютера и проверяем программное открытие файла в режиме 1С:Предприятия.
  3. Если после отключения, например, «Контроля активности программ» зависания прекращаются, переводим этот модуль в режим пониженной строгости для группы «Доверенные», исключая блокировку системных вызовов для бизнес-приложений.

Шаг 4. Оптимизация исходного кода 1С при открытии файлов

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

  1. Отказ от ожидания завершения. При использовании метода ЗапуститьПриложение() третий параметр (ДождатьсяЗавершения) по умолчанию часто устанавливают в Истина. Если антивирус задерживает запуск внешней утилиты, сеанс 1С зависает навсегда. Изменим параметр на Ложь:

// Открытие файла без блокировки основного потока 1С
ИмяФайла = "C:\Temp\Report.xlsx";
ЗапуститьПриложение(ИмяФайла, , Ложь);
  1. Переход на асинхронные вызовы. В управляемом интерфейсе платформы 1С:Предприятие 8.3 рекомендуется полностью отказаться от блокирующих модальных методов в пользу асинхронных конструкций:

// Асинхронный запуск ассоциированного приложения
ИмяФайла = ПолучитьИмяВременногоФайла("pdf");
ОповещениеОЗавершении = Новый ОписаниеОповещения("ПослеОткрытияФайла", ЭтотОбъект);
НачатьЗапускПриложения(ОповещениеОЗавершении, ИмяФайла);
  1. Отказ от COM-объектов в пользу встроенных средств платформы. Если код использует вызов COMОбъект("Excel.Application") исключительно для чтения данных из файлов, антивирус может расценивать такой запуск DCOM-сервера как скрытую атаку. Заменим COM-соединение на объект ТабличныйДокумент, который считывает таблицы XLSX встроенными средствами ядра 1С без запуска сторонних процессов в операционной системе:

ТабДок = Новый ТабличныйДокумент;
Попытка
    ТабДок.Прочитать(ИмяФайла, СпособЧтенияЗначенийТабличногоДокумента.Текст);
Исключение
    ВызватьИсключение "Не удалось прочитать файл встроенными средствами: " + ОписаниеОшибки();
КонецПопытки;

Комплексное применение настроек — добавление 1cv8.exe в доверенную зону с отключением инжекции DLL, обязательное закрытие замков в политиках KSC и переход на неблокирующие методы запуска файлов в коде 1С — полностью устраняет зависания сеансов пользователей при работе с новой версией антивируса.

← На главную