开发者

On a server works on the other it does not. ¿API dll isn't registered? ErrNo: 80040154

开发者 https://www.devze.com 2023-03-25 22:18 出处:网络
I have installed on a 32bit server a IBM Rational ClearQuest and made a process which uses the api that they provide.

I have installed on a 32bit server a IBM Rational ClearQuest and made a process which uses the api that they provide. And there works perfectly.

When I migrate this to anothe开发者_运维知识库r server (64bit) it throws

Retrieving the COM class factory for component with CLSID {94773112-72E8-11D0-A42E-00A024DED613} failed due to the following error: 80040154.

I went to the registry to see what was there, (in both servers) and in the first one, there were some keys regarding where this API dll is placed that in the 64bit server weren't. (Also there were a key about the framework)

I did a research on the web to see this.

My options then (at least the only ones I could think of) where:

  • Uninstall CQ and Reinstall it (Which I did and after some installation and uninstallation crashes of the product It was back up without any changes to my actual problem)
  • Register the dlls I needed with regsrv32 (didn't work)
  • Add the keys myself (also didn't work)

I've seen today this cscript, here using Windows Script Host but it does not work with c#.

Supposely c# .Net2008 when the compiler says "Any" machine it clearly means both... but just in case I've changed it to 64bit exclusively...

And guess what... yes you are right... that didn't work also.

I hope you can help me. Thanks in advance.-


Edit:

  • InstallUtil on C:\Windows\Microsoft.Net\v2.050727\ on the base dll didn't work
  • asp_regiis (Which I've tried just in case) didn't work


The fact that you couldn't find the registry key is of course the source of the problem. You are likely to find it back in HKLM\Software\Wow6432Node\Classes\CLSID, the home for 32-bit COM servers. Assuming they are properly installed.

Which means that you cannot allow the jitter to generate 64-bit code. A 64-bit process cannot execute any 32-bit code. Project + Properties, Build tab, Platform target = x86 is the simple fix.


The problem was Windows Server 2008 UAT Protection

Searching on the web I've found that when I've tried to do a registration it was throwing error 5 Access Denied

This is the solution

Go to Control Panel --> User Accounts --> "Tune User Account Control on or off". Turn off "Use User Account Control (UAC) to help protect your computer", and restart the computer. Run "the process with the API" again and it worked.

0

精彩评论

暂无评论...
验证码 换一张
取 消