- Ошибка 0x80070005 при попытке зарегистрировать DLL с помощью Regsvr32.exe
- Симптомы
- Причина
- Решение
- Дополнительные сведения
- Как исправить: Не удалось выполнить вызов DllRegisterServer код ошибки 0x80070005
- Запуск командной строки с повышенными правами
- Отключение контроля учетных записей
- Отключение антивируса
- Код ошибки 0x80070005: как исправить
- О чем свидетельствует этот сбой?
- Если причина в антивирусе…
- Код ошибки 0x80070005: как исправить путем онлайн-восстановления системы
- Использование утилиты SublnACL и скриптов
- Код ошибки 0x80070005 DllRegisterServer
- Если ничего не помогает
- Вместо итога
- Исправляем ошибку 0x80070005 в Windows 10
- Исправление ошибки 0x80070005
- Причина 1: Антивирус
- Причина 2: Отключена служба VSS
- Причина 3: Сбой TCP/IP
- Причина 4: Атрибуты системной папки
- Причина 5: Ошибки при загрузке обновлений
- Причина 6: Права доступа
- Причина 7: Повреждение системных файлов
- Причина 8: Вирусы
- Причина 9: Ошибки на жестком диске
- Заключение
Ошибка 0x80070005 при попытке зарегистрировать DLL с помощью Regsvr32.exe
В этой статье приводится решение ошибки 0x80070005, которая возникает при регистрации DLL с помощью Regsvr32.exe.
Исходная версия продукта: Windows 10 — все выпуски, Windows Server 2012 R2
Исходный номер КБ: 827659
Симптомы
При попытке зарегистрировать динамическую библиотеку ссылок (DLL- или DLL-файл) с помощью средства командной строки Regsrv32.exe DLL не зарегистрирована, и вы можете получить следующее сообщение об ошибке:
Сбой DllRegisterServer в file_name DLL.
Код возврата: 0x80070005
Такое поведение не происходит в Windows NT 4.0 или Windows 2000.
Причина
Это может произойти при попытке зарегистрировать DLL с помощью Regsrv32 при входе в систему с использованием учетной записи, которая не имеет административных учетных данных, например учетной записи, которая является членом стандартной группы пользователей. Учетная запись без административных учетных данных не может записываться в реестр или изменять файлы в папке System32.
Это происходит потому, что в Windows XP и Windows Server 2003 используется более ограничивающая схема безопасности, чем в предыдущих версиях Windows. Эта схема не позволяет стандартным пользователям регистрировать DLL.
Из-за этого стандартные пользователи могут не иметь возможности запускать программы, которые самостоятельно регистрируют DLL, используя стандартный ИД пользователя.
Решение
Чтобы устранить эту проблему, войдите в систему с помощью учетной записи администратора и зарегистрируйте DLL.
Дополнительные сведения
Вы можете зарегистрировать DLL с помощью учетной записи, которая не имеет административных учетных данных, если DLL не записи в реестр или файлы изменений в папке System32.
Как исправить: Не удалось выполнить вызов DllRegisterServer код ошибки 0x80070005
Запуск команды regsvr32 иногда прерывается сообщением «Модуль DLL загружен, не удалось выполнить вызов DllRegisterServer, код ошибки 0x80070005». Причина его возникновения указывает на то, что у текущей учетной записи отсутствуют права администратора. Поэтому проблема быстро решается предоставлением этих разрешений.
Запуск командной строки с повышенными правами
Проблему можно устранить путем предоставления пользователю администраторских разрешений.
В панели системного поиска наберите «cmd» . Кликните правой кнопкой мыши на найденный результат и запустите от имени администратора.
Запустите в консоли команду regsvr32, которую не удавалось из-за ошибки DllRegisterServer с кодом 0x80070005.
Отключение контроля учетных записей
Иногда устранить ошибку DllRegisterServer 0x80070005 можно путем отключения контроля UAC. После деактивации система не будет выводить запрос на подтверждение администраторского доступа.
Имейте в виду, что его деактивация ослабляет безопасность систему, поэтому рекомендуется включить эту функцию после завершения процесса регистрации.
Перейдите в командную строку с помощью системного поиска.
Выполните следующую команду:
reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 0 /f
После успешного завершения перезагрузите компьютер и выполните то действие, которое не удалось из-за отсутствия вызова DllRegisterServer.
Если regsvr32 обработана успешно, обратно включите UAC:
reg.exe ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v EnableLUA /t REG_DWORD /d 1 /f
Отключение антивируса
Если продолжаете сталкиваться с ошибкой, несмотря на наличие повышенных прав, то, скорее всего, регистрации препятствует антивирус.
Чтобы приостановить защиту, щелкните правой кнопкой на значок в области уведомлений панели задач и выберите соответствующий пункт. Если этим способом не удалось это сделать, найдите в настройках соответствующую опцию. После попробуйте зарегистрировать библиотеку DLL.
Код ошибки 0x80070005: как исправить
Абсолютно все пользователи знают, что Windows-системы подвержены появлению непредвиденных сбоев и ошибок чаще других ОС. Одним из самых распространенных является сбой, сообщение о котором содержит код ошибки 0x80070005. Windows 7 или любая другая версия ОС при этом используется на компьютере, не столь важно, важно то, что по каким-то причинам операционной системе отказано в доступе к удаленному серверу или выполнению того или иного действия. Причин такого явления может быть достаточно много, как и методов решения проблемы.
О чем свидетельствует этот сбой?
Ошибка этого типа, как считается, может появляться в нескольких ситуациях. Чаще всего ее возникновение ассоциируется с попыткой установки апдейтов, активацией или восстановлением системы. Однако это далеко не все случаи ее проявления. Дело в том, что даже при регистрации динамических библиотек код будет одним и тем же, а вот описания сбоя – другими.
Однако в общем случае код ошибки 0x80070005 говорит, что система пытается обращаться к серверу Microsoft или к другому ресурсу (например, при установке игр), но в ответ получает запрет. С другой стороны, такой сбой может быть связан с установкой библиотек vbscript.dll и jsscript.dll, при которой производится их регистрация в системе в ручном режиме.
Далее мы предлагаем несколько решений, которые пусть и не гарантировано, но помогут исправить ситуацию. А не гарантировано потому, что сообщение может содержать один и тот же код, а первопричины – быть разными.
Если причина в антивирусе…
Итак, если вы получили код ошибки 0x80070005 (Windows 8) при обновлении, причина может состоять в установленном штатном антивирусе, который способен блокировать некоторые системные процессы.
В данном случае его нужно на несколько минут деактивировать и повторить обновление путем ручного поиска апдейтов. Еще лучше – зайти в основные настройки и отключить самозащиту. Возможно, это и сработает. Однако в большинстве случаев причина не в этом.
Код ошибки 0x80070005: как исправить путем онлайн-восстановления системы
Очень может быть, что появление сбоя связано с нарушением целостности компонентов системы. Их нужно проверить. Для этого используется командная строка, запускать которую необходимо исключительно от имени администратора или локальной регистрационной записи, наделенной такими правами.
Первым делом прописывается команда sfc/scannow. Если по завершении процесса сбой появляется снова, то при постоянном подключении к интернету можно произвести проверку или восстановление системы онлайн.
Для этого в той же консоли применяется команда, указанная на изображении выше. Если это не сработало, двигаемся дальше.
Использование утилиты SublnACL и скриптов
Многие специалисты одним из самых мощных средств устранения сбоя, содержащего код ошибки 0x80070005 (Windows 8.1 возьмем для примера), называют небольшую программу под названием SublnACL, которую можно скачать непосредственно с официального ресурса Microsoft в виде одного исполняемого EXE-файла.
При установке в качестве локации желательно указать корень системного раздела или создать на системном диске одноименную папку. После этого следует использовать стандартный «Блокнот» и прописать там текст, как на приведенном ниже изображении.
Созданный файл нужно сохранить в формате BAT, выбрав в типе объекта «Все файлы», а расширение через точку прописать вручную.
Сохранить файл нужно в той же папке, куда была установлена вышеуказанная утилита. Теперь нужно через ПКМ запустить сохраненный BAT-файл от имени админа. После выполнения закрываем командную консоль, перезагружаем систему и пробуем выполнить операцию, исполнение которой выдало код ошибки 0x80070005.
Если сбой появляется снова, можно изменить содержание BAT-файла и прописать там указанный на фото ниже текст.
После этого производятся процедуры, описанные для первого скрипта.
Код ошибки 0x80070005 DllRegisterServer
Теперь несколько слов касательно регистрации динамических библиотек, когда используется инструмент системы regsvr.32.exe. Как уже было сказано, и в этом случае сообщение может содержать код ошибки 0x80070005.
В этой ситуации возможно применение трех типов решений. Вначале попытайтесь запустить ее исключительно с правами администратора. Если не получится, просто измените тип собственной учетной записи на администраторскую в соответствующем разделе «Панели управления» с последующей перезагрузкой.
Наконец отключите контроль «учеток» (UAC), используя для этого параметры управления регистрационными записями, где ползунок уровня безопасности нужно переставить в самое нижнее положение, сохраните изменения и произведите рестарт системы.
После совершения каждого действия необходимо проверять, устранена ли проблема, путем повторного использования инструмента регистрации (regsvr32.exe).
Если ничего не помогает
В зависимости от первопричины сложившейся ситуации код ошибки 0x80070005 может выдаваться снова и снова. Если ничего из вышеперечисленного не помогло, выполните следующие действия:
- Проверьте, достаточно ли места на локальном диске или в логических разделах, где могут храниться резервные копии. При условии переполнения произведите очистку, используя для этого раздел свойств выбранного раздела и стандартное средство очистки.
- Найдите в системном разделе папку System Volume Information, предварительно сняв флажки с пунктов сокрытия защищенных системных файлов и скрытых объектов, вызовите меню свойств и снимите атрибут «Только чтение».
- Вызовите конфигуратор системы (msconfig), отключите все элементы автозагрузки и установите выборочный запуск, оставив активным пункт оригинальной конфигурации.
- Вызовите раздел служб (services.msc) и проверьте службу теневого копирования. Если она неактивна, двойным кликом войдите в меню редактирования параметров, запустите ее и установите для запуска автоматический старт.
- Сбросьте репозиторий. Для этого загрузите систему в безопасном режиме (F8 при старте), запустите командную консоль и введите команду net stop winmgmt. Затем перейдите к директории repository, расположенной в каталоге wbem папки System32, и переименуйте ее, присвоив имя, например, repository-old. Снова перегрузите систему в безопасном режиме и в консоли повторно введите команду, указанную чуть выше. После ее выполнения пропишите строку winmgmt /resetRepository. По завершении выполнения закройте командую консоль и загрузите систему в обычном режиме.
Вместо итога
Как видите, разновидностей сбоя, описанного выше, с одним и тем же кодом ошибки, равно как и вариантов устранения проблемы, может быть достаточно много. Сразу бывает трудно определить, что именно явилось первопричиной такой ситуации, поэтому, если присутствует хоть какое-то описание, выбрать методику исправления нужно, исходя из его содержания. Если появляется неизвестная ошибка, придется действовать наугад. Тут уж ничего не поделаешь.
Исправляем ошибку 0x80070005 в Windows 10
Исправление ошибки 0x80070005
Эта ошибка чаще всего возникает при очередном автоматическом или ручном обновлении ОС. Кроме того, бывают ситуации, когда диалоговое окно с этим кодом возникает при запуске какого-либо приложения. Причины, которые приводят к такому поведению «винды», весьма разнообразные – от «хулиганства» антивирусной программы до повреждения данных в системном разделе.
Причина 1: Антивирус
Антивирусные программы чувствуют себя хозяевами в системе и зачастую действуют совершенно по-хулигански. Применимо к нашей ситуации они могут заблокировать доступ в сеть для служб обновления или запретить выполнение программ. Решить проблему можно, отключив активную защиту и брандмауэр, если таковой входит в пакет, или совсем удалить софт на время произведения апдейта.
Причина 2: Отключена служба VSS
VSS – это служба теневого копирования, позволяющая перезаписывать те файлы, которые в данный момент заняты какими-либо процессами или программами. Если она отключена, то некоторые фоновые операции могут проходить с ошибками.
- Открываем системный поиск, нажав на значок лупы в левом нижнем углу на «Панели задач», пишем запрос «Службы» и открываем найденное приложение.
Ищем в списке сервис, показанный на скриншоте, кликаем по нему, а затем жмем на ссылку «Запустить».
Если в колонке «Состояние» уже указано «Выполняется», нажимаем «Перезапустить», после чего перезагружаем систему.
Причина 3: Сбой TCP/IP
Большинство операций обновления происходит с подключением к интернету с помощью TCP/IP. Сбой в работе последнего может приводить к ошибке 0x80070005. Здесь поможет сброс стека протокола с помощью консольной команды.
- Запускаем «Командную строку». Обратите внимание, что это нужно сделать от имени администратора, иначе прием может не сработать.
Пишем (копируем и вставляем) такую команду:
netsh int ip reset
Жмем клавишу ENTER.
Причина 4: Атрибуты системной папки
На каждом диске в системе присутствует специальная папка с названием «System Volume Information», содержащая некоторые данные о разделах и файловой системе. Если она имеет атрибут, разрешающий только чтение, то процессы, требующие записи в этот каталог, будут выдавать ошибку.
- Открываем системный диск, то есть тот, как который установлена Виндовс. Идем на вкладку «Вид», открываем «Параметры» и переходим к изменению параметров папок.
Здесь снова активируем вкладку «Вид» и отключаем опцию (убираем флажок), скрывающую защищенные системные файлы. Жмем «Применить» и ОК.
Ищем нашу папку, кликаем по ней ПКМ и открываем свойства.
Возле позиции «Только для чтения» снимаем галку. Обратите внимание, что чекбокс не обязательно должен стать пустым. Квадратик тоже подойдет (см. скриншот). Тем более что после закрытия свойств именно эта отметка выставится автоматически. После настройки нажимаем «Применить» и закрываем окно.
Причина 5: Ошибки при загрузке обновлений
В «винде» имеется еще одна особая директория с названием «SoftwareDistribution», в которую попадают все загруженные обновления. Если во время процесса скачивания и копирования произошла ошибка или обрыв соединения, то пакеты могут оказаться поврежденными. При этом система будет «думать», что файлы уже скачаны и будет пытаться ими воспользоваться. Для решения проблемы нужно очистить эту папку.
- Открываем оснастку «Службы» через системный поиск (см.выше) и останавливаем «Центр обновлений».
Таким же способом завершаем работу сервиса фоновой передачи.
Теперь идем в папку «Windows» и открываем нашу директорию.
Выделяем все содержимое и удаляем его.
Для гарантированного достижения результата необходимо очистить «Корзину» от этих файлов. Сделать это можно с помощью специальных программ или вручную.
Причина 6: Права доступа
Обсуждаемая нами ошибка может возникать из-за неверных настроек прав доступа к изменению некоторых важных разделов и ключей системного реестра. Попытка настройки этих параметров вручную может также оказаться неудачной. Поможет нам справиться с поставленной задачей консольная утилита SubInACL. Поскольку по умолчанию она отсутствует в системе, ее нужно скачать и установить.
- Создаем в корне диска C: папку с названием «SubInACL».
Запускаем скачанный установщик и в стартовом окне жмем «Next».
Принимаем условия лицензионного соглашения.
Нажимаем кнопку обзора.
В выпадающем списке выбираем диск C:, кликаем по созданной ранее папке и жмем ОК.
Запускаем установку.
Закрываем инсталлятор.
Здесь стоит объяснить, зачем мы меняли путь установки. Дело в том, что дальше нам придется писать скрипты для управления реестром, и в них будет фигурировать этот адрес. По умолчанию он довольно длинный и при вводе вполне можно ошибиться. К тому же там еще присутствуют пробелы, что подразумевает взятие значения в кавычки, отчего утилита может повести себя непредсказуемо. Итак, с инсталляцией мы разобрались, переходим к скриптам.
- Открываем обычный системный «Блокнот» и прописываем в нем вот такой код:
@echo off
Set OSBIT=32
IF exist «%ProgramFiles(x86)%» set OSBIT=64
set RUNNINGDIR=%ProgramFiles%
IF %OSBIT% == 64 set RUNNINGDIR=%ProgramFiles(x86)%
C:\subinacl\subinacl.exe /subkeyreg «HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing» /grant=»nt service\trustedinstaller»=f
@Echo Gotovo.
@pause
Идем в меню «Файл» и выбираем пункт «Сохранить как».
Тип выбираем «Все файлы», даем скрипту любое название с расширением .bat. Сохраняем в удобное место.
Перед тем, как применять данный «батник», необходимо подстраховаться и создать точку восстановления системы, чтобы можно было откатить изменения в случае сбоя.
- Запускаем скрипт от имени администратора.
Если прием не сработал, следует создать и применить еще один «батник» с кодом, указанным ниже. Не забудьте про точку восстановления.
@echo off
C:\subinacl\subinacl.exe /subkeyreg HKEY_LOCAL_MACHINE /grant=administrators=f
C:\subinacl\subinacl.exe /subkeyreg HKEY_CURRENT_USER /grant=administrators=f
C:\subinacl\subinacl.exe /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f
C:\subinacl\subinacl.exe /subdirectories %SystemDrive% /grant=administrators=f
C:\subinacl\subinacl.exe /subkeyreg HKEY_LOCAL_MACHINE /grant=system=f
C:\subinacl\subinacl.exe /subkeyreg HKEY_CURRENT_USER /grant=system=f
C:\subinacl\subinacl.exe /subkeyreg HKEY_CLASSES_ROOT /grant=system=f
C:\subinacl\subinacl.exe /subdirectories %SystemDrive% /grant=system=f
@Echo Gotovo.
@pause
Примечание: если во время выполнения скриптов в «Командной строке» мы видим ошибки доступа, значит, изначальные настройки реестра уже правильные, и нужно смотреть в сторону других способов исправления.
Причина 7: Повреждение системных файлов
Ошибка 0x80070005 также возникает и по причине повреждения системных файлов, отвечающих за нормальное течение процесса апдейта или запуск среды для выполнения программ. В таких случаях можно только попытаться их восстановить, используя две консольных утилиты.
Причина 8: Вирусы
Вредоносные программы это извечная проблема владельцев ПК под управлением Виндовс. Эти вредители способны портить или блокировать системные файлы, изменять параметры реестра, вызывая различные сбои в системе. Если приведенные выше способы не принесли положительного результата, нужно проверить ПК на наличие вредоносных программ и при обнаружении избавиться от них.
Причина 9: Ошибки на жестком диске
Следующее, на что следует обратить внимание, это возможные ошибки на системном диске. В Виндовс имеется встроенное средство по проверке и устранению таких неполадок. Впрочем, можно воспользоваться и специально предназначенными для этого программами.
Заключение
Крайним средством исправления ошибки 0x80070005 является попытка восстановления системы или ее полная переустановка.
Давать советы по профилактике данной неполадки довольно сложно, но есть несколько правил, позволяющих минимизировать ее возникновение. Во-первых, изучите статью из параграфа про вирусы, это поможет понять, как не заразить свой компьютер. Во-вторых, старайтесь не пользоваться взломанными программами, особенно теми, которые устанавливают свои драйвера или службы, или меняют параметры сети и системы в целом. В третьих, без крайней надобности и предварительного изучения процесса, не изменяйте содержимое системных папок, параметров реестра и настроек «винды».