Как скопировать файлы DLL в папку System32 или SysWOW64 для подключения 1С 7.7 к MS SQL Server?

Системный администратор 1С v7.7 IT и автоматизация бизнеса
← На главную

При запуске 1С:Предприятие 7.7 (SQL-версия) на современных операционных системах Windows (Windows 7, 10, 11 или Windows Server) пользователи часто сталкиваются с ошибкой: «Для доступа к базе данных требуется ODBC-драйвер для MS SQL Server версии 3.50.0303 или старше». Попытка заменить системные библиотеки sqlsrv32.dll, sqlsrv32.rll и odbcbcp.dll в папке System32 на файлы из более старых версий ОС (Windows XP или Server 2003) приводит к ошибке доступа и отказу в копировании, даже если операция выполняется под учетной записью администратора.

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

Причины возникновения ошибки и особенности архитектуры Windows

Выясним причину, почему возникает проблема и почему операционная система блокирует копирование файлов:

  1. Проверка версии в BkEnd.dll: Библиотека BkEnd.dll платформы 1С 7.7 содержит жесткую проверку номера версии ODBC-драйвера SQL Server. В современных версиях Windows драйверы имеют иную нумерацию, которую устаревший модуль 1С ошибочно воспринимает как непригодную.
  2. Защита TrustedInstaller: В современных версиях Windows владельцем системных файлов в каталогах System32 и SysWOW64 является не группа «Администраторы», а специальная системная служба TrustedInstaller. Даже локальный администратор не имеет прав на запись и удаление этих файлов без предварительной смены владельца.
  3. Разрядность системы (x86 vs x64): Платформа 1С 7.7 является 32-разрядным приложением. В 64-битных операционных системах Windows 32-битные системные библиотеки хранятся в каталоге C:\Windows\SysWOW64, а не в C:\Windows\System32 (в System32 находятся 64-битные версии). Попытка копирования 32-битных DLL в папку System32 на 64-разрядной ОС не даст результата из-за механизма перенаправления WOW64.
  4. Блокировка процессов и автовосстановление: Если заменяемый DLL-файл уже загружен каким-либо процессом в памяти, ОС не позволит его перезаписать. Кроме того, служба SFC (System File Checker) может автоматически восстановить оригинальные файлы при следующей перезагрузке.

Способ 1. Локальное размещение библиотек в каталоге 1С (Рекомендуемый)

Рассмотрим самый простой и безопасный способ, который не требует изменения прав на системные каталоги Windows и не нарушает целостность операционной системы.

В Windows порядок поиска загружаемых библиотек (DLL Search Order) устроен так, что приложение в первую очередь ищет необходимые DLL-файлы в том каталоге, из которого запущен исполняемый файл 1cv7s.exe. Разберем порядок действий по шагам:

  1. Подготовим файлы библиотек от Windows XP или Windows Server 2003: sqlsrv32.dll, sqlsrv32.rll и odbcbcp.dll.
  2. Перейдем в каталог с установленной платформой 1С (обычно это C:\Program Files (x86)\1Cv77\BIN\).
  3. Скопируем все три подготовленных файла непосредственно в папку BIN.
  4. Запустим 1С:Предприятие и проверим подключение к базе данных.

При таком подходе 1С подгрузит нужные библиотеки из своей локальной папки BIN, не обращаясь к системным файлам Windows.

Способ 2. Настройка прав и смена владельца системных файлов

Если необходимо заменить файлы непосредственно в системном каталоге Windows, потребуется перехватить владение файлами у TrustedInstaller и выдать полный доступ учетной записи администратора.

На 64-битных системах операцию следует проводить с файлами в каталоге C:\Windows\SysWOW64\, на 32-битных — в C:\Windows\System32\.

Проанализируем выполнение процедуры через командную строку, запущенную от имени Администратора:

  1. Откроем командную строку от имени администратора.
  2. Выполним команду перехвата владения файлом: takeown /f C:\Windows\SysWOW64\sqlsrv32.dll
  3. Предоставим группе администраторов полные права на файл: icacls C:\Windows\SysWOW64\sqlsrv32.dll /grant Администраторы:F
  4. Повторим эти операции для файлов sqlsrv32.rll и odbcbcp.dll.
  5. Запустим сторонний файловый менеджер (например, FAR Manager или Total Commander) обязательно от имени администратора (через контекстное меню по правой кнопке мыши).
  6. Скопируем нужные библиотеки в целевую папку с заменой существующих файлов.

Если файлы заблокированы запущенными процессами, скопировать их можно, загрузив операционную систему в Безопасном режиме (Safe Mode) или воспользовавшись внешней загрузочной флешкой (LiveCD).

Способ 3. Отключение проверки версии драйвера в BkEnd.dll

Ещё один вариант решения проблемы без смены системных файлов — отключение проверки версии драйвера ODBC внутри самой платформы 1С 7.7. Для этого редактируется библиотека BkEnd.dll, находящаяся в папке BIN платформы.

В HEX-редакторе в файле BkEnd.dll находится смещение, отвечающее за сравнение версии драйвера, и заменяется байт проверки на безусловный переход. После этого 1С перестает выдавать ошибку версии ODBC и корректно работает со штатным драйвером MS SQL Server современной ОС.

Дополнительные настройки при работе с MS SQL Server

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

  1. Ошибка «Порядок сортировки отличается от системного»: Возникает из-за разницы в кодовых страницах при работе с новыми версиями SQL Server. Для обхода этой проверки достаточно создать пустой файл с именем OrdNoChk.prm и поместить его в папку BIN платформы или в каталог информационной базы.
  2. Настройка DSN-источника данных: При необходимости создать 32-битное DSN-подключение на 64-разрядной ОС следует запускать утилиту odbcad32.exe из каталога C:\Windows\SysWOW64\odbcad32.exe. Стандартный запуск из Панели управления открывает 64-битный администратор ODBC, в котором 32-битные драйверы не отображаются.
← На главную