Ошибка 0x80070005 при регистрации DLL через regsvr32 означает отказ в доступе во время записи COM-данных в реестр или обращения к модулю. На практике чаще всего причина в запуске без прав администратора, неверной разрядности regsvr32 или отсутствующих зависимостях библиотеки.
Выполняйте шаги по порядку: сначала проверка команды и прав, затем диагностика зависимостей и восстановление системы.
⚠️ Важно перед правками
Создайте точку восстановления: Win + R → sysdm.cpl
→ «Защита системы» → «Создать». Это обязательно перед изменением ACL, регистрацией
системных DLL и правкой реестра.
Способ 1. Проверить путь к DLL и запуск консоли с повышением
- Откройте CMD через «Запуск от имени администратора».
- Убедитесь, что путь к DLL существует и указан в кавычках.
- Запустите регистрацию повторно.
Способ 2. Использовать корректный regsvr32 для x64/x86
- Для 64-битной DLL используйте regsvr32 из System32.
- Для 32-битной DLL используйте regsvr32 из SysWOW64.
%windir%\System32\regsvr32.exe "C:\Path\component64.dll"
%windir%\SysWOW64\regsvr32.exe "C:\Path\component32.dll" Способ 3. Выполнить регистрацию из каталога DLL
- Перейдите в папку, где лежит DLL.
- Запустите regsvr32 с полным путём к утилите.
cd /d "C:\Path"
%windir%\System32\regsvr32.exe "C:\Path\component64.dll" Способ 4. Проверить права доступа к DLL и каталогу
- Проверьте ACL файла и родительской папки.
- Убедитесь, что у Administrators и SYSTEM есть доступ.
icacls "C:\Path\component64.dll"
icacls "C:\Path" Способ 5. Проверить зависимости DLL
- Установите актуальные Microsoft Visual C++ Redistributable x86/x64.
- Проверьте, нет ли отсутствующих зависимых модулей.
- После установки runtime повторите регистрацию DLL.
Способ 6. Временно исключить блокировку защитой
- Временно отключите сторонний антивирус или HIPS/EDR-политики.
- Добавьте папку с DLL в исключения на время регистрации.
- Сразу после проверки верните защиту в рабочий режим.
Способ 7. Проверить и восстановить системные файлы
sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannow Способ 8. Проверить права на ветки COM в реестре
- Откройте
regeditот администратора. -
Проверьте доступ к веткам
HKEY_CLASSES_ROOT\CLSIDиHKEY_CLASSES_ROOT\TypeLib. -
При необходимости верните стандартные разрешения для
TrustedInstaller,SYSTEM,Administrators.
💡 Совет
Если DLL относится к конкретной программе, сначала выполните её штатный ремонт/переустановку. Ручной regsvr32 нужен, когда вендор прямо требует регистрацию библиотеки.
Полезные пути и журналы
- 64-битный regsvr32:
C:\Windows\System32\regsvr32.exe. - 32-битный regsvr32:
C:\Windows\SysWOW64\regsvr32.exe. -
Лог установок/драйверов:
C:\Windows\INF\setupapi.dev.log. - Системные события:
C:\Windows\System32\winevt\Logs. -
Логи восстановления:
C:\Windows\Logs\CBS\CBS.log,C:\Windows\Logs\DISM\dism.log.
FAQ
Что означает ошибка 0x80070005 при regsvr32?
Код 0x80070005 означает Access Denied. Утилита regsvr32 не может записать нужные COM-записи в реестр или получить доступ к DLL из-за недостатка прав.
Почему важно выбирать правильный regsvr32 x86 или x64?
32-битные и 64-битные DLL регистрируются разными версиями regsvr32. Неверный выбор часто приводит к ошибкам регистрации или сообщению о несовместимом модуле.
Как понять, что DLL не регистрируется из-за зависимостей?
Если файл найден, но регистрация падает, часто отсутствуют runtime-библиотеки VC++ или другие зависимости. Это видно по событиям приложения и инструментам проверки зависимостей.
Нужно ли запускать regsvr32 только от имени администратора?
Для системных DLL и записи в HKLM — да, обязательно. Без повышенных прав regsvr32 часто возвращает 0x80070005 даже при корректном пути к файлу.
Что делать, если 0x80070005 остаётся после правильной команды?
Проверьте ACL файла и ключей реестра, отключите временно блокирующий антивирус, установите нужные VC++ runtime и выполните SFC/DISM для восстановления системных компонентов.