0x80040154 class not registered

Способы самостоятельного решения OLE ошибки «класс не зарегистрирован» с кодом 0x80040154 в операционной системе Windows 7, 8 и 10

Каждый компьютер не застрахован от непредвиденных сбоев. Главной задачей пользователя ПК, попавшего в непредвиденную ситуацию — правильно определить и грамотно подойти к устранению эксцесса.
В данной статье речь пойдет об описании ошибки под номером 0x80040154, а также будут предложены методы исправления. Ошибка не является критической, что уже хорошо, так как полного выхода из операционной системы и вывода синего экрана не вызывает. Это даёт возможность, не выходя из системы, приступить к решению и устранению.

Возможные причины ошибки 0x80040154

  • Основной причиной данной ошибки является конфликт между свежеустановленным антивирусом и встроенным в Windows защитным обеспечением от Microsoft.
  • Второй по распространению причиной является заражение вашего жесткого диска компьютерными вирусами, которые провоцируют всевозможные сбои и блокируют стабильную работу программ-защитников.
  • Неграмотное удаление программ также может послужить причиной некорректной работы вашей системы. Неудаленные «хвосты» могут продолжать работу, но только со сбоями.

Симптомами данного кода ошибки являются постоянные выскакивающие сообщения, связанные со встроенным антивирусом от Microsoft, а также невозможность открывать или удалять его. Также достаточно распространенным является сообщение: «OLE error code 0x80040154: Class not registered (класс не зарегистрирован)».

Обратите внимание! Ошибка характерна для всех относительно новых операционных систем семейства Windows, начиная с «Семерки» — 7, 8, 8.1, 10.

Как её исправить?

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

Способ №1 — восстановление системы

При возникновении ошибки высока вероятность, что Вами был скачан вирус. Но даже если не помните, устанавливали ли Вы недавно что-то на ПК, то все равно советую сделать восстановление системы.

Суть данного способа – это вернуть ОС к более раннему времени, когда такой ошибки не было. Другими словами, будут отменены все изменения, которые привели к данной ошибке. Поэтому, если эта неприятность появилась после того, что вы установили на свой компьютер какую-либо вредоносную программу, то проблема должна уйти.

  1. Удерживая кнопку Win, нажмите R.
  2. В появившемся окошке введите rstrui.exe и нажмите «ОК».
  3. Откроется «Восстановление системы», где нужно нажать «Далее».
  4. Теперь нужно выбрать нужную точку восстановления. Изначально будет показана только самая последняя по времени. Ее и рекомендую, но поставив галочку «Показать другие точки восстановления», появятся еще более ранние. Нажмите «Далее».
  5. Теперь щелкните «Завершить» и следом «ОК».
  6. После этого компьютер будет перезагружен и начнет восстановление. Дождитесь окончания процесса.

Способ №2 — удаление стороннего антивируса

Программа защиты от вирусов, например «Касперский», может конфликтовать со встроенной защитой вашей системы, это нарушает стабильную работоспособность. Для того чтобы удалить антивирус:

  1. Зайдите в «панель управления», которая находится в окне пуск.
  2. В открывшемся окне найдите пункт «удаление программы» и выберите его.
  3. После недолгой сканировки системы отобразится список всех установленных программ, в этом списке найдите установленный вами антивирус, щелкните на нем правой кнопкой мыши и нажмите «удалить».
  4. После этого зайдите в MSE (Microsoft Security Essentials), если данная программа откроется без сообщения об ошибки — проблема устранена.

Способ №3 — удаление стандартного защитного обеспечения Windows

Бывают случаи, когда зловредные программы меняют структуру файлов MSE. В таком случае именно удаление решает проблему:

  1. Удерживая кнопку Win, нажмите R.
  2. Введите appwiz.cpl и нажмите «ОК».
  3. Найдите MSE и щелкните по нему.
  4. Нажмите «Удалить».
  5. Далее следуйте простым инструкциям на экране, чтобы удалить программу.

Способ №4 — инструмент Microsoft Fixit Tool

