Ошибка не найден модуль печати не удалось получить фабрику класса com

  • #381

ну так с 9-ю листами — это первая форма (первый вариант), а с 10-ю — вторая (второй вариант)

какой-какой вариант?

Luba-fcsm


  • #382

Что не понимаю суть проблемы, если заполняешь телефон, то листов 10, если телефон не заполнен, то 9:dont_know:

Мы подавали и без телефона с 9-ю листами и все ок, а сейчас подаем с телефоном и 10-ю листами и тоже все ок

  • #383

Какие Люди :eek: А я думал Якин в Гагры увёз :D

Luba-fcsm


  • #384

Какие Люди :eek: А я думал Якин в Гагры увёз :D

нам же запретили флудить:), без тебя не поеду:)

  • #385

нам же запретили флудить:), без тебя не поеду:)

Я им запрещу! Сами тоды ППДГР писать будут ) ;)

Luba-fcsm


  • #386

Я им запрещу! Сами тоды ППДГР писать будут ) ;)

:kiss2::happy_love: ох какой мужчина)))настоящий защитник:)

  • #387

Добрый день. Может быть кто-то сталкивался с проблемой, когда на печать вместо введенных данных выходят квадратики? Понимаю, что проблема скорее всего с модулем печати, но на мейл разработчикам письмо не уходит, а поиск ничего похожего не дает.

5667893.jpg

  • #388

на печать вместо введенных данных выходят квадратики?

У Вас с системными шрифтами беда :(
И цифры курсивом
А пробовали переустановить модуль печати? Там же у него есть прямо опция «Восстановить»

  • #389

У Вас с системными шрифтами беда :(
И цифры курсивом
А пробовали переустановить модуль печати? Там же у него есть прямо опция «Восстановить»

Да, и восстанавливала, и заново удаляла/устанавливала.

А что делать с системными шрифтами? Courier стоит, в других программах прекрасно виден и печатается как на обычном, так и на виртуальном принтере

  • #391

Уважаемые форумчане!
Прошу помочь разобраться. При заполнении заявления ф.12001 реорганизация ЗАО в ООО в программе версия 1.0.6 не формируется печать документа. Выдает следующий текст:Обнаружены ошибки:
Не заполнен: лист Л Сведения о держателе реестра акционеров акционерного общества-регистраторе.
Файл не сформирован.
В феврале бала аналогичная реорганизация все печатала, а сейчас открываю файл, пишет тоже самое.
Хотела переустановить программу, не могу старые версии программы.
Что делать?

  • #392

Все. Разобралась. Ошибку устранила.

  • #393

RusReg,

подскажите, пожалуйста, в ППДГР нельзя ссылаться на документы, срок которых еще не наступил? Нельзя указать, например, что протокол от 30 июня 2014 года? Как же так? Это ведь крайне неудобно..

  • #394

Сталкивался ли кто с этим? При попытке распечатать заявление Р11001 выскакивает ошибка «Не найден модуль печати. Не удалось получить фабрику класса COM для компонента с CLSID … из-за следующей ошибки: 8007007e. Не найден указанный модуль», что здесь можно сделать?

  • #395

в ППДГР нельзя ссылаться на документы, срок которых еще не наступил?

Да, нельзя, это уже обсуждалось, так что смиритесь…
Ну или переводите часы в компе для таких документов, вполне себе выход ;)

  • #396

Переустановите модуль печати? Он при установке пакета вообще установился?

  • #397

Переустановите модуль печати? Он при установке пакета вообще установился?

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

  • #398

Скачал архив, там был один установочный файл, установка прошла успешно.

Установочный один, но процесс установки состоит из двух этапов — устанавливается собственно ППДГР и запускается установка модуля печати. Возможно что-то пошло не так. Попробуйте установить ещё раз в соответствии с инструкцией, которая там же рядом лежит.

  • #399

Установочный один, но процесс установки состоит из двух этапов — устанавливается собственно ППДГР и запускается установка модуля печати. Возможно что-то пошло не так. Попробуйте установить ещё раз в соответствии с инструкцией, которая там же рядом лежит.

Так и оказалось. Просто удалил и просто переустановил, всё распечаталось нормально, хотя проверил — модуль был установлен.

  • #400

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

Если не помогло, то вот более суровый вариант, уж точно должен помочь.

Спасибо за совет. Восстановление шрифтов не помогло, совсем сурово решила не делать, но направление мысли поняла, поэтому просто удалила все шрифты необходимой группы и установила заново. Все получилос

  • #381

ну так с 9-ю листами — это первая форма (первый вариант), а с 10-ю — вторая (второй вариант)

какой-какой вариант?

Luba-fcsm

  • #382

Что не понимаю суть проблемы, если заполняешь телефон, то листов 10, если телефон не заполнен, то 9:dont_know:

Мы подавали и без телефона с 9-ю листами и все ок, а сейчас подаем с телефоном и 10-ю листами и тоже все ок

  • #383

Какие Люди А я думал Якин в Гагры увёз

Luba-fcsm

  • #384

Какие Люди А я думал Якин в Гагры увёз

нам же запретили флудить, без тебя не поеду

  • #385

нам же запретили флудить, без тебя не поеду

Я им запрещу! Сами тоды ППДГР писать будут )

Luba-fcsm

  • #386

Я им запрещу! Сами тоды ППДГР писать будут )

:kiss2::happy_love: ох какой мужчина)))настоящий защитник

  • #387

Добрый день. Может быть кто-то сталкивался с проблемой, когда на печать вместо введенных данных выходят квадратики? Понимаю, что проблема скорее всего с модулем печати, но на мейл разработчикам письмо не уходит, а поиск ничего похожего не дает.

5667893.jpg

  • #388

на печать вместо введенных данных выходят квадратики?

У Вас с системными шрифтами беда
И цифры курсивом
А пробовали переустановить модуль печати? Там же у него есть прямо опция «Восстановить»

  • #389

У Вас с системными шрифтами беда
И цифры курсивом
А пробовали переустановить модуль печати? Там же у него есть прямо опция «Восстановить»

Да, и восстанавливала, и заново удаляла/устанавливала.

А что делать с системными шрифтами? Courier стоит, в других программах прекрасно виден и печатается как на обычном, так и на виртуальном принтере

  • #391

Уважаемые форумчане!
Прошу помочь разобраться. При заполнении заявления ф.12001 реорганизация ЗАО в ООО в программе версия 1.0.6 не формируется печать документа. Выдает следующий текст:Обнаружены ошибки:
Не заполнен: лист Л Сведения о держателе реестра акционеров акционерного общества-регистраторе.
Файл не сформирован.
В феврале бала аналогичная реорганизация все печатала, а сейчас открываю файл, пишет тоже самое.
Хотела переустановить программу, не могу старые версии программы.
Что делать?

  • #392

Все. Разобралась. Ошибку устранила.

  • #393

RusReg,

подскажите, пожалуйста, в ППДГР нельзя ссылаться на документы, срок которых еще не наступил? Нельзя указать, например, что протокол от 30 июня 2014 года? Как же так? Это ведь крайне неудобно..

  • #394

Сталкивался ли кто с этим? При попытке распечатать заявление Р11001 выскакивает ошибка «Не найден модуль печати. Не удалось получить фабрику класса COM для компонента с CLSID … из-за следующей ошибки: 8007007e. Не найден указанный модуль», что здесь можно сделать?

  • #395

в ППДГР нельзя ссылаться на документы, срок которых еще не наступил?

Да, нельзя, это уже обсуждалось, так что смиритесь…
Ну или переводите часы в компе для таких документов, вполне себе выход

  • #396

Переустановите модуль печати? Он при установке пакета вообще установился?

  • #397

Переустановите модуль печати? Он при установке пакета вообще установился?

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

  • #398

Скачал архив, там был один установочный файл, установка прошла успешно.

Установочный один, но процесс установки состоит из двух этапов — устанавливается собственно ППДГР и запускается установка модуля печати. Возможно что-то пошло не так. Попробуйте установить ещё раз в соответствии с инструкцией, которая там же рядом лежит.

  • #399

Установочный один, но процесс установки состоит из двух этапов — устанавливается собственно ППДГР и запускается установка модуля печати. Возможно что-то пошло не так. Попробуйте установить ещё раз в соответствии с инструкцией, которая там же рядом лежит.

Так и оказалось. Просто удалил и просто переустановил, всё распечаталось нормально, хотя проверил — модуль был установлен.

  • #400

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

Если не помогло, то вот более суровый вариант, уж точно должен помочь.

Спасибо за совет. Восстановление шрифтов не помогло, совсем сурово решила не делать, но направление мысли поняла, поэтому просто удалила все шрифты необходимой группы и установила заново. Все получилос

I developed a Windows service using C#.NET to generate PDF report. To generate PDF file I am using a third party dll. The application is running in my Windows XP platform. When I deployed the service in Windows Server 2008 64 bit version, I got this error:

Retrieving the COM class factory for
component with CLSID
{46521B1F-0A5B-4871-A4C2-FD5C9276F4C6}
failed due to the following error:
80040154.

I registered the DLL using the regsvr32 command. I able to see this CLSID in the registry. But the problem persists.

What could be the problem?

Randy Levy's user avatar

Randy Levy

22.5k4 gold badges67 silver badges93 bronze badges

asked Jun 24, 2009 at 7:22

gopal's user avatar

2

In VS — project properties — in the Build tab — platform target =X86

answered May 23, 2010 at 16:44

Fabrice MARIANADIN's user avatar

12

I ran into a very similar issue.

I needed to use an old 32-bit DLL within a Web Application that was being developed on a 64-bit machine. I registered the 32-bit DLL into the windowssysWOW64 folder using the version of regsvr32 in that folder.

Calls to the third party DLL worked from unit tests in Visual Studio but failed from the Web Application hosted in IIS on the same machine with the 80040154 error.

Changing the application pool to «Enable 32-Bit Applications» resolved the issue.

keineahnung2345's user avatar

answered Jul 27, 2010 at 21:31

Daniel Ballinger's user avatar

Daniel BallingerDaniel Ballinger

12.9k11 gold badges69 silver badges96 bronze badges

6

