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

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

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

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

image

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

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

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

Для начала я включил Log-файл установщика Windows. Как включить лог Windows Installer вы можете почитать здесь, или поискать в любом поисковике по ключевому слову "voicewarmup".

Лог-файлы появляются во временной папке пользователя, которая обычно находится по пути C:\Users\имя_профиля\AppData\Local\Temp. Открыв лог, я увидел следующую ошибку:

MSI (c) (B8:84) [22:08:06:894]: 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*https://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 файлу.

image

Сам по себе отладчик, конечно не решит проблему, нужно ее локализовать. Поразмыслив, какие функции могут создавать COM-объекты, я остановился на CoCreateInstance, CoCreateInstanceEx и CoGetClassObject

Для установки точек прерывания на эти функции вводим в командной строке отладчика:
bp ole32!CoCreateInstance
bp ole32!CoCreateInstanceEx
bp ole32!CoGetClassObject
Если точки останова у вас не ставятся, значит вы неправильно настроили символы.

После запуска приложения (F5), срабатывает точка останова на ole32!CoCreateInstance. Если точка останова не срабатывает, а выпадает окно с параметрами Wndows Installer, то вы неправильно указали параметры командной строки для запуска.

image

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

image

Исходная вызывающая функция называется msi!CreateMsiServerProxy и, очевидно, находится в модуле msi.dll.

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

После нахождения функции CreateMsiServerProxy, находим знакомые строки кода в ней:
image

Не иначе как функция пытается создать объект по CLSID IID_IMsiServer. Здесь я не буду вдаваться в подробности COM и искать различия между CLSID и IID, важно что я получил зацепку — имя интерфейса ID_IMsiServer и CLSID .

Windows Registry Editor Version 5.00

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

image

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

Выводы

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

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.

Исправляем ошибку «Класс не зарегистрирован» в Windows 10

Решение ошибки «Класс не зарегистрирован» в Windows 10

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

Виды ошибки «Класс не зарегистрирован»

Уведомление о том, что «Класс не зарегистрирован», может появиться по разным причинам. Оно имеет приблизительно следующий вид:

Ошибка «Класс не зарегистрирован» в Windows 10

Чаще всего упомянутая выше ошибка возникает в следующих ситуациях:

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

Трудности с запуском веб-обозревателя

Если при попытке запустить браузер вы видите сообщение с текстом «Класс не зарегистрирован», тогда необходимо выполнить следующие действия:

Запуск Параметров Windows 10 с помощью кнопки Пуск

Переход в раздел Приложения в Параметрах Windows 10

Раздел Приложения по умолчанию в Параметрах Windows 10

Переход в раздел Система в Параметрах Windows 10

Указание браузера по умолчанию в Windows 10

Переход в меню Задать значения по умолчанию в Windows 10

Кнопка Управление параметрами браузера в настройках Windows 10

Сопоставление типа файлов и протоколов для браузера в Windows 10

Если ошибка «Класс не зарегистрирован» наблюдалась при запуске Internet Explorer, тогда можно выполнить следующие манипуляции для устранения проблемы:

Запуск командной строки через программу Выполнить в Windows 10

Ввод команды для исправления Internet Explorer в Windows 10

Как вариант, можно всегда переустановить программу. Как это сделать, мы рассказывали на примере самых популярных браузеров:

Ошибка при открытии изображений

Если у вас при попытке открыть любое изображение появляется сообщение «Класс не зарегистрирован», тогда необходимо сделать следующее:

Замена приложения по умолчанию для просмотра изображений

Выбор нового приложения для просмотра изображений в Windows 10

Кнопка сброса приложений по умолчанию в Windows 10

Обратите внимание, что в этом случае все «Приложения по умолчанию» будут использовать стандартные настройки. Это значит, что вам необходимо будет повторно выбрать программы, которые отвечают за отображение веб-страницы, открытие почты, проигрывание музыки, фильмов и т.д.

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

Проблема с запуском стандартных приложений

Иногда при попытке открыть стандартное приложение Windows 10 может появиться ошибка «0x80040154» или «Класс не зарегистрирован». В таком случае следует деинсталлировать программу, после чего установить ее повторно. Делается это весьма просто:

Удаление программы из системы в Windows 10

К сожалению, не все встроенные программы удалить так просто. Некоторые из них защищены от подобных действий. В таком случае их необходимо деинсталлировать с помощью специальных команд. Более подробно данный процесс мы описывали в отдельной статье.

Не работает кнопка «Пуск» или «Панель задач»

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

Специальная команда

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

Запуск задачи через Диспетчер задач в Windows 10

Запуск Powershell через Диспетчер задач от имени администратора

Выполнение команды для исправления кнопки Пуск в Windows 10

Перерегистрация файлов

Если предыдущий метод вам не помог, тогда стоит попробовать следующее решение:

Запуск командной строки через программу Выполнить в Windows 10

Результат регистрации библиотек в Windows 10

Проверка системных файлов на наличии ошибок

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

Помимо описанных выше методов, есть также дополнительные варианты решения проблемы. Все они в той или иной степени способны помочь. Детальную информацию вы найдете в отдельной статье.

Универсальное решение

Независимо от того, при каких обстоятельствах появляется ошибка «Класс не зарегистрирован», есть одно универсальное решение по данному вопросу. Суть его заключается в регистрации недостающих компонентов системы. Вот что необходимо сделать:

Запуск команды dcomcnfg через программу Выполнить в Windows 10

Открытие папки Мой компьютер в корне консоли Windows 10

Переход в папку Настройка DCOM в Параметрах Windows 10

По окончании регистрации нужно закрыть окно настроек и перезагрузить систему. После этого снова попробуйте выполнить операцию, во время которой появлялась ошибка. Если предложения о регистрации компонентов вы не увидели, значит, она не требуется вашей системе. В таком случае стоит попробовать методы, которые описаны выше.

Заключение

На этом наша статья подошла к концу. Надеемся, вам удастся решить возникшую проблему. Помните, что причиной большинства ошибок могут быть вирусы, поэтому не забывайте периодически проводить проверку своего компьютера или ноутбука.

ЗакрытьМы рады, что смогли помочь Вам в решении проблемы.

Помимо этой статьи, на сайте еще 11804 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.

Отблагодарите автора, поделитесь статьей в социальных сетях.

ЗакрытьОпишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: