又是80040154错误

iamshuke 2003-10-14 05:33:29
我的一个COM组件(MFC DLL工程中插入ATL组件),在一台计算机上(XP)注册时报错80040154(没有注册类别),在其他计算机上正常(有XP,也有2000、98)。为什么呀?请大家帮帮忙!!!
...全文
6809 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
xf_lii 2003-10-20
  • 打赏
  • 举报
回复
HRESULT CoCreateInstance(
LPCOLESTR szProgID,
LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL
) throw( );
HRESULT CoCreateInstance(
REFCLSID rclsid,
LPUNKNOWN pUnkOuter = NULL,
DWORD dwClsContext = CLSCTX_ALL
) throw( );

瞧好了,就是它给你返回的0x80040154
xf_lii 2003-10-20
  • 打赏
  • 举报
回复
PRB: Registering ATL Server Causes 0x80040154 Error

--------------------------------------------------------------------------------
The information in this article applies to:

The Microsoft Active Template Library (ATL), versions 2.0, 2.1, 3.0, included with:
Microsoft Visual C++, 32-bit Editions, versions 5.0, 6.0

--------------------------------------------------------------------------------


SYMPTOMS
When you register an ATL server, you might get error 0x80040154 (Class not registered). For DLLs, REGSVR32.exe returns this error. For .exes, the call to _Module::RegisterServer(CComModule::RegisterServer) in _tWinMain() returns this error.



CAUSE
ATL.dll is not installed, or it is not registered.



RESOLUTION
Install ATL.dll in the Windows\System or Winnt\System32 directory and register it using REGSVR32.exe. There are UNICODE and ANSI versions of ATL.dll. Install the appropriate version on the target operating system (that is, UNICODE for Windows NT and ANSI for Windows 95 or Windows 98).

As an alternative, do not use ATL.dll. When you rebuild your ATL server with a build target of ReleaseMinDependency, the code in ATL.dll is statically linked to your project.

Even for a 'Release MinDependency' ATL.dll may need to be shipped.

For additional information, click the article number below to view the article in the Microsoft Knowledge Base:

Q244955 PRB: MinDependency Project May Need to Include Atl.dll



STATUS
This behavior is by design.



MORE INFORMATION
ATL has a registrar component that is used during registration. This component resides in ATL.dll. During registration, the error 0x80040154 is returned from CoCreateInstance() when it fails to create the registrar component.

Location of ATL.DLL in the VC 5.0 CD:
OS\SYSTEM (UNICODE version)
OS\SYSTEM\ANSI (ANSI version)
Location of ATL.DLL in the VC 6.0 CD:
DevStudio\VC\Redist (UNICODE version)
DevStudio\VC\Redist\Ansi (ANSI version)



REFERENCES
MSDN Library: Registrar, ATL Registry Component; Regsvr32, using

(c) Microsoft Corporation 1999, All Rights Reserved. Contributions by Samson Tanrena, Microsoft Corporation.



Additional query words: REGDB_E_CLASSNOTREG

Keywords : kbActiveX kbATL200 kbATL210 kbCOMt kbCtrlCreate kbInprocSvr kbRegistry kbVC500 kbVC600 kbATL300 kbfaq
Version : WINDOWS:2.0,2.1,3.0
Platform : WINDOWS
Issue type : kbprb
Technology : kbvcSearch


Last Reviewed: April 3, 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.


lsl7909 2003-10-20
  • 打赏
  • 举报
回复
UP
天限天空 2003-10-20
  • 打赏
  • 举报
回复
没有注册类别:

1.dll没有注册
2.BEGIN_OBJECT_MAP 是否暴露了需要的 class
3.BEGIN_CATEGORY_MAP 是否正确
。。。
天限天空 2003-10-20
  • 打赏
  • 举报
回复
1。管理元权限
2。程序问题
3。系统问题
iamshuke 2003-10-20
  • 打赏
  • 举报
回复
Lava_sdb(大波)“是不是你组件中用的控件没有注册!!!”:没有,因为我新建一个工程,什么都不干也是这样。

newkey007(无限天空)
1。管理元权限:安装该软件时,登录用户具有管理员权限,其它组件注册正常。
2。程序问题:应该不会,因为在其它计算机上注册正常。
3。系统问题:

xf_lii(浏风)
这段文字我也搜到了,但那台计算机上的ATL.dll明明注册了,再次注册它也能成功。

我想应该是像 warmchang(风滑过的痕迹) 和 newkey007(无限天空) 说的那样,是由目标机器系统自身的组件注册不完整造成的。我查过那台计算机的ATL.dll,版本和其它计算机的一样,并且能正常注册。真不知道因为什么,估计重装一下系统肯定能行。
谢谢各位!!
warmchang 2003-10-20
  • 打赏
  • 举报
回复
这是目标机器系统自身的组件注册不完整造成的!

简单一点说就是ATL.dll在目标机上不存在或没有注册(ATL.dll是一个COM组件,需要注册的)!
GrantGuo 2003-10-20
  • 打赏
  • 举报
回复
好东西收藏
HyChris 2003-10-20
  • 打赏
  • 举报
回复
CoInitialize没调用
iamshuke 2003-10-17
  • 打赏
  • 举报
回复
即使在该计算机上安装VC6,然后创建一个干净的MFC DLL工程,加入ATL,编译后也不能注,错误相同。
shudingbo 2003-10-17
  • 打赏
  • 举报
回复
是不是你组件中用的控件没有注册!!!
————————
regsvr32
或 name.exe /regserver
warmchang 2003-10-17
  • 打赏
  • 举报
回复
这是目标机器系统自身的组件注册不完整造成的!
iamshuke 2003-10-16
  • 打赏
  • 举报
回复
这个DLL需要ATL和MFC支持,它需要的DLL都有。其实如果缺DLL的话,应该报错“找不到需要的DLL”,而80040154错误是“没有注册类别”。
天限天空 2003-10-15
  • 打赏
  • 举报
回复
有可能是 你自己 Dll的问题
也可能是 dll相关联的 dll没有注册等

现放到系统目录 regsvr32 试一下
warmchang 2003-10-15
  • 打赏
  • 举报
回复
用depend看一下你的dll需要什么其他的dll的支持!

并且把你dll中使用的外部类型库文件也拷贝到目标机上注册(如果有的话)。
eagle79 2003-10-14
  • 打赏
  • 举报
回复
gz
Skt32 2003-10-14
  • 打赏
  • 举报
回复
把你的MFC DLL 一起考过去放在同一个目录下
SQLDMO.dll是个好东西,ASP.NET利用它可以实现在线备份、还原数据库等各种功能。近日有客户要求为其在后台添加一个管理数据库的功能。于是就出现了这篇文章。 由于客户的数据库和WEB服务不再同一台服务器,当我们把网站部署在服务器上以后,运行程序,提示如下错误: Retrieving the COM class factory for component with CLSID {10020200-E260-11CF-AE68-00AA004A34D5} failed due to the following error: 80040154. 而客户又不想在这台电脑安装MSSQL,所以我们只需要在没有安装MSSQL的电脑上注册SQLDMO.DLL组件。 第一步:首先将msvcr71.dll, SQLDMO.DLL, Resources\2052\sqldmo.rll,Resources\1033\sqldmo.rll 拷贝到C:\Program Files\Microsoft SQL Server\80\Tools\Binn目录。 下载SQLDMO文件 第二步:打开开始,在运行中输入 regsvr32 "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqldmo.dll" 注册sqldmo.dll。 正常情况下,经过以上两个步骤,网页就应该可以访问了的。 但是我们经过以上两次操作后,访问网页依然提示如下错误: Retrieving the COM class factory for component with CLSID {10020200-E260-11CF-AE68-00AA004A34D5} failed due to the following error: 80070005. 后经过一段时间的检查,我们发现C:\Program Files\文件夹仅有Administrator和System的控制权限,而没有其他任何用户的权限,因此我们为Microsoft SQL Server文件夹增加上Network Service 的读取权限。 至此,问题得到解决!
sql server sqldmo_x86_x64,C#数据库备份还原很好用的.dll,里面有使用方法,引用Interop.SQLDMO.dll后的注意事项。 SQLDMO.dll是个好东西,ASP.NET利用它可以实现在线备份、还原数据库等各种功能。近日有客户要求为其在后台添加一个管理数据库的功能。于是就出现了这篇文章。 由于客户的数据库和WEB服务不再同一台服务器,当我们把网站部署在服务器上以后,运行程序,提示如下错误: Retrieving the COM class factory for component with CLSID {10020200-E260-11CF-AE68-00AA004A34D5} failed due to the following error: 80040154. 而客户又不想在这台电脑安装MSSQL,所以我们只需要在没有安装MSSQL的电脑上注册SQLDMO.DLL组件。 第一步:首先将msvcr71.dll, SQLDMO.DLL, Resources\2052\sqldmo.rll,Resources\1033\sqldmo.rll 拷贝到C:\Program Files\Microsoft SQL Server\80\Tools\Binn目录。 下载SQLDMO文件 第二步:打开开始,在运行中输入 regsvr32 "C:\Program Files\Microsoft SQL Server\80\Tools\Binn\sqldmo.dll" 注册sqldmo.dll。 正常情况下,经过以上两个步骤,网页就应该可以访问了的。 但是我们经过以上两次操作后,访问网页依然提示如下错误: Retrieving the COM class factory for component with CLSID {10020200-E260-11CF-AE68-00AA004A34D5} failed due to the following error: 80070005.后经过一段时间的检查,我们发现C:\Program Files\文件夹仅有Administrator和System的控制权限,而没有其他任何用户的权限,因此我们为Microsoft SQL Server文件夹增加上Network Service 的读取权限。 至此,问题得到解决!

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