80040154 класс не зарегистрирован windows 7

В этой статье я расскажу об исправлении одной очень распространенной ошибки 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) [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.

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

Выводы

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

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

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

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

1. -2147221164(0x80040154): Класс не зарегистрирован.

Данное сообщение говорит о том, что не зарегистрирована COM-компонента. 

Для ее регистрации необходимо запустить командную строку с правами администратора и выполнить regsvr32 [ПутьДоКомпоненты].

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

Однако, даже регистрация компоненты через командую строку “привычным” способом помогает не всегда. В таком случае, необходимо вручную создать COM-приложение. 

Новому COM-приложению нужно ввести имя “V83COMConnector” и указать, что приложение является серверным.

создание нового приложения

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

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

Мастер установки приложений

После успешного создания V83COMConnector появится новое приложение.

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

установка новый компонент

Выбрать файл comcntr.dll в каталоге установленной платформы.

Выбрать файл comcntr.dll в каталоге установленной платформы

В следующем окне можно убедиться, что регистрация через командную строку была ложно-успешной, так как признак “Установлено” компоненты равен “Нет”.

регистрация через командную строку была ложно-успешной

После успешной установки, необходимо перейти к ветке V83COMConnector. В контекстном меню выбрать «Свойства». На вкладке “Безопасность” необходимо снять галку “Принудительная проверка доступа для приложений”. Установить галку «Применить политику программных ограничений» и выбрать уровень ограничений “Неограниченный”. Сохранить параметры. 

На этом ручная установка приложения завершена.

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

Причинами этой ошибки могут быть: 

  • при ручной регистрации COM-компоненты либо была указана системная учетная запись, либо пользователь не имеющей прав администратора; 
  • служба сервера 1С запущена с локальной учетной записью. 

Для изменения пользователя, от имени которого работает служба сервера 1С, необходимо открыть свойства службы, перейти на вкладку “Вход в систему” и указать пользователя с правами администратора.

Вход в систему

После изменения учетной записи потребуется перезапуск службы.

Нужна помощь с 1С?

Мы можем взять на себя ваш бухгалтерский учет. Вам не нужно будет думать о расчете налогов и сдаче отчетности. Мы будем вести финансовую ответственность за ошибки. Мы — команда профессионалов, а не один бухгалтер, мы не заболеем, не пропадем и не уйдем внезапно в отпуск. Сосредоточьтесь на управлении. А учет и отчетность мы возьмем на себя. Чтобы получить бесплатную консультацию по автоматизации своего бизнеса Вы можете пообщаться с нашими специалистами в офисе компании или позвонив по телефону: 8-800-707-01-02.

Сопровождение 1С

Наш специалист

Екатерина Столярова

Специалист отдела сопровождения

Специалист-консультант по зарплатным решениям и 1С:Бухгалтерии


Чем мы можем быть вам полезны?

Ошибка 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С на сервере и локальном ПК (к примеру, на сервере используется версия 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

Если на ПК 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.

(4 голос(а))

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

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


Проблема работы с COM объектом:-2147221164(0x80040154): Класс не зарегистрирован

0

DGorgoN

10.12.15

11:15

Для подключения 1с к весам поставщик дал свой ком компонент, зарегестрировал его как указанно в инструкции, ком объект не зарегестрировался толком, прописал вручную, но всё равно работать не хочет: http://firepic.org/?v=2.2015-12-10_jmqft48ui1ze.jpg

Код в 1с:

    МойОбъект = Новый COMОбъект(«COMPtrLib.COMReceiver»);

    Вес = МойОбъект.GetWeight(«COM1»);

    Сообщить(Вес);

Выдает сразу:

{Форма.Форма.Форма(5)}: Ошибка при вызове конструктора (COMОбъект)

    МойОбъект = Новый COMОбъект(«COMPtrLib.COMReceiver»);

по причине:

-2147221164(0x80040154): Класс не зарегистрирован

1

vde69

10.12.15

11:17

ну ты или давай конкретику (какая винда, какой драйвер) или иди на сайт техподдержки оборудованияч

2

su_mai

10.12.15

11:17

3

DGorgoN

10.12.15

11:17

(1) Думаю не привязанно это к винде. Винда серверная 2012*64

4

DGorgoN

10.12.15

11:21

regasm и gacutil делал. Прошло все без ошибок:

C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin> .\gacutil.exe /i «C:\Lib\COMPtrLib.dll»

PS C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin> cd «C:\Windows\WinSxS\amd64_regasm_b03f5f7f11d50a3a6.3.9600.16384

none_ea742672c514173d»

PS C:\Windows\WinSxS\amd64_regasm_b03f5f7f11d50a3a_6.3.9600.16384_none_ea742672c514173d> .\regasm /codebase /tlb «C:\Lib

\COMPtrLib.dll»

Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.7905

Copyright (C) Microsoft Corporation 1998-2004.  All rights reserved.

Types registered successfully

Assembly exported to ‘C:\Lib\COMPtrLib.tlb’, and the type library was registered successfully

PS C:\Windows\WinSxS\amd64_regasm_b03f5f7f11d50a3a_6.3.9600.16384_none_ea742672c514173d>

5

Барматолог

10.12.15

11:23

(3) регал то как?

6

DGorgoN

10.12.15

11:26

(5) Сначала командами

gacutil.exe /i «C:\Lib\COMPtrLib.dll»

regasm /codebase /tlb «C:\Lib\COMPtrLib.dll»

7

DGorgoN

10.12.15

11:26

Потом уже ручками в ветках по скрину выше

8

DGorgoN

10.12.15

11:26

9

vde69

10.12.15

11:27

(3) это на 100% не относится к 1с, скорее всего компонента 32х а винда 64х

10

vde69

10.12.15

11:28

у 1с есть доступ к каталогу «C:\Lib\COMPtrLib.dll» ???

по дефолту на сервере его не будет…

11

DGorgoN

10.12.15

11:31

(10) 8.2 как бы

12

DGorgoN

10.12.15

11:31

формы обычные

13

Барматолог

10.12.15

11:31

(9) +0.5

(6) регай в Службе компонентов dcomcnfg

14

DGorgoN

10.12.15

11:32

(9) ммм, а разница? и как побороть?

15

DGorgoN

10.12.15

11:33

16

Барматолог

10.12.15

11:33

сорри, не видел скрина (8)

17

DGorgoN

10.12.15

11:33

Может имя как то неправильно или шаг какой то неправильно сделал

18

Барматолог

10.12.15

11:33

(17) пользователь, вобщем, безопасность глянь еще

19

vde69

10.12.15

11:36

(14)32х компонента не будет работать в 64х ОС, по крайне мере я не знаю способа кроме виртуальной 32х машины и подключение через DCOM+

20

DGorgoN

10.12.15

11:36

(18) Прошу проконтролировать, а имя я правильно пишу? МойОбъект = Новый COMОбъект(«COMPtrLib.COMReceiver»);

21

Барматолог

10.12.15

11:37

(20) правильно

22

Барматолог

10.12.15

11:38

(19) пруфы?

23

DGorgoN

10.12.15

11:39

(19) Она вроде с помощью нета написана, серьезно работать не будет?

24

vde69

10.12.15

11:41

(22) пруфы на что? на несовместимость моделей адресации 32х и 64х ??? так это и ежу понятно, что короткий указатель не будет работать в адресном пространстве заточенном под длинные указатели.

25

Барматолог

10.12.15

11:42

(24) но пишет же на то, что класс не зарегистрирован.

На несовместимость должен же писать другое.

26

Барматолог

10.12.15

11:45

+(24) а как тогда работает COM для 1С 32 на 64 винде?

27

vde69

10.12.15

11:45

(25)>>>> зарегестрировал его как указанно в инструкции, ком объект не зарегестрировался толком

так может ты приведешь описание ошибки при штатной регистрации ???

28

vde69

10.12.15

11:46

(26) на 64х винде все библиотеки кома пересобраны на 64х

29

DGorgoN

10.12.15

11:48

(27) Никаких ошибок не было. Написал что все ок, а в dcomcnfg не появился

30

ЧеловекДуши

10.12.15

11:48

(26) Через одно место «ЖПУ». Большинство попросту не работает. Так что чудес не бывает :)

31

DGorgoN

10.12.15

11:48

PS C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin> .\gacutil.exe /i «C:\Lib\COMPtrLib.dll»

Microsoft (R) .NET Global Assembly Cache Utility.  Version 3.5.30729.1

Copyright (c) Microsoft Corporation.  All rights reserved.

Assembly successfully added to the cache

32

DGorgoN

10.12.15

11:49

PS C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin> cd «C:\Windows\WinSxS\amd64_regasm_b03f5f7f11d50a3a_6.3.9600.16384

none_ea742672c514173d»

PS C:\Windows\WinSxS\amd64_regasm_b03f5f7f11d50a3a_6.3.9600.16384_none_ea742672c514173d> .\regasm /codebase /tlb «C:\Li

\COMPtrLib.dll»

Microsoft (R) .NET Framework Assembly Registration Utility 2.0.50727.7905

Copyright (C) Microsoft Corporation 1998-2004.  All rights reserved.

Types registered successfully

Assembly exported to ‘C:\Lib\COMPtrLib.tlb’, and the type library was registered successfully

33

ЧеловекДуши

10.12.15

11:49

+(26) Не путай Клиентскую часть с Сервером 1С.

Клиент 1С, запускается под х32, т.к. у 1С нет приложения на х64.

А вот сервер есть на х64 :)