It sounds like your service was built against ‘Any CPU’, causing you errors on 64-bit where you are using COM components. You need to build it for x86.

The website is probably running as a 32-bit process which is why it can use the component. Building your solution against x86 will force your service to run as 32-bit.

Ryan Gates's user avatar

Ryan Gates

4,4716 gold badges49 silver badges89 bronze badges

answered Jun 24, 2009 at 8:07

stevehipwell's user avatar

stevehipwellstevehipwell

55k6 gold badges43 silver badges61 bronze badges

4

You dont have to configure your project properties platform target X86.
You can also configure the iis options to work with x86 like that

  • Select Application pool
  • Select the pool which your app uses
  • Advanced settings
  • Enable 32 bit applications true

answered Jan 13, 2014 at 9:38

nazim hatipoglu's user avatar

5

If you are looking for a way to make this work without recompiling your Any CPU application, here is another potential workaround:

  1. Locate your COM object GUID under the HKey_Classes_RootWow6432NodeCLSID{GUID}
  2. Once located add a new REG_SZ (string) Value. Name should be AppID and data should be the same COM object GUID you have just searched for
  3. Add a new key under HKey_Classes_RootWow6432NodeAppID. The new key should be called the same as the COM object GUID.
  4. Under the new key you just added, add a new String Value, and call it DllSurrogate. Leave the value empty.
  5. Create a new Key under HKey_Local_MachineSoftwareClassesAppID
    Again the new key should be called the same as the COM object’s GUID. No values are necessary to be added under this key.

I take no credit for the solution, but it worked for us. Check the source link for more information and other comments.

Source: https://techtalk.gfi.com/32bit-object-64bit-environment/

David Guerra's user avatar

answered Jan 11, 2013 at 19:52

Joshua Starner's user avatar

Joshua StarnerJoshua Starner

1,5651 gold badge13 silver badges13 bronze badges

5

The problem is that the server process is 64 bit and the library is 32-bit and it tries to create the COM component in the same process (in-proc server). Either you recompile the server and make it 32-bit or you leave the server unchanged and make the COM component out-of-process. The easiest way to make a COM server out-of-process is to create a COM+ application — Control Panel -> Administrative Tools -> ComponentServices.

Peter Mortensen's user avatar

answered Jun 24, 2009 at 8:17

sharptooth's user avatar

sharptoothsharptooth

166k99 gold badges508 silver badges963 bronze badges

1

I had the same issue, but the other answers only supplied one part of the solution.

The solution is two fold:

Remove the 64bit from the Register.

  • c:windowssystem32regsvr32.exe /U <file.dll>
  • This will not remove references to other copied of the dll in other folders.

or

  • Find the key called HKEY_CLASSES_ROOTCLSID{……}InprocServer32. This key will have the filename of the DLL as its default value.
  • I removed the HKEY_CLASSES_ROOTCLSID{……} folder.

Register it as 32bit:

  • C:WindowsSysWOW64regsvr32 <file.dll>

Registering it as 32bit without removing the 64bit registration does not resolve my issue.

Redoman's user avatar

Redoman

2,8522 gold badges34 silver badges61 bronze badges

answered Jul 25, 2014 at 21:06

Gerhard Powell's user avatar

Gerhard PowellGerhard Powell

5,8755 gold badges51 silver badges58 bronze badges

1

I didn’t change any compile settings.

Just set «Enable 32-bit Application = True» in AppPool Advanced Settings.

It worked for me

answered Oct 20, 2014 at 11:51

Eduardo Xavier's user avatar

1

The solution for windows 2008 server x64 is:

  1. open cmd.exe with Administrator permission.
  2. Copy the dll to the folder C:WindowsSysWOW64
  3. run regsvr32 from C:WindowsSysWOW64
  4. Verify that dll is in registry of Windows.
  5. If you has a .exe x86 that use the dll, the exe must be compiled in x86 mode.
  6. The exe must be installed in folder C:Program Files (x86)

This procedure is valid, it is ok.

answered Apr 13, 2011 at 14:55

Juan's user avatar

JuanJuan

711 silver badge1 bronze badge

Had a related issue with a different, but similar fix:

I had a Windows service project set to «Any-CPU» using a 64-bit DLL. Same error message. Tried a whole bunch of things, but nothing worked. Finally, I went into project Properties -> Build and noticed that project had «Prefer 32-bit» checked. Unchecked this and no more error.

My guess is that the windows service was expecting a 32-bit DLL, and couldn’t find it.

answered Dec 28, 2012 at 2:37

jinushaun's user avatar

jinushaunjinushaun

1361 silver badge2 bronze badges

1

To change to x86:

  1. Create a setup project for your solution.
  2. After you create it, Go to Solution Explorer, right click the setup project.
    • Press Configuration Manager.
    • Click on: «Active Solution Platform» combobox and select New (If there is no x86 displayed)
    • Select from first combo x86 then press OK.
    • rebuild Setup project, then rebuild All the project.

Hendrik Brummermann's user avatar

answered Mar 19, 2011 at 9:08

ShouShouLeb's user avatar

If you are running a website, you could also try to set your application pool to disable 32-bit Applications (under advanced settings of a pool).

answered May 19, 2011 at 17:43

scramblor's user avatar

1

