CoCreateInstance返回-2147221164?

GK_2014 2015-04-14 03:15:02
先贴代码吧:
 	
const CLSID CDOMDocument40Class::m_ClsId = {0x88d969c0, 0xf192, 0x11d4, {0xa6, 0x5f, 0x00, 0x40, 0x96, 0x32, 0x51, 0xe5}};
IXMLDOMDocument2 *p = NULL;
HRESULT hr = CoInitialize(NULL); //初始化COM
if (SUCCEEDED(hr)) {
hr = CoCreateInstance(m_ClsId, NULL, CLSCTX_ALL, __uuidof(IXMLDOMDocument2), (LPVOID*)&p);
if (hr != S_OK)
AfxThrowComException(hr);
}
else {
AfxThrowComException(hr);
}


在我电脑上可以创建组件,换了好几台其他电脑,函数CoCreateInstance返回-2147221164,注册表找不到m_ClsId 。是不是系统设置的问题?
...全文
524 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
I_ask_who 2015-04-17
  • 打赏
  • 举报
回复
引用 10 楼 GK_2014 的回复:
[quote=引用 7 楼 worldy 的回复:] 开始菜单-运行 输入 regsvr32 “DLL或ocx全路径名称” 注意路径名称加上引号,否则,路径有空格的时候会有问题
我把动态库放到了c:/WINDOWS/system32目录下,输入指令后提示已加载,但是找不到DLLRegisterServer入口点 [/quote] 源代码中(.c或者.cpp文件)没有定义DllRegisterServer,或者没有写相应的.def文件
GK_2014 2015-04-16
  • 打赏
  • 举报
回复
引用 9 楼 wyx100 的回复:
cmd 里面,先注册 对应的控件要到其他机器上先注册,regsvr32
我把动态库放到了c:/WINDOWS/system32目录下,输入指令后提示已加载,但是找不到DLLRegisterServer入口点
GK_2014 2015-04-16
  • 打赏
  • 举报
回复
引用 7 楼 worldy 的回复:
开始菜单-运行
输入 regsvr32 “DLL或ocx全路径名称”

注意路径名称加上引号,否则,路径有空格的时候会有问题


我把动态库放到了c:/WINDOWS/system32目录下,输入指令后提示已加载,但是找不到DLLRegisterServer入口点
wyx100 2015-04-15
  • 打赏
  • 举报
回复
cmd 里面,先注册 对应的控件要到其他机器上先注册,regsvr32
oyljerry 2015-04-15
  • 打赏
  • 举报
回复
引用 4 楼 GK_2014 的回复:
[quote=引用 1 楼 lx624909677 的回复:] http://blog.csdn.net/huigll/article/details/1459765 还有要给给msbn3.dll注册 参考下下面的代码: CComPtr<IMMTGenerator> tGenerator; const IID IID_IMMTGENERATOR = {0xC753602D,0x67AA,0x4B91,{0x97,0xD3,0x19,0xA7,0xE6,0x34,0x0D,0x70}}; CLSID clsid; hr = CLSIDFromProgID( L"Generator.MMTGenerator" , &clsid ); if(FAILED(hr)) { AfxMessageBox("Error: CLSIDFromProgID([Generator.MMTGenerator])");// return; } hr = CoCreateInstance (clsid, 0, CLSCTX_INPROC_SERVER, IID_IMMTGENERATOR, (void**)&tGenerator); if (SUCCEEDED(hr)) { }
您好! 1、我查了下其他电脑上HKEY_CLASSES_ROOT的权限和我电脑上的一样; 2、为什么要注册msbn3.dll呢?我电脑没有注册也可以创建组建呀?[/quote] 你的电脑可能其他程序帮你注册了
worldy 2015-04-15
  • 打赏
  • 举报
