Но если вы получаете ошибку: Ошибка при вызове конструктора (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»
Windows Server 2012 R2 Datacenter Windows Server 2012 R2 Standard Windows Server 2012 R2 Essentials Windows Server 2012 R2 Foundation Windows 8.1 Enterprise Windows 8.1 Pro Windows 8.1 Windows RT 8.1 Еще…Меньше
В данной статье описывается проблема в котором приложения COM + завершится ошибкой «80040154» в Windows Server 2012 R2, Windows 8.1 или Windows RT 8.1. Доступно исправление для устранения этой проблемы. Перед установкой данного исправления см.
Симптомы
Эта проблема возникает при развертывании приложения COM + на разделы COM + службы каталогов Active Directory.
Сведения об исправлении
Существует исправление от корпорации Майкрософт. Однако данное исправление предназначено для устранения проблемы, описанной в этой статье. Применяйте данное исправление только в тех системах, которые имеют данную проблему.
Если исправление доступно для загрузки, имеется раздел «Исправление загрузки доступно» в верхней части этой статьи базы знаний. Если этого раздела нет, отправьте запрос на получение исправления в службу технической поддержки и поддержки.
Примечание. Если наблюдаются другие проблемы или необходимо устранить неполадки, вам может понадобиться создать отдельный запрос на обслуживание. Затраты на обычные службы поддержки будет применяться к Дополнительные вопросы и проблемы, с которыми не данным исправлением, оплачиваются. Полный список телефонов поддержки и обслуживания клиентов корпорации Майкрософт или создать отдельный запрос на обслуживание посетите следующий веб-узел корпорации Майкрософт:
http://support.microsoft.com/contactus/?ws=supportПримечание. В форме «Пакет исправлений доступен для скачивания» отображаются языки, для которых доступно исправление. Если нужный язык не отображается, это потому, что исправление не поддерживается для этого языка.
Предварительные условия
Сведения о реестре
Для использования исправления из этого пакета, нет необходимости вносить изменения в реестр.
Необходимость перезагрузки
Может потребоваться перезагрузить компьютер после установки данного исправления.
Сведения о замене исправлений
Это исправление не заменяет ранее выпущенные исправления.
Статус
Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе «Относится к».
Ссылки
Дополнительные сведения о терминологии , которую корпорация Майкрософт использует для описания обновлений программного обеспечения.
Сведения о файлах
Глобальная версия этого исправления устанавливает файлы с атрибутами, указанными в приведенных ниже таблицах. Дата и время для файлов указаны в формате UTC. Дата и время для файлов на локальном компьютере отображаются в местном времени с вашим текущим смещением летнего времени (DST). Кроме того, при выполнении определенных операций с файлами, даты и время могут изменяться.
Примечания
-
Файлы, относящиеся к определенному продукту, этапу разработки (RTM, SPn) и обслуживания (LDR, GDR) можно определить по номерам версий, как показано в следующей таблице.
Версия
Продукт
Контрольная точка
Направление поддержки
6.3.960 0.18 xxx
Windows RT 8.1, Windows 8.1 и Windows Server 2012 R2
RTM
GDR
-
Выпуски обновлений GDR содержат только те исправления, которые выпускаются повсеместно и предназначены для устранения распространенных критических проблем. В обновления LDR входят также специализированные исправления.
-
Файлы MANIFEST (.manifest) и MUM (.mum), устанавливаемые для каждой среды, перечислены в разделе «Сведения о дополнительных файлах». MUM, MANIFEST и связанные файлы каталога безопасности (.cat) очень важны для поддержания состояния обновленных компонентов. Файлы каталога безопасности, для которых не перечислены атрибуты, подписаны цифровой подписью корпорации Майкрософт.
Windows RT 8.1
Имя файла |
Версия файла |
Размер файла |
Дата |
Время |
Платформа |
---|---|---|---|---|---|
Rpcrt4.dll |
6.3.9600.18186 |
708,144 |
31-Dec-2015 |
17:38 |
Неприменимо |
x86 Windows 8.1
Имя файла |
Версия файла |
Размер файла |
Дата |
Время |
Платформа |
---|---|---|---|---|---|
Rpcrt4.dll |
6.3.9600.18186 |
851,712 |
31-Dec-2015 |
18:34 |
x86 |
64-разрядная (x64) Windows 8.1 и Windows Server 2012 R2
Имя файла |
Версия файла |
Размер файла |
Дата |
Время |
Платформа |
---|---|---|---|---|---|
Rpcrt4.dll |
6.3.9600.18186 |
1,308,896 |
31-Dec-2015 |
19:25 |
x64 |
Rpcrt4.dll |
6.3.9600.18186 |
747,520 |
31-Dec-2015 |
16:47 |
x86 |
Windows RT 8.1
Свойства файла |
Значение |
---|---|
Имя файла |
Arm_defad3276b80c0e3430f61726ead3a9c_31bf3856ad364e35_6.3.9600.18186_none_90b58bd3ec5adc17.manifest |
Версия файла |
Неприменимо |
Размер файла |
697 |
Дата (UTC) |
31-Dec-2015 |
Время (UTC) |
23:30 |
Платформа |
Неприменимо |
Имя файла |
Arm_microsoft-windows-rpc-local_31bf3856ad364e35_6.3.9600.18186_none_489ea52e60a96f05.manifest |
Версия файла |
Неприменимо |
Размер файла |
61,799 |
Дата (UTC) |
31-Dec-2015 |
Время (UTC) |
17:39 |
Платформа |
Неприменимо |
Имя файла |
Update.mum |
Версия файла |
Неприменимо |
Размер файла |
1,609 |
Дата (UTC) |
31-Dec-2015 |
Время (UTC) |
23:30 |
Платформа |
Неприменимо |
x86 Windows 8.1
Свойства файла |
Значение |
---|---|
Имя файла |
Update.mum |
Версия файла |
Неприменимо |
Размер файла |
1,609 |
Дата (UTC) |
31-Dec-2015 |
Время (UTC) |
23:30 |
Платформа |
Неприменимо |
Имя файла |
X86_f6bf67eea9f73a869e88b62ea83a89e1_31bf3856ad364e35_6.3.9600.18186_none_5eaf11e7dbd39286.manifest |
Версия файла |
Неприменимо |
Размер файла |
697 |
Дата (UTC) |
31-Dec-2015 |
Время (UTC) |
23:30 |
Платформа |
Неприменимо |
Имя файла |
X86_microsoft-windows-rpc-local_31bf3856ad364e35_6.3.9600.18186_none_489c32d660ac503f.manifest |
Версия файла |
Неприменимо |
Размер файла |
61,799 |
Дата (UTC) |
31-Dec-2015 |
Время (UTC) |
18:36 |
Платформа |
Неприменимо |
64-разрядная (x64) Windows 8.1 и Windows Server 2012 R2
Свойства файла |
Значение |
---|---|
Имя файла |
Amd64_2b6c0f4f506647ec7c765d05880d401a_31bf3856ad364e35_6.3.9600.18186_none_1d585e7fd4f5b003.manifest |
Версия файла |
Неприменимо |
Размер файла |
701 |
Дата (UTC) |
31-Dec-2015 |
Время (UTC) |
23:30 |
Платформа |
Неприменимо |
Имя файла |
Amd64_bf8f76aeac44d14c05ab4a259325a565_31bf3856ad364e35_6.3.9600.18186_none_e59d9abf97fc9fac.manifest |
Версия файла |
Неприменимо |
Размер файла |
701 |
Дата (UTC) |
31-Dec-2015 |
Время (UTC) |
23:30 |
Платформа |
Неприменимо |
Имя файла |
Amd64_microsoft-windows-rpc-local_31bf3856ad364e35_6.3.9600.18186_none_a4bace5a1909c175.manifest |
Версия файла |
Неприменимо |
Размер файла |
61,803 |
Дата (UTC) |
31-Dec-2015 |
Время (UTC) |
19:27 |
Платформа |
Неприменимо |
Имя файла |
Update.mum |
Версия файла |
Неприменимо |
Размер файла |
1,619 |
Дата (UTC) |
31-Dec-2015 |
Время (UTC) |
23:30 |
Платформа |
Неприменимо |
Имя файла |
Wow64_microsoft-windows-rpc-local_31bf3856ad364e35_6.3.9600.18186_none_af0f78ac4d6a8370.manifest |
Версия файла |
Неприменимо |
Размер файла |
61,809 |
Дата (UTC) |
31-Dec-2015 |
Время (UTC) |
18:36 |
Платформа |
Неприменимо |
Нужна дополнительная помощь?
Нужны дополнительные параметры?
Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.
В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.
I am learning basics in COM, so I try to write simple COM component in VS2010 C++ Windows 7.
I created dll for component, registered it using following REG-file:
REGEDIT
HKEY_CLASSES_ROOT\Math.Component.1 = Chapter 6 Math Component
HKEY_CLASSES_ROOT\Math.Component.1\CurVer = Math.Component.1
HKEY_CLASSES_ROOT\Math.Component.1\CLSID = {A888F560-58E4-11d0-A68A-0000837E3100}
HKEY_CLASSES_ROOT\CLSID\{A888F560-58E4-11d0-A68A-0000837E3100} = Chapter 6 Math Component
HKEY_CLASSES_ROOT\CLSID\{A888F560-58E4-11d0-A68A-0000837E3100}\ProgID = Math.Component.1
HKEY_CLASSES_ROOT\CLSID\{A888F560-58E4-11d0-A68A-0000837E3100}\VersionIndependentProgID = Math.Component
HKEY_CLASSES_ROOT\CLSID\{A888F560-58E4-11d0-A68A-0000837E3100}\InprocServer32 = D:\Proga\COM\Debug\server.dll
HKEY_CLASSES_ROOT\CLSID\{A888F560-58E4-11d0-A68A-0000837E3100}\NotInsertable
In dll I exported (stubs for last two)
DllGetClassObject
DllCanUnloadNow
DllRegisterServer
DllUnregisterServer
In my COM client CLSIDFromProgID( szWideProgID, &clsid );
works as expected, returning {A888F560-58E4-11d0-A68A-0000837E3100}
.
But when I try to get access to IClassFactory REGDB_E_CLASSNOTREG CoGetClassObject(clsid, CLSCTX_INPROC, NULL, IID_IClassFactory, (void **)&pCF)
I get (0x80040154) error.
Both server and client compiled for Win32 target platform (although I tried x64 too). Source code I got from tutorial, so I don’t understand what is wrong.
В этой статье я расскажу об исправлении одной очень распространенной ошибки Windows Installer. Обыскавши Интернет как русскоязычный, так и англоязычный, включая форумы и ньюсгруппы Microsoft, я понял что ошибка довольно распространенная, однако исправить ее, на самом деле никому не удавалось.
Суть проблемы
Как то одним жарким летним вечером я решил установить на свой компьютер ActeiveState ActivePerl. Скачал инсталлятор, который был в .msi файле и запустил его. Каково же было мое удивление, когда вместо привычного инсталлятора я увидел вот это:
Как вскоре оказалось, подобная ошибка выпадала при запуске на моем компьютере любого .msi файла.
Недолго думая, я полез в интернет, ввел в поиск появившееся сообщение, и, «О ужас!» — я увидел сотни постов людей с этой проблемой! В русскоязычном и англоязычном сегменте Интернета у множества людей была аналогичная проблема, и никто ее не смог решить по существу.
Наиболее распространенными советы по решению проблемы были
- Переустановить Windows Installer — на моей Windows 7 x64 и так стоит Windows Installer 5.0, который нельзя отдельно скачать и переустановить
- Перерегистрировать msiexec, что также мне не помогло.
- В конце все советы сводились к одному — переустановить 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 файлу.
Сам по себе отладчик, конечно не решит проблему, нужно ее локализовать. Поразмыслив, какие функции могут создавать 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
[HKEY_CLASSES_ROOT\AppID\{000C101C-0000-0000-C000-000000000046}]
"ServiceParameters"=""
"LocalService"="MSIServer"
После импорта ключа реестра я вновь попробовал запустить .msi файл, и, «О чудо!», он запустился, после чего я успешно установил ActivePerl.
У вас может быть аналогичная проблема, но при этом отсутствовать другой ключ реестра. Импортировать при этом необходимо те ключи, которых у вас нет.
Выводы
- В итоге я сэкономил себе массу времени — на поиск проблемы и ее устранение ушло не более двадцати минут, зато на переустановку всех программ на моем компьютере ушло бы минимум два дня.
- Не надо спешить переустанавливать Windows по любому чиху. Иногда проблему можно решить довольно просто и быстро.
Спасибо за внимание, я очень надеюсь что статья вам понравилась, жду ваших отзывов, а также с удовольствием отвечу на ваши вопросы.
Ошибка 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 0x80040154 в 1C обычно связана с соединением баз данных по COM-объекту, и может иметь несколько причин:
Разберёмся со способами решения возникшей проблемы. Их два. Способ №1. Регистрируем необходимые библиотекиЕсли на ПК 32-битная ОС, то будет необходимо запустить командную строку с админ. правами, и там набрать: C:\Windows\System32\regsvr32 «C:\Program Files (x86)\1cv8\XXXXX\bin\comcntr.dll» Вместо XXXXX будет нужно ввести номер вашей версии 1С, к примеру, это может быть 8.3.10.2252 или иная (пройдите по указанному пути, и просмотрите номер установленной у вас версии). После этого регистрация упомянутого dll будет завершена, и «Ошибка 2147221164 0x80040154 класс не зарегистрирован» должна исчезнуть. Если на ПК 64-битная ОС, то данная строка должна выглядеть так: C:\Windows\SysWOW64\regsvr32 «C:\Program Files (x86)\1cv8\ХХХХХ\bin\comcntr.dll» Где ХХХХХ – номер вашей версии 1С Выполните следующее:
ЗаключениеИсправление проблем с незарегистрированными классами в 1С обычно решается с помощью двух способов, обозначенных мной выше. Наибольшую эффективность показал второй из перечисленных способов, потому рекомендую воспользоваться алгоритмом его реализации для исправления ошибки 2147221164 0x80040154 на вашем PC. |
Эта статья полезна Эта статья бесполезна |