I found that my problem related to the actual registration of the DLL.

  • First run «Regedit.exe» from a CMD prompt (I raised it’s security level to Administrator, «just in case»)
  • then search the Registry (by clicking on «Edit/Find» in the RegEdit menu or by pressing Ctrl+F) for the CLSID showing in the error message which you received regarding the COM class factory. My CLSID was 29AB7A12-B531-450E-8F7A-EA94C2F3C05F.
  • When this key is found, select the sub-key «InProcServer2» under that Hive node and ascertain the filename of the problem DLL in the right hand Regedit frame. showing under «Default».
  • If that file resides in «C:WindowsSysWow64″(such as C:WindowsSysWow64Redemption.dll») then it is important that you use the «C:WindowsSysWow64RegSvr32.exe» file to register that DLL from the command line and NOT the default «C:WindowsSystem32RegSvr32.exe» file.
  • So I ran a CMD prompt (under Administrative level control (just in case this level is need required) and type on the command line (in the case of my DLL):
    C:WindowsSysWow64RegSvr32.exe c:WindowsSysWow64Redemption.dll the press enter.
  • Close the command window (via «Exit» then Restart your computer (always use restart instead of Close Down then start up, since (strangely) Restart perform a thorough shut down and reload of everything whereas «Shut Down» and Power-Up reloads a stored cache of drivers and other values (which may be faulty).
  • Whenever you register a DLL in the future, remember to use the SysWow64 «RegSvr32.exe» for any DLL stored in the C:WindowsSysWow64 folder and this problem c(if it is caused by incorrect registration) should not happen again.

Redoman's user avatar

Redoman

2,8522 gold badges34 silver badges61 bronze badges

answered Nov 30, 2018 at 0:34

Chris Raisin's user avatar

1

In my personal case the issue was fixed searching for the class id in the Windows’s Registry on developer machine (because the issue was thrown in a client PC). This action will be placed into the COM component that causes the issue: an x86 library referenced in my .NET project that was not being registered as OCX/COM for the installer or updater application.

Regards

answered Feb 2, 2017 at 15:09

César Qüeb's user avatar

For anyone using VSTO, the problem for me was a missing reference to the office assembly. It would also appear if you were trying to instantiate certain VSTO objects manually.

answered May 27, 2015 at 16:56

Alex's user avatar

AlexAlex

5,2779 gold badges52 silver badges67 bronze badges

My problem was that I had the wrong MS Sync FrameWork version (1.0) in my project References. After update to the version 2.1, the error was gone and life is good again.

answered Sep 18, 2015 at 21:42

Phogrammer's user avatar

In my case, I’m producing ms office file like word or excel, I run Win+R and execute dcomcnfg, in the DCOM Config, besides select OFFICE related name item (such as name contains Excel or Word or Office) and Open the properties, select Identity tab and select the interactive user. as this answer,

My error message show CLSID {000209FF-0000-0000-C000-000000000046}, so I have to try to find this specific CLSID in DCOM Config, and it does exsits, and I select it and follow same step set the interactive user, then it works.

answered Feb 21, 2019 at 16:55

yu yang Jian's user avatar

yu yang Jianyu yang Jian

6,3247 gold badges53 silver badges78 bronze badges

Accepted answer, changing target platform to x86 did not work in may case!

When I have installed crystal report for visual studio and crystal report runtime engine (64-bit) worked in my case!

Some other suggests that, this problem could be resolved by installing both 32-bit and 64-bit runtime engine!

You may give a try!

enter image description here

answered May 29, 2022 at 4:30

Khalid Bin Sarower's user avatar

I developed a Windows service using C#.NET to generate PDF report. To generate PDF file I am using a third party dll. The application is running in my Windows XP platform. When I deployed the service in Windows Server 2008 64 bit version, I got this error:

Retrieving the COM class factory for
component with CLSID
{46521B1F-0A5B-4871-A4C2-FD5C9276F4C6}
failed due to the following error:
80040154.

I registered the DLL using the regsvr32 command. I able to see this CLSID in the registry. But the problem persists.

What could be the problem?

Randy Levy's user avatar

Randy Levy

22.5k4 gold badges67 silver badges93 bronze badges

asked Jun 24, 2009 at 7:22

gopal's user avatar

2

In VS — project properties — in the Build tab — platform target =X86

answered May 23, 2010 at 16:44

Fabrice MARIANADIN's user avatar

12

I ran into a very similar issue.

I needed to use an old 32-bit DLL within a Web Application that was being developed on a 64-bit machine. I registered the 32-bit DLL into the windowssysWOW64 folder using the version of regsvr32 in that folder.

Calls to the third party DLL worked from unit tests in Visual Studio but failed from the Web Application hosted in IIS on the same machine with the 80040154 error.

Changing the application pool to «Enable 32-Bit Applications» resolved the issue.

keineahnung2345's user avatar

answered Jul 27, 2010 at 21:31

Daniel Ballinger's user avatar

Daniel BallingerDaniel Ballinger

12.9k11 gold badges69 silver badges96 bronze badges

6

It sounds like your service was built against ‘Any CPU’, causing you errors on 64-bit where you are using COM components. You need to build it for x86.

The website is probably running as a 32-bit process which is why it can use the component. Building your solution against x86 will force your service to run as 32-bit.

Ryan Gates's user avatar

Ryan Gates

4,4716 gold badges49 silver badges89 bronze badges

answered Jun 24, 2009 at 8:07

stevehipwell's user avatar

stevehipwellstevehipwell

55k6 gold badges43 silver badges61 bronze badges

4

You dont have to configure your project properties platform target X86.
You can also configure the iis options to work with x86 like that

  • Select Application pool
  • Select the pool which your app uses
  • Advanced settings
  • Enable 32 bit applications true

answered Jan 13, 2014 at 9:38

nazim hatipoglu's user avatar

5

If you are looking for a way to make this work without recompiling your Any CPU application, here is another potential workaround:

  1. Locate your COM object GUID under the HKey_Classes_RootWow6432NodeCLSID{GUID}
  2. Once located add a new REG_SZ (string) Value. Name should be AppID and data should be the same COM object GUID you have just searched for
  3. Add a new key under HKey_Classes_RootWow6432NodeAppID. The new key should be called the same as the COM object GUID.
  4. Under the new key you just added, add a new String Value, and call it DllSurrogate. Leave the value empty.
  5. Create a new Key under HKey_Local_MachineSoftwareClassesAppID
    Again the new key should be called the same as the COM object’s GUID. No values are necessary to be added under this key.

I take no credit for the solution, but it worked for us. Check the source link for more information and other comments.

Source: https://techtalk.gfi.com/32bit-object-64bit-environment/

David Guerra's user avatar

answered Jan 11, 2013 at 19:52

Joshua Starner's user avatar

Joshua StarnerJoshua Starner

1,5651 gold badge13 silver badges13 bronze badges

5

The problem is that the server process is 64 bit and the library is 32-bit and it tries to create the COM component in the same process (in-proc server). Either you recompile the server and make it 32-bit or you leave the server unchanged and make the COM component out-of-process. The easiest way to make a COM server out-of-process is to create a COM+ application — Control Panel -> Administrative Tools -> ComponentServices.

Peter Mortensen's user avatar

answered Jun 24, 2009 at 8:17

sharptooth's user avatar

sharptoothsharptooth

166k99 gold badges508 silver badges963 bronze badges

1

I had the same issue, but the other answers only supplied one part of the solution.

The solution is two fold:

Remove the 64bit from the Register.

  • c:windowssystem32regsvr32.exe /U <file.dll>
  • This will not remove references to other copied of the dll in other folders.

or

  • Find the key called HKEY_CLASSES_ROOTCLSID{……}InprocServer32. This key will have the filename of the DLL as its default value.
  • I removed the HKEY_CLASSES_ROOTCLSID{……} folder.

Register it as 32bit:

  • C:WindowsSysWOW64regsvr32 <file.dll>

Registering it as 32bit without removing the 64bit registration does not resolve my issue.

Redoman's user avatar

Redoman

2,8522 gold badges34 silver badges61 bronze badges

answered Jul 25, 2014 at 21:06

Gerhard Powell's user avatar

Gerhard PowellGerhard Powell

5,8755 gold badges51 silver badges58 bronze badges

1

I didn’t change any compile settings.

Just set «Enable 32-bit Application = True» in AppPool Advanced Settings.

It worked for me

answered Oct 20, 2014 at 11:51

Eduardo Xavier's user avatar

1

The solution for windows 2008 server x64 is:

  1. open cmd.exe with Administrator permission.
  2. Copy the dll to the folder C:WindowsSysWOW64
  3. run regsvr32 from C:WindowsSysWOW64
  4. Verify that dll is in registry of Windows.
  5. If you has a .exe x86 that use the dll, the exe must be compiled in x86 mode.
  6. The exe must be installed in folder C:Program Files (x86)

This procedure is valid, it is ok.

answered Apr 13, 2011 at 14:55

Juan's user avatar

JuanJuan

711 silver badge1 bronze badge

Had a related issue with a different, but similar fix:

I had a Windows service project set to «Any-CPU» using a 64-bit DLL. Same error message. Tried a whole bunch of things, but nothing worked. Finally, I went into project Properties -> Build and noticed that project had «Prefer 32-bit» checked. Unchecked this and no more error.

My guess is that the windows service was expecting a 32-bit DLL, and couldn’t find it.

answered Dec 28, 2012 at 2:37

jinushaun's user avatar

jinushaunjinushaun

1361 silver badge2 bronze badges

1

To change to x86:

  1. Create a setup project for your solution.
  2. After you create it, Go to Solution Explorer, right click the setup project.
    • Press Configuration Manager.
    • Click on: «Active Solution Platform» combobox and select New (If there is no x86 displayed)
    • Select from first combo x86 then press OK.
    • rebuild Setup project, then rebuild All the project.

Hendrik Brummermann's user avatar

answered Mar 19, 2011 at 9:08

ShouShouLeb's user avatar

If you are running a website, you could also try to set your application pool to disable 32-bit Applications (under advanced settings of a pool).

answered May 19, 2011 at 17:43

scramblor's user avatar

1

I found that my problem related to the actual registration of the DLL.

  • First run «Regedit.exe» from a CMD prompt (I raised it’s security level to Administrator, «just in case»)
  • then search the Registry (by clicking on «Edit/Find» in the RegEdit menu or by pressing Ctrl+F) for the CLSID showing in the error message which you received regarding the COM class factory. My CLSID was 29AB7A12-B531-450E-8F7A-EA94C2F3C05F.
  • When this key is found, select the sub-key «InProcServer2» under that Hive node and ascertain the filename of the problem DLL in the right hand Regedit frame. showing under «Default».
  • If that file resides in «C:WindowsSysWow64″(such as C:WindowsSysWow64Redemption.dll») then it is important that you use the «C:WindowsSysWow64RegSvr32.exe» file to register that DLL from the command line and NOT the default «C:WindowsSystem32RegSvr32.exe» file.
  • So I ran a CMD prompt (under Administrative level control (just in case this level is need required) and type on the command line (in the case of my DLL):
    C:WindowsSysWow64RegSvr32.exe c:WindowsSysWow64Redemption.dll the press enter.
  • Close the command window (via «Exit» then Restart your computer (always use restart instead of Close Down then start up, since (strangely) Restart perform a thorough shut down and reload of everything whereas «Shut Down» and Power-Up reloads a stored cache of drivers and other values (which may be faulty).
  • Whenever you register a DLL in the future, remember to use the SysWow64 «RegSvr32.exe» for any DLL stored in the C:WindowsSysWow64 folder and this problem c(if it is caused by incorrect registration) should not happen again.

Redoman's user avatar

Redoman

2,8522 gold badges34 silver badges61 bronze badges

answered Nov 30, 2018 at 0:34

Chris Raisin's user avatar

1

In my personal case the issue was fixed searching for the class id in the Windows’s Registry on developer machine (because the issue was thrown in a client PC). This action will be placed into the COM component that causes the issue: an x86 library referenced in my .NET project that was not being registered as OCX/COM for the installer or updater application.

Regards

answered Feb 2, 2017 at 15:09

César Qüeb's user avatar

For anyone using VSTO, the problem for me was a missing reference to the office assembly. It would also appear if you were trying to instantiate certain VSTO objects manually.

answered May 27, 2015 at 16:56

Alex's user avatar

AlexAlex

5,2779 gold badges52 silver badges67 bronze badges

My problem was that I had the wrong MS Sync FrameWork version (1.0) in my project References. After update to the version 2.1, the error was gone and life is good again.

answered Sep 18, 2015 at 21:42

Phogrammer's user avatar

In my case, I’m producing ms office file like word or excel, I run Win+R and execute dcomcnfg, in the DCOM Config, besides select OFFICE related name item (such as name contains Excel or Word or Office) and Open the properties, select Identity tab and select the interactive user. as this answer,

My error message show CLSID {000209FF-0000-0000-C000-000000000046}, so I have to try to find this specific CLSID in DCOM Config, and it does exsits, and I select it and follow same step set the interactive user, then it works.

answered Feb 21, 2019 at 16:55

yu yang Jian's user avatar

yu yang Jianyu yang Jian

6,3247 gold badges53 silver badges78 bronze badges

Accepted answer, changing target platform to x86 did not work in may case!

When I have installed crystal report for visual studio and crystal report runtime engine (64-bit) worked in my case!

Some other suggests that, this problem could be resolved by installing both 32-bit and 64-bit runtime engine!

You may give a try!

enter image description here

answered May 29, 2022 at 4:30

Khalid Bin Sarower's user avatar

Спасибо все за ответы, но ничего не вышло. Пытался сегодня зарегистрировать с помощью regasm.exe и через командную строку и через VS2013, но ничего не получилось. В командной строке пишет «regasm» не является внутренней или внешней командой, исполняемой программой или пакетным файлом. В VS2013 — The term ‘regasm’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

Мне нужно установить regasm.exe? Просто читал что он с VS устанавливается или с Windows SDK. Буду благодарен за помощь.

Добавлено через 29 минут
Поковырялся еще в интернете нашел : http://support.microsoft.com/kb/908268/ru

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

C:WindowsMicrosoft.NETFramework64v4.0.30319re gAsm.exe Interop.SterlingLib.dll
Microsoft .NET Framework Assembly Registration Utility 4.0.30319.18408
для Microsoft .NET Framework 4.0.30319.18408
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

regAsm.exe : RegAsm : error RA0000 : Сбой при загрузке ‘C:WindowsMicrosoft.NETFramework64v4.0.30319I nterop.SterlingLib.dll’ из-за недопустимой сборки .NET

Пока решения не нашел.

Добавлено через 36 минут

Цитата
Сообщение от MaxValue
Посмотреть сообщение

если библиотека фреймворковская то через regasm регистрировать надо. и под админом

а что делать, если библиотека не фреймворковская и как это определить?

Добавлено через 36 минут
Попробовал по совету этой статьи еще сделать http://support.microsoft.com/kb/249873/ru :

В итоге одна выходит одна из ошибок описанная в этой статье:
Модуль «%1″ загружен, но точка входа %2 не найдена.nnПроверьте, что » %1″ является правильным файлом DLL или OCX и повторите попытку.

Расшифровка данного сообщения:
Средству Regsvr32.exe не удалось найти необходимую точку входа модуля, указанного в командной строке. Это может произойти при неправильном экспорте точек входа из модуля или если модуль не является DLL- либо OCX-файлом.

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

  • Remove From My Forums
  • Вопрос

  • Всем добрый вечер.
    Мой рабочий проект создан в Microsoft Visual Studio Professional 2013
    Version 12.0 REL, используется фреймворк Microsoft .NET Framework Version 4.5.5
    Проект запускается на 64-битной корпоративной Windows 8.1
    И это ключевой момент.
    В состав проекта включена dll «ActiveX Formula One 6.1» стороннего производителя, являющаяся 32-битным приложением.   
    Аккуратно регистрирую все dll, входящие в состав «ActiveX Formula One 6.1», создаю файл .def и командой lib генерирую библиотеку .tlb.
    После этого регистрирую dll «ActiveX Formula One 6.1» в своем проекте:
    MyProject->Add->Reference->Browse-Program Files (x86)->Tidestone-> «ActiveX Formula One 6.1»

    Создаются две обвертки:
    Interop.TTF160.dll
    Interop.StdType.dll
    Библиотеки доступны и работают, начиная с инструкции
    using TTF160
    все свойства и методы при кодировании доступны, то есть студия «видит» эту библиотеку.
    Запускаю проект на выполнение и при выполнении первого обращения
    TTF160.F1Book oF1Book = new TTF160.F1BookClass();
    выдается сообщение:
    Не удалось получить фабрику класса COM для компонента с CLSID … HRESULT: 0x80040154 REGDB_E_CLASSNOTREG

    На машине разработчика для всех Application Poll, имеющихся в работе, установлено
    Диспетчер служб IIS->Пулы приложений->DefaultAppPoll->Дополнительные параметры->
    Разрешены 32-разрядные приложения: True

    Прошу подсказать, в чем ошибка и как запустить 32-битную dll «ActiveX Formula One 6.1» в 64-битном процессе.

    Среда разработки
    Microsoft Visual Studio Professional 2013
    Version 12.0.21005.1 REL
    Microsoft .NET Framework
    Version 4.5.53349

    Машина разработчика
    MS Windows 8.1 Корпоративная версия
    тип системы x64
    64-разрядная операционная система

Ответы

  • Прошу подсказать, в чем ошибка и как запустить 32-битную dll «ActiveX Formula One 6.1» в 64-битном процессе.

    Никак, это запрещено. Выбирайте для проекта .net архитектуру x86 явным образом, тогда шанс есть.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    • Помечено в качестве ответа

      5 июля 2015 г. 8:20

  • Добрый день.

    На самом деле MS Visual Studio является 32-битным приложением. Таким образом мой рабочий проект является нормальным 32-битным процессом и включение в такой x86 проект стандартных x86 ActiveX
    объектов есть нормальный процесс. После переустановки Windows 8.1 и установки на чистую машину MS Visual Studio все ссылки в секции Reference нормально заработали. Благодарю за поддержку. Видимо, надо почаще «сносить» ОС.
    От себя замечу, что использование Windows 8.1 в качестве профессиональной копоративной системы кажется ненадежным. Упомянутые в посте ошибки «полезли» после очередного обновления.

    Наверное, как минимум необходимо отключить сценарий автоматического обновления.

    Всем успехов.

    • Помечено в качестве ответа
      SERGODDD
      10 июля 2015 г. 10:41
  • Печать

Страницы: [1]   Вниз

Тема: Не удалось получить фабрику класса COM для компонента  (Прочитано 8029 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Здравствуйте, переношу программу с vba на vb.net. При обращении к именам из AcSmComponents21.tlb (например AcSmSheetSetMgr) выдает ошибку
для x86 System.Runtime.InteropServices.COMException: «Не удалось получить фабрику класса COM для компонента с CLSID {1BDC8922-FDEB-40DE-A51E-8C4B44569F42} из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).»,
для x64 System.IO.FileNotFoundException: «Не удалось получить фабрику класса COM для компонента с CLSID {1BDC8922-FDEB-40DE-A51E-8C4B44569F42} из-за следующей ошибки: 8007007e Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E).»
Автокад 2017 х64, VS 2017, win 10 x64. Подскажите в чем может быть проблема


Записан


выдает ошибку для x86

Автокад 2017 х64, VS 2017, win 10 x64.

Ответ выделен.


Записан


Ответ выделен.

для х64 тоже ошибку выдает

для x64 System.IO.FileNotFoundException: «Не удалось получить фабрику класса COM для компонента с CLSID {1BDC8922-FDEB-40DE-A51E-8C4B44569F42} из-за следующей ошибки: 8007007e Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E).»


Записан


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

  1. REGEDIT4

  2. [HKEY_CLASSES_ROOTCLSID{1BDC8922-FDEB-40DE-A51E-8C4B44569F42}]

  3. @=«AcSmSheetSetMgr»

  4. [HKEY_CLASSES_ROOTCLSID{1BDC8922-FDEB-40DE-A51E-8C4B44569F42}InProcServer32]

  5. @=«AcSmComponents.dll»

  6. «ThreadingModel»=«Apartment»

  7. [HKEY_CLASSES_ROOTCLSID{1BDC8922-FDEB-40DE-A51E-8C4B44569F42}ProgID]

  8. @=«AcSmComponents.AcSmSheetSetMgr.21»

  9. [HKEY_CLASSES_ROOTCLSID{1BDC8922-FDEB-40DE-A51E-8C4B44569F42}Programmable]

  10. @=«»

  11. [HKEY_CLASSES_ROOTCLSID{1BDC8922-FDEB-40DE-A51E-8C4B44569F42}TypeLib]

  12. @=«{AA0F32F6-E7D0-44C3-BF90-2C2CC3220C1F}«

Это всё ссылается на файл AcSmComponents.dll, который находится в каталоге с AutoCAD. Если ты делаешь своё приложение, которое грузится внутрь AutoCAD, то этот файл должен нормально находиться. Внешнее приложение с этим файлом работать не может, так как он имеет зависимости с самим AutoCAD.


Записан


Реестр совпадает. То есть с подшивками нет возможности работать из внешнего приложения? Или надо как то подключатся к этой библиотеке через автокад?


Записан



Записан


А vba не как внешнее приложение считается? Оно же вроде через ActiveX к автокаду обращается.


Записан


VBA работает внутри AutoCAD.


Записан



Записан


Отмечено как Решение Akkella 10-12-2018, 19:45:17


Записан



Записан


правда эта библиотека упорно не хочет работать

что пишет?


Записан


что пишет?

Необработанное исключение: System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
   в SheetSetManager.CustomPropertyBag..ctor(XmlElement nParent) в D:1SheetSetManager-masterCustomPropertyBag.cs:строка 17
   в SheetSetManager.Sheet..ctor(XmlElement nParent) в D:1SheetSetManager-masterSheet.cs:строка 19
   в SheetSetManager.SheetSetListener..ctor(String nfilename) в D:1SheetSetManager-masterSheetSetListener.cs:строка 29
   в Project6.Module1.SheetSetTest() в C:UsersakkelsourcereposProject6Project6Module1.vb:строка 721
   в Project6.Form1.Form1_Load(Object sender, EventArgs e) в C:UsersakkelsourcereposProject6Project6Form1.vb:строка 13

Обращался к библиотеке Dim wListener As New SheetSetListener(«D:тестRamka.dst»)


Записан


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

  1. AcSmXml doc = new AcSmXml();

  2. doc.LoadFromDstFile(nfilename);

и получить подшивку как xml

« Последнее редактирование: 10-12-2018, 17:15:53 от Александр Ривилис »


Записан


« Последнее редактирование: 10-12-2018, 21:03:46 от Akkella »


Записан


  • Печать

Страницы: [1]   Вверх



Я разработал службу Windows с помощью C#.NET для создания отчета в формате PDF. Для создания PDF-файла я использую стороннюю dll. Приложение работает в моей платформе Windows XP. Когда я развернул службу в Windows Server 2008 64-битная версия, я получил эту ошибку:

получение фабрики классов COM для
компонента с CLSID
{46521B1F-0A5B-4871-A4C2-FD5C9276F4C6}
сбой из-за следующей ошибки:
80040154.

I зарегистрировал DLL с помощью команды regsvr32. Я могу видеть этот CLSID в реестре. Но проблема остается.

в чем может быть проблема?


1747  


15  

15 ответов:

в свойствах VS-project-на вкладке Build-platform target =X86

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

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

Я столкнулся с очень похожей проблемой.

Мне нужно было использовать старую 32-разрядную DLL в веб-приложении, которое разрабатывалось на 64-разрядной машине. Я зарегистрировал 32-разрядную DLL в папке windowssysWOW64, используя версию regsrv32 в этой папке.

вызовы сторонних DLL работали из модульных тестов в Visual Studio, но не удалось из веб-приложения, размещенного в IIS на той же машине с ошибкой 80040154.

изменение приложения пул для «включения 32-разрядных приложений» решил проблему.

проблема в том, что серверный процесс 64-разрядный, а библиотека 32-разрядная, и он пытается создать компонент COM в том же процессе (in-proc server). Либо вы перекомпилируете сервер и сделаете его 32-разрядным, либо оставите сервер неизменным и выведете компонент COM из процесса. Самый простой способ сделать COM-сервер вне процесса-это создать приложение COM+ — Панель управления — > Администрирование — > ComponentServices.

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

  1. найдите свой идентификатор GUID COM-объекта в разделе HKey_Classes_RootWow6432NodeCLSID{GUID}
  2. после размещения добавить новый параметр типа reg_sz (строковый параметр). Имя должно быть AppID, а данные должны быть тем же GUID объекта COM, который вы только что искали
  3. Добавить новый ключ в разделе HKey_Classes_RootWow6432NodeAppID. Новый ключ должен быть вызывается так же, как и идентификатор GUID COM-объекта.
  4. под новым ключом, который вы только что добавили, добавьте новое строковое значение и назовите его DllSurrogate. Оставьте значение пустым.
  5. создайте новый ключ в разделе HKey_Local_MachineSoftwareClassesAppID
    Снова новый ключ должен быть вызван так же, как GUID объекта COM. Никакие значения не должны быть добавлены под этим ключом.

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

источник:http://www.gfi.com/blog/32bit-object-64bit-environment/

вам не нужно настраивать свойства вашего проекта целевой платформы X86.
Вы также можете настроить параметры iis для работы с x86, как это

  • выберите пул приложений
  • выберите пул, который использует ваше приложение
  • Дополнительные параметры
  • включить 32-битные приложения правда

Я не менял никаких настроек компиляции.

просто установите «включить 32-разрядное приложение = True» в расширенных настройках AppPool.

Это сработало для меня

решение для windows 2008 server x64:

  1. открыть cmd.exe с правами администратора.
  2. скопируйте dll в папку C:WindowsSysWOW64
  3. запустить regsvr32 из C:WindowsSysWOW64
  4. убедитесь, что dll находится в реестре Windows.
  5. Если у вас есть .ехе х86, использующих библиотеку DLL, EXE-файл должен быть скомпилирован в режиме x86.
  6. exe должен быть установлен в папке C:Program файлы (x86)

эта процедура действительна, это нормально.

была связанная проблема с другим, но похожим исправлением:

У меня был проект службы Windows, установленный на «Any-CPU», используя 64-разрядную DLL. Такое же сообщение об ошибке. Пробовал целую кучу вещей, но ничего не получалось. Наконец, я зашел в свойства проекта -> Build и заметил, что проект «предпочитает 32-бит» проверен. Снимите этот флажок и больше никаких ошибок.

Я предполагаю, что служба windows ожидала 32-разрядную DLL и не смогла ее найти.

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

решение в два раза:

удалите 64 бит из реестра.

  • c:windowssystem32regsvr32.exe / U
  • это не приведет к удалению ссылок на другие скопированные dll в других папках.

или

  • найдите ключ с именем CMDCLSID{……}InprocServer32. Этот ключ будет иметь имя файла DLL в качестве значения по умолчанию.
  • Я удалил 【CLSID{……} папка.

зарегистрируйте его как 32bit:

  • C:WindowsSysWOW64regsvr32 <file.dll>

Регистрация его как 32bit без удаления 64bit регистрация не решает мою проблему.

чтобы перейти на x86:

  1. создайте проект установки для вашего решения.
  2. после его создания перейдите в Обозреватель решений, щелкните правой кнопкой мыши проект установки.
    • Нажмите Configuration Manager.
    • нажмите на:» Active Solution Platform » combobox и выберите Новый (если нет x86 отображается)
    • выберите из первой комбинации x86, затем нажмите OK.
    • перестроить проект установки, а затем восстановить все проект.

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

для всех, кто использует VSTO, проблема для меня была отсутствующей ссылкой на office сборка. Он также появится, если вы пытаетесь создать экземпляр определенных объектов VSTO вручную.

в моем личном случае проблема была исправлена поиск идентификатора класса в реестре Windows на машине разработчика (потому что проблема была выброшена на клиентском ПК). Это действие будет помещено в компонент COM, который вызывает проблему:библиотека x86, на которую ссылается мой проект .NET, который не был зарегистрирован как OCX / COM для программы установки или обновления.

в отношении

моя проблема заключалась в том, что у меня была неправильная версия MS Sync FrameWork (1.0) в моих ссылках на проект. После обновления до версии 2.1 ошибка исчезла, и жизнь снова хороша.

Форум КриптоПро
 » 
КриптоПро УЦ
 » 
КриптоПро УЦ 2.0
 » 
Ряд вопросов по продукту «КриптоПро УЦ 2.0»


Offline

Анатолий Колкочев

 


#1
Оставлено
:

7 сентября 2019 г. 13:57:33(UTC)

TolikTipaTut1

Статус: Активный участник

Группы: Участники

Зарегистрирован: 05.07.2018(UTC)
Сообщений: 350

Сказал(а) «Спасибо»: 37 раз
Поблагодарили: 40 раз в 36 постах

Добрый день.

Была поставлена следующая задача:
Развернуть центр сертификации на машине с установленной ОС Windows Server 2008 R2, Центр Регистрации на другой машине с ОС Windows Server 2016.
На машине с ОС 2008 был установлен SQL 2008, на 2016 — SQL 2016.

Все установилось без особых проблем (после обновления .net Framework до версии 4.6 на машине с 2008), Ping-CA работает без проблем, сертификаты выпускаются.
Сборка УЦ: 2.0.6904.

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

Соотвественно, вопросы:

1. ЖТЯИ.00078-01 90 03. Руководство по эксплуатации. П.4. Веб портал ЦР предназначен для выполнения организационно-технических мероприятий, связанных с: <…> управлением личными ключами и сертификатами пользователя <…>. Т.о. получается, что с помощью Веб-Портала можно управлять только своими сертификатами и создавать запросы только на свои личные сертификаты ? Т.е. это не является заменой Консоли Управления ЦР для пользователей ?

2. При попытке подключения к Веб-Порталу ЦР иногда в адресной строке появляются 2 различные ссылки: https://<…>/ui/1/<…> и https://<…>/ui/2/<…>. Иногда бывает такое, что при обращении ко второй ссылке (клиент не контролирует процесс, к какой ссылке он подключается) возникает ошибка, что не удается установить надежное соединение. Бывает, что это происходит при регистрации, иногда при входе по сертификату, иногда при входе по логину и паролю.

3. Где можно получить информацию о том, каким образом настраивать конфигурационный файл для Веб-портала ?

Так же возникли еще вопросы:

4. Для того, чтобы установить ЦР и ЦС на различные компьютеры, потребовалось дважды разворачивать на двух машинах сервера SQL. Обязательно ли это ? Просто при установке КриптоПро УЦ 2.0 установщик не пускает дальше, если не стоит SQL Server.

5. При попытке выполнения команды certutil2 -cainfo * -config ‘имя-машиныназвание-уц’ вылезает ошибка:
«Certutil2: Не удалось получить фабрику класса COM для удаленного компонента с CLSID {D99E6E73-FC88-11D0-B498-00A0C90312F3} с компьютера win-vpljtdep0mr из-за следующей ошибки: 80070005 win-vpljtdep0mr.»
Как я понял, это означает, что отказано в доступе. Каким образом можно запросить информацию о ЦС из ЦР, если они установлены на разных машинах ?
Загуглил ID D99E6E73-FC88-11D0-B498-00A0C90312F3, нашел некое описание тут, но мне это не особо сильно помогло (

Отредактировано пользователем 7 сентября 2019 г. 15:26:16(UTC)
 | Причина: Не указана

GithHub: https://github.com/anatolkavassermann/


Вверх

Offline

Захар Тихонов

 


#2
Оставлено
:

9 сентября 2019 г. 10:57:58(UTC)

Захар Тихонов

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 17.08.2015(UTC)
Сообщений: 3,063
Мужчина
Тонга
Откуда: Калининград

Сказал «Спасибо»: 35 раз
Поблагодарили: 548 раз в 525 постах

Здравствуйте.

Автор: TolikTipaTut1 Перейти к цитате

Добрый день.

Была поставлена следующая задача:
Развернуть центр сертификации на машине с установленной ОС Windows Server 2008 R2, Центр Регистрации на другой машине с ОС Windows Server 2016.
На машине с ОС 2008 был установлен SQL 2008, на 2016 — SQL 2016.

Все установилось без особых проблем (после обновления .net Framework до версии 4.6 на машине с 2008), Ping-CA работает без проблем, сертификаты выпускаются.
Сборка УЦ: 2.0.6904.

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

Соотвественно, вопросы:

1. ЖТЯИ.00078-01 90 03. Руководство по эксплуатации. П.4. Веб портал ЦР предназначен для выполнения организационно-технических мероприятий, связанных с: <…> управлением личными ключами и сертификатами пользователя <…>. Т.о. получается, что с помощью Веб-Портала можно управлять только своими сертификатами и создавать запросы только на свои личные сертификаты ? Т.е. это не является заменой Консоли Управления ЦР для пользователей ?

Да, веб-портал ЦР — это пользовательский личный кабинет.

Автор: TolikTipaTut1 Перейти к цитате

2. При попытке подключения к Веб-Порталу ЦР иногда в адресной строке появляются 2 различные ссылки: https://<…>/ui/1/<…> и https://<…>/ui/2/<…>. Иногда бывает такое, что при обращении ко второй ссылке (клиент не контролирует процесс, к какой ссылке он подключается) возникает ошибка, что не удается установить надежное соединение. Бывает, что это происходит при регистрации, иногда при входе по сертификату, иногда при входе по логину и паролю.

1 — вход по маркеру временному доступа.
2 — по сертификату.
Вы спецально передоставляете неправильный URL?

Автор: TolikTipaTut1 Перейти к цитате

3. Где можно получить информацию о том, каким образом настраивать конфигурационный файл для Веб-портала ?

Такой инструкции нет. Есть, например вот это https://support.cryptopr…sertifiktov-veb-portl-cr

Автор: TolikTipaTut1 Перейти к цитате

Так же возникли еще вопросы:

4. Для того, чтобы установить ЦР и ЦС на различные компьютеры, потребовалось дважды разворачивать на двух машинах сервера SQL. Обязательно ли это ? Просто при установке КриптоПро УЦ 2.0 установщик не пускает дальше, если не стоит SQL Server.

А базы вы где будете хранить, если SQL не установите?
Если вопрос, про настройку с выделенной БД, тов новой сборке предоставили возможность установки ПО без SQL.

Автор: TolikTipaTut1 Перейти к цитате

5. При попытке выполнения команды certutil2 -cainfo * -config ‘имя-машиныназвание-уц’ вылезает ошибка:
«Certutil2: Не удалось получить фабрику класса COM для удаленного компонента с CLSID {D99E6E73-FC88-11D0-B498-00A0C90312F3} с компьютера win-vpljtdep0mr из-за следующей ошибки: 80070005 win-vpljtdep0mr.»
Как я понял, это означает, что отказано в доступе. Каким образом можно запросить информацию о ЦС из ЦР, если они установлены на разных машинах ?
Загуглил ID D99E6E73-FC88-11D0-B498-00A0C90312F3, нашел некое описание тут, но мне это не особо сильно помогло (

Приложите скриншот, как вы вводите. Должно все работать.

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


Вверх

thanks 1 пользователь поблагодарил Захар Тихонов за этот пост.

TolikTipaTut1

оставлено 09.09.2019(UTC)


Offline

Анатолий Колкочев

 


#3
Оставлено
:

9 сентября 2019 г. 12:10:40(UTC)

TolikTipaTut1

Статус: Активный участник

Группы: Участники

Зарегистрирован: 05.07.2018(UTC)
Сообщений: 350

Сказал(а) «Спасибо»: 37 раз
Поблагодарили: 40 раз в 36 постах

Решил протестировать следующее:

1. Сначала ввел правильные сведения о своем УЦ
2. Затем неправильные
3. Затем попытался вывести type

shot.png (107kb) загружен 22 раз(а).

GithHub: https://github.com/anatolkavassermann/


Вверх

Offline

Захар Тихонов

 


#4
Оставлено
:

9 сентября 2019 г. 12:54:35(UTC)

Захар Тихонов

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 17.08.2015(UTC)
Сообщений: 3,063
Мужчина
Тонга
Откуда: Калининград

Сказал «Спасибо»: 35 раз
Поблагодарили: 548 раз в 525 постах

1 выполнилось успешно.
2 и 3 не правильно вводите.

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


Вверх

Offline

Анатолий Колкочев

 


#5
Оставлено
:

9 сентября 2019 г. 14:44:58(UTC)

TolikTipaTut1

Статус: Активный участник

Группы: Участники

Зарегистрирован: 05.07.2018(UTC)
Сообщений: 350

Сказал(а) «Спасибо»: 37 раз
Поблагодарили: 40 раз в 36 постах

Подскажите пожалуйста, как правильно?

И почему при вводе * не отображается ничего, кроме названия УЦ ?

Отредактировано пользователем 9 сентября 2019 г. 14:45:31(UTC)
 | Причина: Не указана

GithHub: https://github.com/anatolkavassermann/


Вверх

Offline

Захар Тихонов

 


#6
Оставлено
:

10 сентября 2019 г. 18:25:50(UTC)

Захар Тихонов

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 17.08.2015(UTC)
Сообщений: 3,063
Мужчина
Тонга
Откуда: Калининград

Сказал «Спасибо»: 35 раз
Поблагодарили: 548 раз в 525 постах

Автор: TolikTipaTut1 Перейти к цитате

Подскажите пожалуйста, как правильно?

certutil2 -config ‘dnsnamecaООО «»Тест»»‘ -cainfo *

Автор: TolikTipaTut1 Перейти к цитате

И почему при вводе * не отображается ничего, кроме названия УЦ ?

Звездочка не отрабатывает в полной мере. Указывайте что именно вы хотите получить, согласно справке. Исправим поведение в следующей сборке УЦ 2.0.

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


Вверх

thanks 1 пользователь поблагодарил Захар Тихонов за этот пост.

TolikTipaTut1

оставлено 10.09.2019(UTC)


Offline

Анатолий Колкочев

 


#7
Оставлено
:

25 сентября 2019 г. 15:51:02(UTC)

TolikTipaTut1

Статус: Активный участник

Группы: Участники

Зарегистрирован: 05.07.2018(UTC)
Сообщений: 350

Сказал(а) «Спасибо»: 37 раз
Поблагодарили: 40 раз в 36 постах

Здравствуйте.

Разворачиваю 2 ЦС на одной машине. Нужно привязать 2 ЦС к одному ЦР.
Возникает следующее окно:
Snimok1.PNG (14kb) загружен 13 раз(а).

Просто интересно, какие проблемы могут возникнуть, если нажать да или нет ?
Созданы отдельные учетные записи под ЦР и ЦС

Отредактировано пользователем 25 сентября 2019 г. 15:54:08(UTC)
 | Причина: Не указана

GithHub: https://github.com/anatolkavassermann/


Вверх

Offline

Захар Тихонов

 


#8
Оставлено
:

25 сентября 2019 г. 15:54:37(UTC)

Захар Тихонов

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 17.08.2015(UTC)
Сообщений: 3,063
Мужчина
Тонга
Откуда: Калининград

Сказал «Спасибо»: 35 раз
Поблагодарили: 548 раз в 525 постах

Автор: Анатолий Колкочев Перейти к цитате

Здравствуйте.

Разворачиваю 2 ЦС на одной машине. Нужно привязать 2 ЦС к одному ЦР.
Возникает следующее окно:
Snimok1.PNG (14kb) загружен 13 раз(а).

Просто интересно, какие проблемы могут возникнуть, если нажать да или нет ?

Пропадет привязка у другой учетной записи.
Вы либо используйте везде одну и туже учетную запись (для ЦР). Либо разные учетные записи и разные сертификаты.

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


Вверх

Offline

Анатолий Колкочев

 


#9
Оставлено
:

25 сентября 2019 г. 15:57:54(UTC)

TolikTipaTut1

Статус: Активный участник

Группы: Участники

Зарегистрирован: 05.07.2018(UTC)
Сообщений: 350

Сказал(а) «Спасибо»: 37 раз
Поблагодарили: 40 раз в 36 постах

Автор: Захар Тихонов Перейти к цитате

Автор: Анатолий Колкочев Перейти к цитате

Здравствуйте.

Разворачиваю 2 ЦС на одной машине. Нужно привязать 2 ЦС к одному ЦР.
Возникает следующее окно:
Snimok1.PNG (14kb) загружен 13 раз(а).

Просто интересно, какие проблемы могут возникнуть, если нажать да или нет ?

Пропадет привязка у другой учетной записи.
Вы либо используйте везде одну и туже учетную запись (для ЦР). Либо разные учетные записи и разные сертификаты.

Т.е у нас 1 учетка на ЦР. Если нажму сейчас «Да», то все будет нормально работать ?

GithHub: https://github.com/anatolkavassermann/


Вверх

Offline

Захар Тихонов

 


#10
Оставлено
:

25 сентября 2019 г. 16:12:22(UTC)

Захар Тихонов

Статус: Сотрудник

Группы: Участники

Зарегистрирован: 17.08.2015(UTC)
Сообщений: 3,063
Мужчина
Тонга
Откуда: Калининград

Сказал «Спасибо»: 35 раз
Поблагодарили: 548 раз в 525 постах

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

Отредактировано пользователем 25 сентября 2019 г. 16:17:17(UTC)
 | Причина: Не указана

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


Вверх
Пользователи, просматривающие эту тему

Guest

Форум КриптоПро
 » 
КриптоПро УЦ
 » 
КриптоПро УЦ 2.0
 » 
Ряд вопросов по продукту «КриптоПро УЦ 2.0»

Быстрый переход
 

Вы не можете создавать новые темы в этом форуме.

Вы не можете отвечать в этом форуме.

Вы не можете удалять Ваши сообщения в этом форуме.

Вы не можете редактировать Ваши сообщения в этом форуме.

Вы не можете создавать опросы в этом форуме.

Вы не можете голосовать в этом форуме.

I developed a Windows service using C#.NET to generate PDF report. To generate PDF file I am using a third party dll. The application is running in my Windows XP platform. When I deployed the service in Windows Server 2008 64 bit version, I got this error:

Retrieving the COM class factory for
component with CLSID
{46521B1F-0A5B-4871-A4C2-FD5C9276F4C6}
failed due to the following error:
80040154.

I registered the DLL using the regsvr32 command. I able to see this CLSID in the registry. But the problem persists.

What could be the problem?

Randy Levy's user avatar

Randy Levy

22.5k4 gold badges68 silver badges94 bronze badges

asked Jun 24, 2009 at 7:22

gopal's user avatar

2

In VS — project properties — in the Build tab — platform target =X86

answered May 23, 2010 at 16:44

Fabrice MARIANADIN's user avatar

12

I ran into a very similar issue.

I needed to use an old 32-bit DLL within a Web Application that was being developed on a 64-bit machine. I registered the 32-bit DLL into the windowssysWOW64 folder using the version of regsvr32 in that folder.

Calls to the third party DLL worked from unit tests in Visual Studio but failed from the Web Application hosted in IIS on the same machine with the 80040154 error.

Changing the application pool to «Enable 32-Bit Applications» resolved the issue.

keineahnung2345's user avatar

answered Jul 27, 2010 at 21:31

Daniel Ballinger's user avatar

Daniel BallingerDaniel Ballinger

13.1k11 gold badges69 silver badges96 bronze badges

6

It sounds like your service was built against ‘Any CPU’, causing you errors on 64-bit where you are using COM components. You need to build it for x86.

The website is probably running as a 32-bit process which is why it can use the component. Building your solution against x86 will force your service to run as 32-bit.

Ryan Gates's user avatar

Ryan Gates

4,4916 gold badges50 silver badges90 bronze badges

answered Jun 24, 2009 at 8:07

stevehipwell's user avatar

stevehipwellstevehipwell

55.9k6 gold badges44 silver badges61 bronze badges

4

You dont have to configure your project properties platform target X86.
You can also configure the iis options to work with x86 like that

  • Select Application pool
  • Select the pool which your app uses
  • Advanced settings
  • Enable 32 bit applications true

answered Jan 13, 2014 at 9:38

nazim hatipoglu's user avatar

5

If you are looking for a way to make this work without recompiling your Any CPU application, here is another potential workaround:

  1. Locate your COM object GUID under the HKey_Classes_RootWow6432NodeCLSID{GUID}
  2. Once located add a new REG_SZ (string) Value. Name should be AppID and data should be the same COM object GUID you have just searched for
  3. Add a new key under HKey_Classes_RootWow6432NodeAppID. The new key should be called the same as the COM object GUID.
  4. Under the new key you just added, add a new String Value, and call it DllSurrogate. Leave the value empty.
  5. Create a new Key under HKey_Local_MachineSoftwareClassesAppID
    Again the new key should be called the same as the COM object’s GUID. No values are necessary to be added under this key.

I take no credit for the solution, but it worked for us. Check the source link for more information and other comments.

Source: https://techtalk.gfi.com/32bit-object-64bit-environment/

David Guerra's user avatar

answered Jan 11, 2013 at 19:52

Joshua Starner's user avatar

Joshua StarnerJoshua Starner

1,5731 gold badge13 silver badges13 bronze badges

5

The problem is that the server process is 64 bit and the library is 32-bit and it tries to create the COM component in the same process (in-proc server). Either you recompile the server and make it 32-bit or you leave the server unchanged and make the COM component out-of-process. The easiest way to make a COM server out-of-process is to create a COM+ application — Control Panel -> Administrative Tools -> ComponentServices.

Peter Mortensen's user avatar

answered Jun 24, 2009 at 8:17

sharptooth's user avatar

sharptoothsharptooth

167k100 gold badges511 silver badges970 bronze badges

1

I had the same issue, but the other answers only supplied one part of the solution.

The solution is two fold:

Remove the 64bit from the Register.

  • c:windowssystem32regsvr32.exe /U <file.dll>
  • This will not remove references to other copied of the dll in other folders.

or

  • Find the key called HKEY_CLASSES_ROOTCLSID{……}InprocServer32. This key will have the filename of the DLL as its default value.
  • I removed the HKEY_CLASSES_ROOTCLSID{……} folder.

Register it as 32bit:

  • C:WindowsSysWOW64regsvr32 <file.dll>

Registering it as 32bit without removing the 64bit registration does not resolve my issue.

Redoman's user avatar

Redoman

3,0203 gold badges34 silver badges62 bronze badges

answered Jul 25, 2014 at 21:06

Gerhard Powell's user avatar

Gerhard PowellGerhard Powell

5,9355 gold badges47 silver badges59 bronze badges

1

I didn’t change any compile settings.

Just set «Enable 32-bit Application = True» in AppPool Advanced Settings.

It worked for me

answered Oct 20, 2014 at 11:51

Eduardo Xavier's user avatar

1

The solution for windows 2008 server x64 is:

  1. open cmd.exe with Administrator permission.
  2. Copy the dll to the folder C:WindowsSysWOW64
  3. run regsvr32 from C:WindowsSysWOW64
  4. Verify that dll is in registry of Windows.
  5. If you has a .exe x86 that use the dll, the exe must be compiled in x86 mode.
  6. The exe must be installed in folder C:Program Files (x86)

This procedure is valid, it is ok.

answered Apr 13, 2011 at 14:55

Juan's user avatar

JuanJuan

711 silver badge1 bronze badge

Had a related issue with a different, but similar fix:

I had a Windows service project set to «Any-CPU» using a 64-bit DLL. Same error message. Tried a whole bunch of things, but nothing worked. Finally, I went into project Properties -> Build and noticed that project had «Prefer 32-bit» checked. Unchecked this and no more error.

My guess is that the windows service was expecting a 32-bit DLL, and couldn’t find it.

answered Dec 28, 2012 at 2:37

jinushaun's user avatar

jinushaunjinushaun

1361 silver badge2 bronze badges

1

To change to x86:

  1. Create a setup project for your solution.
  2. After you create it, Go to Solution Explorer, right click the setup project.
    • Press Configuration Manager.
    • Click on: «Active Solution Platform» combobox and select New (If there is no x86 displayed)
    • Select from first combo x86 then press OK.
    • rebuild Setup project, then rebuild All the project.

Hendrik Brummermann's user avatar

answered Mar 19, 2011 at 9:08

ShouShouLeb's user avatar

If you are running a website, you could also try to set your application pool to disable 32-bit Applications (under advanced settings of a pool).

answered May 19, 2011 at 17:43

scramblor's user avatar

1

I found that my problem related to the actual registration of the DLL.

  • First run «Regedit.exe» from a CMD prompt (I raised it’s security level to Administrator, «just in case»)
  • then search the Registry (by clicking on «Edit/Find» in the RegEdit menu or by pressing Ctrl+F) for the CLSID showing in the error message which you received regarding the COM class factory. My CLSID was 29AB7A12-B531-450E-8F7A-EA94C2F3C05F.
  • When this key is found, select the sub-key «InProcServer2» under that Hive node and ascertain the filename of the problem DLL in the right hand Regedit frame. showing under «Default».
  • If that file resides in «C:WindowsSysWow64″(such as C:WindowsSysWow64Redemption.dll») then it is important that you use the «C:WindowsSysWow64RegSvr32.exe» file to register that DLL from the command line and NOT the default «C:WindowsSystem32RegSvr32.exe» file.
  • So I ran a CMD prompt (under Administrative level control (just in case this level is need required) and type on the command line (in the case of my DLL):
    C:WindowsSysWow64RegSvr32.exe c:WindowsSysWow64Redemption.dll the press enter.
  • Close the command window (via «Exit» then Restart your computer (always use restart instead of Close Down then start up, since (strangely) Restart perform a thorough shut down and reload of everything whereas «Shut Down» and Power-Up reloads a stored cache of drivers and other values (which may be faulty).
  • Whenever you register a DLL in the future, remember to use the SysWow64 «RegSvr32.exe» for any DLL stored in the C:WindowsSysWow64 folder and this problem c(if it is caused by incorrect registration) should not happen again.

Redoman's user avatar

Redoman

3,0203 gold badges34 silver badges62 bronze badges

answered Nov 30, 2018 at 0:34

Chris Raisin's user avatar

1

In my personal case the issue was fixed searching for the class id in the Windows’s Registry on developer machine (because the issue was thrown in a client PC). This action will be placed into the COM component that causes the issue: an x86 library referenced in my .NET project that was not being registered as OCX/COM for the installer or updater application.

Regards

answered Feb 2, 2017 at 15:09

César Qüeb's user avatar

For anyone using VSTO, the problem for me was a missing reference to the office assembly. It would also appear if you were trying to instantiate certain VSTO objects manually.

answered May 27, 2015 at 16:56

Alex's user avatar

AlexAlex

5,3559 gold badges54 silver badges68 bronze badges

Accepted answer, changing target platform to x86 did not work in may case!

When I have installed crystal report for visual studio and crystal report runtime engine (64-bit) worked in my case!

Some other suggests that, this problem could be resolved by installing both 32-bit and 64-bit runtime engine!

You may give a try!

enter image description here

answered May 29, 2022 at 4:30

Khalid Bin Sarower's user avatar

My problem was that I had the wrong MS Sync FrameWork version (1.0) in my project References. After update to the version 2.1, the error was gone and life is good again.

answered Sep 18, 2015 at 21:42

Phogrammer's user avatar

In my case, I’m producing ms office file like word or excel, I run Win+R and execute dcomcnfg, in the DCOM Config, besides select OFFICE related name item (such as name contains Excel or Word or Office) and Open the properties, select Identity tab and select the interactive user. as this answer,

My error message show CLSID {000209FF-0000-0000-C000-000000000046}, so I have to try to find this specific CLSID in DCOM Config, and it does exsits, and I select it and follow same step set the interactive user, then it works.

answered Feb 21, 2019 at 16:55

yu yang Jian's user avatar

yu yang Jianyu yang Jian

6,6127 gold badges55 silver badges79 bronze badges

clsid, REGDB_E_CLASSNOTREG, ошибка 80040154, 00024500-0000-C000-000000000046

Всем привет!

Мне для тестов нужна одна утилита. Она тестирует определенное оборудование. Поставил ее на новый ноут с Windows 10 Домашняя, 64-бит, версия 10.0.19041. Утилита работает, но спустя какое-то время на одном и том же месте вылетает сообщение:

«Не удалось получить фабрику класса com для компонента с clsid {00024500-0000-C000-000000000046} из-за следующей ошибки: 80040154 Класс не зарегистрирован. (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).»

Причем на другом компе нормально работает.

Попробовал с помощью Regasm.exe зарегистрировать в реестре необходимые записи во всех файлах, которые идут с утилитой (и dll, и exe), но Regasm пишет в каждом файле: «Не зарегистировано ни одного типа».

Куда копать? Уже несколько дней ломаю голову.

Вам это нравится? Поделитесь в социальных сетях!

16 ответов

В VS — свойствах проекта — на вкладке Build — платформа target = X86

Fabrice MARIANADIN
23 май 2010, в 18:28

Поделиться

Похоже, что ваша служба была построена против «Any CPU», вызывая ошибки на 64-битных, когда вы используете COM-компоненты. Вам нужно построить его для x86.

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

stevehipwell
24 июнь 2009, в 09:50

Поделиться

У меня возникла очень похожая проблема.

Мне нужно было использовать старую 32-разрядную DLL в веб-приложении, которое разрабатывалось на 64-битной машине. Я зарегистрировал 32-битную DLL в папку windowssysWOW64, используя версию regsrv32 в этой папке.

Звонки в стороннюю DLL работали с модульных тестов в Visual Studio, но не с веб-приложения, размещенного в IIS, на том же компьютере с ошибкой 80040154.

Изменение пула приложений на «Включить 32-разрядные приложения» разрешило проблему.

Daniel Ballinger
27 июль 2010, в 22:26

Поделиться

Проблема заключается в том, что серверный процесс составляет 64 бит, а библиотека 32-разрядная и пытается создать COM-компонент в том же процессе (внутрипроцессного сервера). Либо вы перекомпилируете сервер и сделаете его 32-разрядным, либо оставите сервер без изменений и внесите COM-компонент вне процесса. Самый простой способ сделать COM-сервер вне процесса — создать приложение COM + — Панель управления → Администрирование → Компонентные службы.

sharptooth
24 июнь 2009, в 08:46

Поделиться

Вам не нужно настраивать целевую платформу X86 для платформы проекта.
Вы также можете настроить параметры iis для работы с x86, как это

  • Выберите пул приложений
  • Выберите пул, который использует ваше приложение.
  • Дополнительные настройки
  • Включить 32-разрядные приложения true

nazim hatipoglu
13 янв. 2014, в 10:04

Поделиться

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

  1. Найдите GUID объекта COM в HKey_Classes_RootWow6432NodeCLSID{GUID}
  2. После размещения добавьте новое значение REG_SZ (string). Имя должно быть AppID, а данные должны совпадать с идентификатором GUID объекта COM, который вы только что искали
  3. Добавьте новый ключ в HKey_Classes_RootWow6432NodeAppID. Новый ключ следует называть так же, как GUID объекта COM.
  4. Под новым ключом, который вы только что добавили, добавьте новое значение строки и назовите его DllSurrogate. Оставьте значение пустым.
  5. Создайте новый ключ под HKey_Local_MachineSoftwareClassesAppIDAgain, новый ключ должен называться так же, как GUID COM-объектов. Никакие значения не нужно добавлять под этим ключом.

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

Источник: https://techtalk.gfi.com/32bit-object-64bit-environment/

Joshua Starner
11 янв. 2013, в 20:16

Поделиться

Я не изменял никаких параметров компиляции.

Просто установите «Включить 32-разрядное приложение = True» в дополнительных настройках AppPool.

Это сработало для меня

Eduardo Xavier
20 окт. 2014, в 13:16

Поделиться

Имел связанную проблему с другим, но похожим исправлением:

У меня был проект службы Windows, установленный на «Any-CPU» с использованием 64-разрядной библиотеки DLL. Такое же сообщение об ошибке. Пробовал целую кучу вещей, но ничего не получилось. Наконец, я вошел в проект Properties → Build и заметил, что проект имел «Предпочитаю 32-бит». Непроверено это и больше ошибок.

Я предполагаю, что служба Windows ожидала 32-разрядную DLL и не могла ее найти.

jinushaun
28 дек. 2012, в 03:13

Поделиться

Решение для сервера Windows Server x64:

  • откройте cmd.exe с правами администратора.
  • Скопируйте dll в папку C:WindowsSysWOW64
  • запустите regsvr32 из C:WindowsSysWOW64
  • Убедитесь, что dll находится в реестре Windows.
  • Если у вас есть .exe x86, который использует DLL, exe должен быть скомпилирован в режиме x86.
  • EXE должен быть установлен в папку C:Program Files (x86)

Эта процедура действительна, это нормально.

Juan
13 апр. 2011, в 15:01

Поделиться

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

Решение в два раза:

Извлеките 64-разрядный из регистра.

  • c:windowssystem32regsvr32.exe/U
  • Это не приведет к удалению ссылок на другие, скопированные из dll в других папках.

или

  • Найдите ключ HKEY_CLASSES_ROOTCLSID {……}InprocServer32. Этот ключ будет иметь имя DLL в качестве значения по умолчанию.
  • Я удалил папку HKEY_CLASSES_ROOTCLSID {……}.

Зарегистрируйте его как 32bit:

  • C:WindowsSysWOW64regsvr32 <file.dll>

Регистрация его как 32-битной без удаления 64-битной регистрации не решит мою проблему.

Gerhard Powell
25 июль 2014, в 22:45

Поделиться

Если вы используете веб-сайт, вы также можете попытаться настроить пул приложений на запрещение 32-разрядных приложений (в дополнительных настройках пула).

scramblor
19 май 2011, в 18:47

Поделиться

Чтобы перейти на x86:

  • Создайте проект для вашего решения.
  • После его создания перейдите в Solution Explorer, щелкните правой кнопкой мыши проект установки.
    • Нажмите Configuration Manager.
    • Нажмите «Комбинация» Активная платформа решений «и выберите» Создать «(если не отображается x86)
    • Выберите сначала комбо x86, затем нажмите OK.
    • перестроить проект установки, а затем перестроить весь проект.

ShouShouLeb
19 март 2011, в 09:44

Поделиться

В моем личном случае проблема была исправлена, ища идентификатор класса в реестре Windows на машине разработчика (потому что проблема была брошена на клиентский ПК). Это действие будет помещено в COM-компонент, который вызывает проблему: библиотека x86, на которую ссылается в моем проекте .NET, который не был зарегистрирован как OCX/COM для приложения-установщика или обновления.

Привет

César Qüeb
02 фев. 2017, в 15:09

Поделиться

Для тех, кто использует VSTO, проблема для меня была отсутствующей ссылкой на сборку office. Это также проявляется, если вы пытаетесь создать экземпляр определенных объектов VSTO вручную.

Alex
27 май 2015, в 17:27

Поделиться

Я обнаружил, что моя проблема связана с фактической регистрацией DLL.

Сначала запустите «Regedit.exe» из приглашения CMD (я поднял его уровень безопасности до «Администратор», на всякий случай «), затем выполните поиск в реестре (нажав» Изменить/найти «в меню RegEdit или нажав Ctrl + F) для CLSID, отображаемого в сообщении об ошибке, которое вы получили относительно фабрики COM-класса. Мой CLSID был 29AB7A12-B531-450E-8F7A-EA94C2F3C05F. Когда этот ключ найден, выберите подменю «InProcServer2» под этим узлом Hive и проверьте имя файла DLL проблемы в правой рамке Regedit. в разделе «По умолчанию». Если этот файл находится в папке «C:WindowsSysWow64» (например, C:WindowsSysWow64Redemption.dll), то важно, чтобы вы использовали файл «C:WindowsSysWow64RegSvr32.exe» для зарегистрируйте эту DLL из командной строки, а НЕ — файл по умолчанию «C:WindowsSystem32RegSvr32.exe». Поэтому я запустил приглашение CMD (в разделе «Административный уровень» (на всякий случай этот уровень необходим) и введите (в случае моей DLL): C:WindowsSysWow64RegSvr32.exe c:WindowsSysWow64Redemption.dll нажмите клавишу ввода. Закройте окно команд (через «Выход», затем перезагрузите компьютер (всегда используйте перезапуск вместо Close Down, затем запустите, поскольку (как ни странно) Restart выполняет тщательное закрытие и перезагрузку всего, тогда как «Shut down» и Power-Up перезагружают сохраненный кэш драйверов и другие значения (что может быть неисправно). вы регистрируете DLL в будущем, не забудьте использовать SysWow64 «RegSvr32.exe» для любой DLL, хранящейся в папке C:WindowsSysWow64, и эта проблема c (если она вызвана я ncorrect registration) не должно повториться.

craisin
30 нояб. 2018, в 00:53

Поделиться

Моя проблема заключалась в том, что у меня была неправильная версия MS Sync FrameWork (1.0) в моем проекте «Ссылки». После обновления до версии 2.1 ошибка исчезла, и жизнь снова стала хорошей.

Phogrammer
18 сен. 2015, в 21:58

Поделиться

Ещё вопросы

  • 0получить указатель даты для отображения текущей даты по умолчанию
  • 0Как отключить функцию .change при загрузке страницы
  • 1Как исправить этот код, чтобы он работал правильно
  • 0конструкторы, вызывающие подкласс
  • 0Хотите показать 3 записи в каждой строке таблицы в виде трех столбцов
  • 0Как импортировать js-файл в mvc
  • 1Коллекционер для самой быстрой минорной gc
  • 1Как я могу использовать AddOrUpdate .NET ConcurrentDictionary с моим пользовательским POCO?
  • 0функция вызова при нажатии кнопки
  • 1Шифрование сообщений чата, хранящихся в базе данных Firebase
  • 0Ошибка перенаправления разрешений в AuthComponent CakePHP
  • 0плагин проверки jquery, отображающий сообщение об ошибке в IE9
  • 1Как пишется импорт пакетов / модулей Python для этой ситуации?
  • 0jQuery jeditable Не удается прочитать свойство «плагин» неопределенного при попытке использовать datetimepicker
  • 0Ошибка вызова MapViewOfFile
  • 1Загрузка файла в asp.net C # — ошибка нулевой ссылки
  • 1Не определено ни одного уникального компонента типа [бла]: ожидаемый единственный соответствующий компонент, но найден 2 [moreBlah]
  • 0хранение глобальных переменных при уничтожении или выгрузке
  • 1NotFoundError: Тензорное имя «Предсказание / InceptionResnetV2 / AuxLogits / Conv2d_1b_1x1 / BatchNorm / beta» не найдено в файлах контрольных точек
  • 1SUM () в SQL для LINQ
  • 0регулярное выражение не соответствует, что я делаю не так?
  • 1Итеративный объект ассоциативного массива
  • 1React-родное приложение для Android, не показывающее локальные картинки / ресурсы
  • 1Недоразумение с задачей, асинхронным ожиданием, примером с SendRequestAsync
  • 0Jquery toggleclass не работает, следуя примеру почти дословно
  • 0Чтение строки из переменной для SQL-запроса
  • 1Как перезапустить приложение Cordova WP8?
  • 0Задание Cron для запуска PHP-скрипта в течение 24 часов, затем остановите его
  • 0Почему мой простой код jQuery не работает с методом .css ()?
  • 0Как изменить значения полей ввода, которые соответствуют значению атрибута данных с Jquery
  • 1Получить общее количество часов, минут с релятивделта
  • 1Как реализовать вычисление числа Пелла в c #
  • 0Получить текст из строки столбца
  • 1Генерация строки на основе регулярных выражений с RandExp
  • 1Сериализация объекта класса с неправильным XML
  • 1Вставка карты в базу данных с использованием jdbctemplate
  • 0В PHP Crawler отсутствуют хиты и пустые хиты
  • 0выпадающий список, который обновляет содержимое div при выборе
  • 0Почему объединение таблиц не работает в symfony2?
  • 0Сбой wglMakeCurrent на x64
  • 1LiveData не обновляется при изменении данных
  • 1Как реализовать объединитель в Hadoop MapReduce?
  • 0AngularJS — Что мне нужно делать вручную, когда я использую ngModelOptions allowInvalid = true?
  • 0почему мой ajax minifier не объединяет файл javascript
  • 1NHibernate / FluentNHibernate только для чтения композитный идентификатор
  • 1NAudio Asio Запись и воспроизведение
  • 1отправить с клиента на сервер и с сервера на клиент в Java
  • 0Отображение man-страницы в C ++
  • 1Отправка писем выполняется асинхронно после возвращения результата просмотра
  • 0Сложный JSON повторяется

  • Ошибка наташи ростовой болконского
  • Ошибка не найден корневой сертификат невозможно проверить цепочку сертификатов
  • Ошибка настройки шлюза видеорегистратор
  • Ошибка не найден драйвер spooge скачать для warhammer 40000 dawn of war
  • Ошибка настройки шасси на ниссан кашкай что это