回复
开始菜单-运行 输入 regsvr32 “DLL或ocx全路径名称” 注意路径名称加上引号,否则,路径有空格的时候会有问题
GK_2014 2015-04-15
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
Your control is not registered correctly. The "Logged On User" -- usually the anonymous account -- does not have adequate permissions to run the control. In many cases the anonymous login account (IUSR_<machine>) does not have appropriate permissions on certain Directories/Files or the specific component and its dependencies. While less frequent, if the registry permissions for certain keys are not set correctly, it causes the control to fail to initialize. The "Everyone" group has been removed from having READ permissions on certain registry keys due to the mistaken notion that Everyone means ANYONE, when in actuality it simply means all validated users on the Domain/machine. In the case of a file database, such as Access or FoxPro, the directory containing the database files does not provide sufficient permissions for the authenticated user.
不太懂怎么注册哦,求指导
GK_2014 2015-04-15
  • 打赏
  • 举报
回复
引用 2 楼 oyljerry 的回复:
对应的控件要到其他机器上先注册,regsvr32


您好!
我程序里是想调用封装了xml的动态库来创建xml文件,对应的clsid在我电脑的注册表可以找到,如下图:

但是其他电脑就没有注册XML DOM Document 4.0,我想问题就出在这里吧?怎么注册呢?求解答……
GK_2014 2015-04-15
  • 打赏
  • 举报
回复
引用 1 楼 lx624909677 的回复:
http://blog.csdn.net/huigll/article/details/1459765 还有要给给msbn3.dll注册 参考下下面的代码: CComPtr<IMMTGenerator> tGenerator; const IID IID_IMMTGENERATOR = {0xC753602D,0x67AA,0x4B91,{0x97,0xD3,0x19,0xA7,0xE6,0x34,0x0D,0x70}}; CLSID clsid; hr = CLSIDFromProgID( L"Generator.MMTGenerator" , &clsid ); if(FAILED(hr)) { AfxMessageBox("Error: CLSIDFromProgID([Generator.MMTGenerator])");// return; } hr = CoCreateInstance (clsid, 0, CLSCTX_INPROC_SERVER, IID_IMMTGENERATOR, (void**)&tGenerator); if (SUCCEEDED(hr)) { }
您好! 1、我查了下其他电脑上HKEY_CLASSES_ROOT的权限和我电脑上的一样; 2、为什么要注册msbn3.dll呢?我电脑没有注册也可以创建组建呀?
worldy 2015-04-14
  • 打赏
  • 举报
回复
Your control is not registered correctly. The "Logged On User" -- usually the anonymous account -- does not have adequate permissions to run the control. In many cases the anonymous login account (IUSR_<machine>) does not have appropriate permissions on certain Directories/Files or the specific component and its dependencies. While less frequent, if the registry permissions for certain keys are not set correctly, it causes the control to fail to initialize. The "Everyone" group has been removed from having READ permissions on certain registry keys due to the mistaken notion that Everyone means ANYONE, when in actuality it simply means all validated users on the Domain/machine. In the case of a file database, such as Access or FoxPro, the directory containing the database files does not provide sufficient permissions for the authenticated user.
oyljerry 2015-04-14
  • 打赏
  • 举报
回复
对应的控件要到其他机器上先注册,regsvr32
lx624909677 2015-04-14
  • 打赏
  • 举报
回复
http://blog.csdn.net/huigll/article/details/1459765 还有要给给msbn3.dll注册 参考下下面的代码: CComPtr<IMMTGenerator> tGenerator; const IID IID_IMMTGENERATOR = {0xC753602D,0x67AA,0x4B91,{0x97,0xD3,0x19,0xA7,0xE6,0x34,0x0D,0x70}}; CLSID clsid; hr = CLSIDFromProgID( L"Generator.MMTGenerator" , &clsid ); if(FAILED(hr)) { AfxMessageBox("Error: CLSIDFromProgID([Generator.MMTGenerator])");// return; } hr = CoCreateInstance (clsid, 0, CLSCTX_INPROC_SERVER, IID_IMMTGENERATOR, (void**)&tGenerator); if (SUCCEEDED(hr)) { }
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《COM技术内幕——微软组件对象模型》一书的随书源代码 COM技术内幕——微软组件对象模型 基本信息 原书名: Inside COM: Microsoft's Component Object Model with Cdrom 原出版社: Microsoft Press 作者: (美)Dale Rogerson 译者: 杨秀章 丛书名: 微软版权图书 出版社:清华大学出版社 ISBN:730203320X 上架时间:2001-10-11 出版日期:1999 年3月 页码:293 版次:1-1 所属分类:计算机 > 软件与程序设计 > COM/DCOM/ATL/COM+ 内容简介    微软公司的组件对象模型(COM)作为一种重要的工具已崭露头角,它是微软迈向分布式计算的基础。不论现在还是将来,它都是定制应用程序的一种强大的方法。并且它是OLE和ActiveX 的基础。COM帮助你理解未来的程序开发技术,而这本书帮助你理解COM。在本书中你将发现:构建优美的COM组件的清晰、简单、实用的规则;COM是如何易学易用,特虽是对那些熟练掌握C++ 的人;循序渐进地介绍COM设计;以代码形式给出的大量实例。    《COM技术内幕》适合于中、高级C++程序员;COM、ActiveX和OLE程序员;对组件设计感兴趣的研究人员;以及那些当COM移植到UNIX、MVS和其他环境时想要使用到COM的程序员。 编辑推荐    微软公司的组件对象模型(COM)作为一种重要的工具已崭露头角,它是微软迈向分布式计算的基础。不论现在还是将来,它都是定制应用程序的一种强大的方法。并且它是OLE和ActiveX 的基础。COM帮助你理解未来的程序开发技术,而这本书帮助你理解COM。在本书中你将发现:构建优美的COM组件的清晰、简单、实用的规则;COM是如何易学易用,特虽是对那些熟练掌握C++ 的人;循序渐进地介绍COM设计;以代码形式给出的大量实例。 目录 封面 -17 扉页 -16 版权 -15 译者前言 -14 目录 -13 引言 -6 第1章 组件 1 1.1 使用组件的优点 2 1.1.1 应用程序的定制 2 1.1.2 组件库 3 1.1.3 分布式组件 3 1.2 对组件的需求 4 1.2.1 动态链接 4 1.2.2 信息封装 5 1.3 COM 6 1.3.1 COM组件是…… 7 1.3.2 COM不是…… 7 1.3.3 COM库 8 1.3.4 COM方法 8 1.3.5 COM超越了用户的需要 8 1.4 本章小结 9 第2章 接口 11 2.1 接口的作用 11 2.1.1 可复用应用程序架构 12 2.1.2 COM接口的其他优点 13 2.2 COM接口的实现 13 2.2.1 编码约定 14 2.2.2 一个完整的例子 15 2.2.3 非接口通信 18 2.2.4 实现细节 18 2.3 接口理论:第二部分 20 2.3.1 接口的不变性 20 2.3.2 多态 20 2.4 接口的背后 21 2.4.1 虚拟函数表 21 2.4.2 vtbl指针及实例数据 23 2.4.3 多重实例 24 2.4.4 不同的类,相同的vtbl 24 2.5 本章小结 26 第3章 QueryInterface函数 27 3.1 接口查询 28 3.1.1 关于IUnknown 28 3.1.2 IUnknown指针的获取 29 3.1.3 关于QueryInterface 29 3.1.4 QueryInterface的使用 30 3.1.5 QueryInterface的实现 31 3.1.6 关于类型转换 32 3.1.7 一个完整的例子 35 3.2 关于QueryInterface的实现规则 40 3.2.1 同一IUnknown 40 3.3.2 客户可以获取曾经得到过的接口 41 3.2.3 可以再次获取已经拥有的接口 41 3.2.4 客户可以从任何接口返回到起始接口 42 3.2.5 若能够从某接口获取某特定接口,则从任意接口都将能够获取此接口 42 3.3 QueryInterface定义了组件 43 3.3.1 接口集 44 3.4 新版本组件的处理 44 3.4.1 何时需要建立一个新版本 46 3.4.2 不同版本接口的命名 46 3.4.3 隐含

3,245

社区成员

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

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