Используем данную программу для удаления Microsoft Security Essentials:

  1. Пройдите по этой ссылке http://ebmp.ru/d4l и скачайте специальную программу от Microsoft.
  2. После загрузки запустите скаченный файл, дважды щелкнув по нему.
  3. Затем нажмите «Далее».
  4. Щелкаем «Удалить».
  5. Выбираем Microsoft Security Client (или Essentials) и кликните «Далее».
  6. Повторите шаги с 2-4 и теперь выберите Microsoft Antimalware. Теперь нажмите кнопку «Далее».
  7. Теперь перезапустите компьютер для того, чтобы изменения сохранились, вступили в силу, и проверьте, осталась ли проблема.

Способ №5 — переустановка Windows

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

Важно! Этот способ удалит все данные из вашей системы, так что действуйте на свой страх и риск.Один из вышеперечисленных способов точно поможет Вам.

Полезное видео

Наглядное решение данного кода ошибки, связанного с работой браузера Google Chrome вы можете увидеть здесь:

Ошибка 2147221164 0x80040154 класс не зарегистрирован 1C 8.3

При установке популярной программы бухгалтерского учёта «1С» (версии 8.3) или обновления программы с версии 8.2 на 8.3, а также запуска какой-либо соответствующей процедуры, юзер может получить сообщение «Ошибка 2147221164 0x80040154 класс не зарегистрирован», вызванное отсутствием регистрации класса. Данная ошибка может быть вызвана несоответствием версий 1С на сервере и клиентском ПК, а также отсутствием регистрации необходимого класса COMConnector (dll-библиотека comcntr.dll) в ОС Виндовс. В данном материале я расскажу о сути указанной дисфункции, а также поясню, как от неё избавиться.

Стандартное сообщение о возникшей дисфункции

Особенности возникшей дисфункции

Разбираемая мной ошибка 2147221164 0x80040154 в 1C обычно связана с соединением баз данных по COM-объекту, и может иметь несколько причин:

  • Несовпадение конфигурации 1С на сервере и локальном ПК (к примеру, на сервере используется версия 8.3, а на локальном ПК – версия 8.1);
  • Невозможность прямого обращения 64-битной 1С к 32-битному файлу comcntr.dll;
  • В ОС Виндовс не зарегистрирован вышеупомянутый файл comcntr.dll.

    Разбираем устранение проблемы в 1C

Разберёмся со способами решения возникшей проблемы. Их два.

Способ №1. Регистрируем необходимые библиотеки

Если на ПК 32-битная ОС, то будет необходимо запустить командную строку с админ. правами, и там набрать:

C:\Windows\System32\regsvr32 «C:\Program Files (x86)\1cv8\XXXXX\bin\comcntr.dll»

Вместо XXXXX будет нужно ввести номер вашей версии 1С, к примеру, это может быть 8.3.10.2252 или иная (пройдите по указанному пути, и просмотрите номер установленной у вас версии). После этого регистрация упомянутого dll будет завершена, и «Ошибка 2147221164 0x80040154 класс не зарегистрирован» должна исчезнуть.

Уведомление об успешной регистрации dll

Если на ПК 64-битная ОС, то данная строка должна выглядеть так:

C:\Windows\SysWOW64\regsvr32 «C:\Program Files (x86)\1cv8\ХХХХХ\bin\comcntr.dll»

Где ХХХХХ – номер вашей версии 1С

Способ №2. Создаём компоненты для исправления ошибки 2147221164 0x80040154

