Не удалось подключиться к серверу ошибка 0x80040154

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

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

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

image

Как вскоре оказалось, подобная ошибка выпадала при запуске на моем компьютере любого .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) [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*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 файлу.

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.

Обратим внимание также на регистр rax, который равен нашему коду ошибки 80040154. Для того чтобы узнать содержимое регистра rax, достаточно открыть окно Registers, или ввести в командной строке r rax.

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

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

Не иначе как функция пытается создать объект по 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

[HKEY_CLASSES_ROOT\AppID\{000C101C-0000-0000-C000-000000000046}]
"ServiceParameters"=""
"LocalService"="MSIServer"

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

image

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

Выводы

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

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

Данная ошибка чаще всего возникает при обновлении платформы и/или при переводе режима работы с базой из файлового в клиент-серверный вариант, после чего COM-компонент comcntr.dll должен быть установлен (зарегистрирован) автоматически.
Но если вы получаете ошибку: Ошибка при вызове конструктора (COMObject): -2147221164(0x80040154): Класс не зарегистрирован, это означает, что при установке платформы компонента comcntr.dll не смогла зарегистрироваться автоматически.

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

C:\Windows\SysWOW64\regsvr32 «c:\Program Files(х86)\1cv8\8.3…\bin\comcntr.dll»

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

Если после данной манипуляции ошибка не ушла, то пробуем сначала удалить эту компоненту с сервера, а затем установить её заново:

Удаление:
C:\Windows\SysWOW64\regsvr32 /u «c:\Program Files\1cv8\8.3…\bin\comcntr.dll»

Установка:
C:\Windows\SysWOW64\regsvr32 «c:\Program Files\1cv8\8.3…\bin\comcntr.dll»

When you are having a bad day at work, nothing works for you. So, even after trying to download a new app from the store multiple times, you end up having gained nothing. Also, you might see Error 0x80040154 on your Windows computer. Let’s see how to fix it.

How to fix Error 0x80040154 on Windows

Error 0x80040154 can be seen when running Windows Update, downloading apps from the Microsoft Store, running Outlook, in Mail & Calendar app, in Microsoft Edge browser, etc. Here’s how to resolve the issue in Windows Update or Microsoft Store.

How to fix Microsoft Store error 0x80040154

If you’re having trouble launching Microsoft Store or downloading an app and see Microsoft error 0x80040154, here are a few things you can try to fix the problem.

  1. Check or Change your Internet connection and see
  2. Clear contents of DataStore folder
  3. Reset the Microsoft Store Cache
  4. Run DISM Tool
  5. Check if licensing on Windows Store is synced or not.

Sometimes, you may succeed in starting the download, but it will abort abruptly with error message Code: 0x80040154.

1] Check or Change your Internet connection and see

If you’re having trouble launching Microsoft Store, and see the 0x80040154 error, Check for connection problems and make sure that you’re signed in with a Microsoft account.

Or else, try this simple workaround and see if it works. For some strange reason, this has been known to help. So, if you are using a cabled broadband connection, switch to a WiFi connection – or vice versa and check if it solves the issue.

2] Clear contents of DataStore folder

DataStore folder

The DataStore folder in Windows 10 stores temporary files and LOG files associated with Windows update and Update history.

Open Windows Services Manager and stop the Windows Update service. After that, follow these steps:

  • Open File Explorer using Win+E hotkey
  • Paste %windir%\SoftwareDistribution\DataStore in the address bar
  • Press Enter to open the DataStore folder
  • Select all files and folders present in the DataStore folder
  • Delete them.

Now restart the Windows Update service again using Windows Services Manager and then try to run Windows Update again.

3] Reset the Microsoft Store Cache

If downloading of Windows Store apps get stuck midway and throws up the 0x80040154 error, reset the cache for Microsoft Store. You can do this either via Windows Settings or use the built-in command-line tool wsreset.exe.

4] Run DISM Tool

This DISM tool scans system files, checks for any system inconsistencies or corruption and fixes them readily by replacing the damaged files.

5] Check if licensing on Windows Store is synced or not

Sometimes, the Microsoft Store error code could occur due to problems with the licensing. This happens when the licensing is not synced properly. In such cases, you may not be able to install apps on your Windows computer or could see the Microsoft Store Error 0x80040154. To manually sync it, go to Microsoft Store.

Open Settings > App Updates > Sync Licenses.

Then, restart the system and try downloading apps again.

How to fix Windows Update error 0x80040154

0x80040154 -2147221164 REGDB_E_CLASSNOTREG

To fix Windows Update error 0x80040154, follow these steps:

  1. Run Windows Troubleshooter
  2. Reset Windows Update Components to default
  3. Check Windows Update Services status
  4. Clear the BITS queue
  5. Download its stand-alone installer.

Let us look at them in a bit more detail.

1] Run Windows Troubleshooter

Use the Windows Update Troubleshooter from Microsoft. It resets Windows Updates settings to defaults. You may also run the Online Windows Troubleshooter from Microsoft.

2] Reset Windows Update Components to default

Use the Reset Windows Update Agent Tool and see if it helps you. This PowerShell script will help you Reset Windows Update Client. See this post if you want to manually reset each Windows Update components to default.

3] Check Windows Update Services status

Open Windows Services Manager and check the Windows Update related Services like Windows Update, Windows Update Medic, Update Orchestrator Services, etc are not disabled.

The default configuration on a standalone Windows 10 PC is as follows:

  • Windows Update Service – Manual (Triggered)
  • Windows Update Medic Services – Manual
  • Cryptographic Services – Automatic
  • Background Intelligent Transfer Service – Manual
  • DCOM Server Process Launcher – Automatic
  • RPC Endpoint Mapper –  Automatic
  • Windows Installer – Manual.

This will ensure that the required Services are available.

Apart from the direct service, you should find the dependencies of Windows Update service and ensure if they are running or not.

To get started, search for “services” in the Taskbar search box and click on the search result. After opening the Services window, find out Windows Update, DCOM Server Process Launcher, and RPC Endpoint Mapper. Check if they are running or not.

If not, you need to start those services one after one.

4] Clear the BITS queue

Clear the BITS queue of any current jobs. To do this, type the following in an elevated CMD and hit Enter:

bitsadmin.exe /reset /allusers

5] Download its stand-alone installer

Search on the Microsoft Update Catalog website for the Windows Update patch using the Update KB number, and download its stand-alone installer. Now apply the patch manually. Search for just the number; don’t include KB.

Hope something helps.

В 1С бухгалтерия или другая любая конфигурация при автоматическом обновлении конфигураций бывает выскакивает ошибка: Не удалось подключиться с компьютера имя сервера к кластеру серверов по причине: -2147221164(0x80040154):Class not registred. Данная ошибка обычно вылетает в 64 битной версии windows.

Решение данной проблемы:

в поиске пишем cmd, далее левой кнопкой — запустить от имени Администратора, иначе не сработает!

далее пишем:

C:\Windows\SysWOW64\regsvr32 "C:\Program Files\1cv8\8.3.22.2143\bin\comcntr.dll"

Соответственно вам надо подставить там где 8.3.22.2143 свою версию,

Если все удачно зарегестрировалось то должно выйти такое окно:

Если ошибка, то надо удалить с регистрации данный dll, делается это командой /u

C:\Windows\SysWOW64\regsvr32 /u "C:\Program Files\1cv8\8.3.22.2143\bin\comcntr.dll"

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

Автор Олег (Системный администратор), Last modified by Олег (Системный администратор) на 23 октября 2019 10:41 до полудня

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

Так выглядит месадж об ошибке 2147221164

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

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

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

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

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

    Разбираем устранение проблемы в 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

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

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

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

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

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

  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.

(1 голос(а))

Эта статья полезна

Эта статья бесполезна


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

Интересное по теме:

  • Не удалось подключиться к другой программе неизвестная ошибка
  • Не удалось подключиться к айфону ошибка 0xe800000a
  • Не удалось отправить сообщение через yota ошибка 28
  • Не удалось отформатировать выбранный раздел ошибка 0x80004005
  • Не удалось отправить сообщение ошибка 500 теле2

  • Добавить комментарий

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