34

vde69

10.12.15

11:50

ну не знаю…

35

Барматолог

10.12.15

11:50

(28) не совсем понял

Установили 1С 32 битную на 64 битную винду.

1) Регаем comcntr.dll

2) Через службы компонентов (dcomcnfg) создаем компонеент

36

DGorgoN

10.12.15

11:52

(35) Ну я фактически через dcomcnfg и зарегал

37

Барматолог

10.12.15

11:53

(36) с каким пользователем?

38

DGorgoN

10.12.15

11:55

опа, теперь помутил, другое писать начал:

{Форма.Форма.Форма(5)}: Ошибка при вызове конструктора (COMОбъект)

    МойОбъект = Новый COMОбъект(«COMPtrLib.COMReceiver»);

по причине:

-2147221005(0x800401F3): Недопустимая строка с указанием класса

39

ЧеловекДуши

10.12.15

11:55

(35) Регаем на сервер 1С. На клиентской стороне твой ком-ок будет работать и без танцев бубном :)

40

ЧеловекДуши

10.12.15

11:56

(38) Ты надеюсь это шаманство делаешь на Виртуальке, типо Виртуале Боксе, тестовой? :)

41

DGorgoN

10.12.15

11:57

(40) Неа, только хардкор )

42

Барматолог

10.12.15