Выполните следующее:

  1. Запустите консоль «Службы компонентов» (перейдите в «Панель управления», затем в «Администрирование», и здесь кликните на «Службы компонентов»);
  2. Здесь выберите «Мой компьютер» («Службы компонентов», затем «Компьютеры», и «Мой компьютер»). Наведите курсор на «Приложения COM+», нажмите на правую клавишу мыши, выберите «Создать» — «Приложение»;
  3. В открывшемся окне «Установка или создание нужного приложения» кликните на «Создать новое приложение».
  4. Введите имя для него (например, «ComConnector8»), а способом активации установите «Серверное приложение»;
  5. Учётной записью для активации приложения поставьте «Указанный пользователь». Нажмите на «Обзор», найдите учётную запись, из-под которой запускается наш сервер 1С (версия 8.3). К примеру, это может быть «USER1CV8». Пропустите следующие два пункта (дважды жмём на «Далее», а потом на «Готово)
  6. В ветке созданного приложения кликните на узел «Роли», а в нём – на «CreatorOwner». Наведите курсор на пункт «Пользователи», кликните на правую кнопку мышки, выберите «Создать», и «Пользователь». Затем выберите учётку, из-под которой стартует сервер 1С (к примеру, тот же «USER1CV8»);
  7. В ветке созданного нами приложения (в нашем случае это «ComConnector8») перейдите на узел «Компоненты». Наведите на него курсор, нажмите правую клавишу мыши, выберите «Создать», и «Компонент»;
  8. Затем выберите опцию «Установка новых компонентов», и в открывшемся окне найдите и кликните на нужный нам dll-файл (в нашем варианте это находящийся по пути C:\Program Files (x86)\1cv81\XXXXX\bin\comcntr.dll). Заверите создание указанного компонента;
  9. Откройте свойства созданного компонента, выберите вкладку «Безопасность», найдите там список «Явно установленные для выделения объектов роли», и поставьте флажок напротив «CreatorOwner».

Исправление проблем с незарегистрированными классами в 1С обычно решается с помощью двух способов, обозначенных мной выше. Наибольшую эффективность показал второй из перечисленных способов, потому рекомендую воспользоваться алгоритмом его реализации для исправления ошибки 2147221164 0x80040154 на вашем PC.

Исправление ошибки Windows Installer 0x80040154

В этой статье я расскажу об исправлении одной очень распространенной ошибки Windows Installer. Обыскавши Интернет как русскоязычный, так и англоязычный, включая форумы и ньюсгруппы Microsoft, я понял что ошибка довольно распространенная, однако исправить ее, на самом деле никому не удавалось.

Суть проблемы

Как то одним жарким летним вечером я решил установить на свой компьютер ActeiveState ActivePerl. Скачал инсталлятор, который был в .msi файле и запустил его. Каково же было мое удивление, когда вместо привычного инсталлятора я увидел вот это:

Как вскоре оказалось, подобная ошибка выпадала при запуске на моем компьютере любого .msi файла.
Недолго думая, я полез в интернет, ввел в поиск появившееся сообщение, и, «О ужас!» — я увидел сотни постов людей с этой проблемой! В русскоязычном и англоязычном сегменте Интернета у множества людей была аналогичная проблема, и никто ее не смог решить по существу.
Наиболее распространенными советы по решению проблемы были

  1. Переустановить Windows Installer — на моей Windows 7 x64 и так стоит Windows Installer 5.0, который нельзя отдельно скачать и переустановить
  2. Перерегистрировать msiexec, что также мне не помогло.
  3. В конце все советы сводились к одному — переустановить Windows.

Подумав о том, какое количество программ мне придется переустанавливать, а также о количестве потраченного на это дело времени, я решил пойти другим путем.

Решение проблемы

Для начала я включил Log-файл установщика Windows. Как включить лог Windows Installer вы можете почитать , или поискать в любом поисковике по ключевому слову «voicewarmup».
Лог-файлы появляются во временной папке пользователя, которая обычно находится по пути C:\Users\имя_профиля\AppData\Local\Temp. Открыв лог, я увидел следующую ошибку:
MSI (c) (B8:84) : Failed to connect to server. Error: 0x80040154
Поискав по коду ошибки в Интернете, и не нашедши никаких способов решения проблемы, я решил подумать логически.
Что означает ошибка 0x80040154? Поискав в поисковике, и воспользовавшись утилитой Error Lookup, я определил, что ошибка означает «Класс не зарегистрирован».
Обычно такая ошибка появляется, когда вы запрашиваете у системы создать COM-объект, который не был должным образом зарегистрирован в реестре. Но как определить какой именно объект не зарегистрирован?
Для начала я воспользовался старым добрым отладчиком WinDbg, который входит в пакет Debugging Tools For Windows. Мне понадобилась именно 64-разрядная версия данного отладчика.

Перед началом отладки необходимо загрузить отладочные символы для распознавания имен системных функций и переменных. Эти символы являются довольно полезной вещью не только для поиска ошибок, но также и для исследования работы Windows в целом.
Я предпочитаю указывать отладчику путь для поиска символов через переменную среды _NT_SYMBOL_PATH, которая должна быть задана как: C:\Symbols;srv*C:\Symbols*http://msdl.microsoft.com/download/symbols. В данном случае папка C:\Symbols — это хранилище загруженных символов на жестком диске, чтобы отладчик каждый раз не лез в интернет за ними.
Загрузил я в отладчик файл c:\windows\system32\msiexec.exe и задал для него параметры командной строки так, чтобы он открыл .msi файл. В моем случае параметром командной строки было: /i «C:\Users\MAV\Desktop\ActivePerl-5.12.4.1205-MSWin32-x64-294981.msi» однако можно задавать путь к любому другому .msi файлу.

Сам по себе отладчик, конечно не решит проблему, нужно ее локализовать. Поразмыслив, какие функции могут создавать COM-объекты, я остановился на CoCreateInstance, CoCreateInstanceEx и CoGetClassObject
Для установки точек прерывания на эти функции вводим в командной строке отладчика:
bp ole32!CoCreateInstance
bp ole32!CoCreateInstanceEx
bp ole32!CoGetClassObject
Если точки останова у вас не ставятся, значит вы неправильно настроили символы.
После запуска приложения (F5), срабатывает точка останова на ole32!CoCreateInstance. Если точка останова не срабатывает, а выпадает окно с параметрами Wndows Installer, то вы неправильно указали параметры командной строки для запуска.

Давайте теперь посмотрим, из какого же места кода вызывается создание нашего объекта, для этого мы можем нажать Debug->Step Out (Shift+F11). Мне пришлось нажать указанную комбинацию дважды, для того чтобы выйти в исходную вызывающую функцию.

Исходная вызывающая функция называется msi!CreateMsiServerProxy и, очевидно, находится в модуле msi.dll.
Обратим внимание также на регистр rax, который равен нашему коду ошибки 80040154. Для того чтобы узнать содержимое регистра rax, достаточно открыть окно Registers, или ввести в командной строке r rax.
Запомнив имя функции, а также примерный вид искомого кода, я открыл дизассемблер IDA Pro, и загрузил в него файл msi.dll. Следует отметить пару особенностей данного отладчика: во первых, IDA любит блокировать доступ к исследуемому файлу, во вторых, она создает в папке с исследуемым файлом несколько своих файлов баз данных, так что я рекомендую копировать исследуемые файлы в отдельную папку. В третьих, IDA не всегда подгружает файлы с символами, поэтому рекомендую в указанную отдельную папку также скопировать файл msi.pdb из вышеуказанной папки C:\Symbols.
После нахождения функции CreateMsiServerProxy, находим знакомые строки кода в ней:

Не иначе как функция пытается создать объект по CLSID IID_IMsiServer. Здесь я не буду вдаваться в подробности COM и искать различия между CLSID и IID, важно что я получил зацепку — имя интерфейса ID_IMsiServer и CLSID {000C101C-0000-0000-C000-000000000046}.
Запустив поиск в реестре на своей машине по указанным ключевым словам, а также на машине, с установленной Windows 7 x64, где Windows Installer работал, я нашел отличие: на моей машине отсутствовала ветка реестра HKEY_CLASSES_ROOT\AppID\{000C101C-0000-0000-C000-000000000046}. Я экспортировал данную ветку реестра в отдельный .reg файл, а затем импортировал его на своей машине:
Windows Registry Editor Version 5.00

«ServiceParameters»=»»
«LocalService»=»MSIServer»
После импорта ключа реестра я вновь попробовал запустить .msi файл, и, «О чудо!», он запустился, после чего я успешно установил ActivePerl.

У вас может быть аналогичная проблема, но при этом отсутствовать другой ключ реестра. Импортировать при этом необходимо те ключи, которых у вас нет.

Выводы

  1. В итоге я сэкономил себе массу времени — на поиск проблемы и ее устранение ушло не более двадцати минут, зато на переустановку всех программ на моем компьютере ушло бы минимум два дня.
  2. Не надо спешить переустанавливать Windows по любому чиху. Иногда проблему можно решить довольно просто и быстро.

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