Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

NET_OPEN_FILE_ERROR (20) IP-Телефония и СКУД

Dahua NetSDK Ошибка 20: NET_OPEN_FILE_ERROR — Ошибка открытия/создания файла

Обновлено: 24.08.2026 · Официальная документация ↗

Сбои при попытке начать локальную запись видеопотока или экспортировать снимок (снапшот):

  • Функции CLIENT_SaveRealData, CLIENT_CapturePicture или CLIENT_DownloadByTimeEx завершаются с кодом 20.
  • Файлы записи .dav или скриншоты .jpg не создаются на диске.
  • В системных логах регистрируется отказ в доступе к каталогу записи (Access Denied).

Ошибка NET_OPEN_FILE_ERROR (20) возникает, когда NetSDK не может создать или открыть файл по указанному локальному пути из-за отсутствия папки, недостатка прав NTFS/ext4 или блокировки антивирусом.

1. Проверка существования целевой директории

NetSDK не создает промежуточные подкаталоги автоматически. Если путь C:\Records\2025\05\cam1.dav содержит несуществующие папки, функция вернет ошибку 20.

// Создание дерева каталогов перед вызовом NetSDK (C++17 filesystem)
#include <filesystem>
namespace fs = std::filesystem;

std::string dirPath = "C:/Recordings/Camera_01/";
if (!fs::exists(dirPath)) {
    fs::create_directories(dirPath);
}

CLIENT_SaveRealData(lRealHandle, (dirPath + "record.dav").c_str());

2. Проверка прав учетной записи службы (Permissions)

  • Если приложение запущено как служба Windows (Local System), пути сетевых дисков (Z:\...) будут недоступны. Используйте только прямые UNC-пути вида \\192.168.1.50\share\records.
  • Убедитесь, что пользователю выданы права на запись (Write/Modify) в целевой каталог.

3. Проверка специальных символов и длины пути

  • Исключите из имени файла запрещенные символы: / : * ? " < > |.
  • В Linux учитывайте регистрозависимость путей (case sensitivity).
💡 Практика специалистов: Перед передачей пути в CLIENT_SaveRealData всегда проверяйте свободное место на диске через GetDiskFreeSpaceEx / statvfs. Оставляйте буфер безопасности не менее 5-10 ГБ.

Частые вопросы (FAQ)

Почему под администратором запись работает, а как служба — выдает ошибку 20?

Службы Windows запускаются в изолированной сессии 0 и не имеют доступа к сетевым дискам, подключенным в пользовательском сеансе.

Создает ли NetSDK вложенные папки самостоятельно?

Нет, библиотека NetSDK вызывает стандартный fopen/CreateFile, поэтому все родительские папки должны быть созданы заранее приложением.

Может ли антивирусное ПО блокировать создание .dav файлов?

Да, эвристические анализаторы и Ransomware-защита часто блокируют создание бинарных файлов неизвестными службами. Добавьте путь в исключения.

Что происходит при переполнении дискового пространства?

При полном исчерпании свободного места на носителе SDK также возвращает код ошибки 20 (NET_OPEN_FILE_ERROR).

Полезные материалы
Рекомендуем