11:58

(39) я спрашивал совершенно иное.

43

DGorgoN

10.12.15

11:59

Опа, заработало

44

DGorgoN

10.12.15

12:00

Какими то шаманскими действиями, сам не понял как. Удалил, заново пересобрал, заработало. Удивительно!

45

Барматолог

10.12.15

12:00

vde69 пишет

>> (14) 32х компонента не будет работать в 64х ОС, по крайне мере я не знаю способа кроме виртуальной 32х машины и подключение через DCOM+

Я в (35), как тупой адинэсник, привожу пример работы 32 битной компоненты под 64 битным сервером

46

DGorgoN

10.12.15

12:02

(45) Всё, как то само заработало. Причем в службе компонентов этот элемент не отобразился. Но работает. Как? не знаю. Но работает. Удивительно. Накачу сегодня за здоровье БиллаГейтса и СтиваБалмера

47

Барматолог

10.12.15

12:07

(46) т.е. ты просто зарегал через resvr?

48

Барматолог

10.12.15

12:08

* regsvr

49

Барматолог

10.12.15

12:18

все, пошел накатывать?

50

DGorgoN

10.12.15

12:32

(47) Пытался до этого но не канало. Сейчас просто ещё 1 раз выполнил все команды и заработало

14.08.2014, 23:59. Показов 6673. Ответов 1

Пишу приложение, работающее с FT232RL (это USB-UART мост, создающий виртуальный СОМ порт), использую стандартные библиотеки от FTDI. Помимо стандартных процедур отправки-приема данных, необходимо использовать функции аппаратного ключа доступа с ипользованием данной микросхемы — для этой цели фирма изготовитель микросхем предлагает готовую бесплатную библиотеку Там же есть готовый пример проекта.

Для запуска примера необходимо с помощью «regsvr32.exe» зарегистрировать библиотеку SafeGuard-IT.dll в системе (что я и сделал)
Все работает как надо, если я компилирую в режиме x86. Если же я создаю x64 сборку этого проекта (работаю в Windows7 x64), то как только программа доходит до выполнения кода с задействованием этой библиотеки (просто создания объекта класса) — получаю ошибку:

Исключение типа «System.Runtime.InteropServices.COMExcep tion» возникло в dispetcher.exe, но не было обработано в коде пользователя
Дополнительные сведения: Не удалось получить фабрику класса COM для компонента с CLSID {51ED4BE2-5DE8-4350-AB14-80CD71B65058} из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

Пример кода, где возникает ошибка

C#
1
UseDongleClass verify = new UseDongleClass();

Мне нужно создать приложение, которое бы работало как в х32, так и в х64 Windows. Сложность еще в том, что нужно использовать System.Data.SQLite.dll, а она не существует универсальной под любую разрядность.

Знаний у меня пока мало, поэтому подскажите:
1) Означает ли это, что библиотека позволяет создавать только x86 приложения, или есть все таки способ использовать ее в 64 битной сборке?
2) Возможно я неправильно зарегистрировал DLL с помощью «regsvr32.exe»?
3) Если нет никаких вариантов создания x64 приложения с библиотекой FTDI, то можно ли как то просто создать x86 приложение с применением System.Data.SQLite.dll, но чтобы оно работало в Windows x64 ?

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Драйвер принтера не установлен не удается найти указанный файл windows 10
  • Установить модуль pip windows
  • Windows не удалось подключиться к принтеру указанное сетевое имя более недоступно
  • Нет звука в наушниках на компьютере windows 10 после обновления
  • Miracast windows 10 home как включить