win7调用CoCreateInstanceEx返回0x800702e4

西瓜的忧伤 2015-09-18 09:30:27
我是在win7的服务程序里调用CoCreateInstanceEx,来启动本机的com组件,开始这样调用
CoCreateInstanceEx (clsID, NULL, CLSCTX_ALL, NULL, sizeof (arrMultiQI) / sizeof (MULTI_QI), arrMultiQI);
结果返回“0x800702e4,请求的操作需要提升”。
后来参数中设置了tCoServerInfo,
CoCreateInstanceEx (clsID, NULL, CLSCTX_ALL, &tCoServerInfo, sizeof (arrMultiQI) / sizeof (MULTI_QI), arrMultiQI);
返回结果还是一样

上述两种情况在把当前用户的访问权限控制级别降到最低后,就都能执行成功。
所以问题应该是在权限的设置,估计是自己的COSERVERINFO参数没设置对,就大神指点。
...全文
729 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
图灵转世 2015-09-24
  • 打赏
  • 举报
回复
调用CoInitializeSecurity设置一下就可以了
西瓜的忧伤 2015-09-18
  • 打赏
  • 举报
回复
引用 6 楼 worldy 的回复:
试试将 CLSCTX_ALL改成 CLSCTX_INPROC
还是不行,一样的。
西瓜的忧伤 2015-09-18
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
放弃使用服务的方案,改用开机启动进程的方案。
哎,不可能啊,这个是修复原产品的故障,而且直接启动进程调用这个函数返回的还是一样的错误
worldy 2015-09-18
  • 打赏
  • 举报
回复
试试将 CLSCTX_ALL改成 CLSCTX_INPROC
赵4老师 2015-09-18
  • 打赏
  • 举报
回复
放弃使用服务的方案,改用开机启动进程的方案。
西瓜的忧伤 2015-09-18
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
设置服务的属性、登录、允许服务与桌面交互 ?
还是不行啊
赵4老师 2015-09-18
  • 打赏
  • 举报
回复
设置服务的属性、登录、允许服务与桌面交互 ?
西瓜的忧伤 2015-09-18
  • 打赏
  • 举报
回复
引用 1 楼 oyljerry 的回复:
服务程序权限最高,你是不是应该用一个用户态程序来调用com组件
现在是我修改原来的程序,然后那个程序已经写成了windows的服务程序。而且我在cmd中执行该服务的exe程序,也是返回同样的错误。
oyljerry 2015-09-18
  • 打赏
  • 举报
回复
服务程序权限最高,你是不是应该用一个用户态程序来调用com组件
ole_master 2015-09-18
  • 打赏
  • 举报
回复
引用 12 楼 xzpsy 的回复:
[quote=引用 10 楼 ole_master 的回复:] 调用CoInitializeSecurity设置一下就可以了
我这样调用的 CoInitializeSecurity( NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL ); 返回0x80010119 在整理或打乱任何接口之前,必须初始化安全机制。一旦初始化,不能再作更改。 [/quote] 可以的,用IClientSecurity::SetBlanket
西瓜的忧伤 2015-09-18
  • 打赏
  • 举报
回复
引用 10 楼 ole_master 的回复:
调用CoInitializeSecurity设置一下就可以了
我这样调用的 CoInitializeSecurity( NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_DEFAULT, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, EOAC_NONE, NULL ); 返回0x80010119 在整理或打乱任何接口之前,必须初始化安全机制。一旦初始化,不能再作更改。
ole_master 2015-09-18
  • 打赏
  • 举报
回复
调用CoInitializeSecurity设置一下就可以了
因文件超过20M不能上传,所以拆分为两个文件分次上传 第1章 COM背景知识 1.1 COM的起源 1.1.1 软件业面临的挑战 1.1.2 传统解决方案 1.1.3 面向对象程序设计方法 1.1.4 最终解决方案:组件软件 1.1.5 面向对象的组件模型——COM 1.2 COM的发展历程 1.2.1 COM以前的对象技术:DDE、OLE 1、VBX控件 1.2.2 COM首次亮相:OLE2 1.2.3 Microsoft拥抱Internet:ActiveX 1.2.4 更多的新名词:Windows DNA和COM+ 1.2.5 远程对象:ORBs和DCOM 1.2.6 COM的最新版本:COM+ 1.3 COM技术现状 1.3.1 COM与CORBA 1.3.2 COM与Enterprise Java Beans 1.3.3 Windows之外的COM 小结 第2章 从C++到COM 2.1 C++客户重用C++对象——例程DB 2.1.1 C++对象 2.1.2 客户程序 2.2 将C++对象移进DLL中——例程DB_cppdll 2.2.1 成员函数的引出 2.2.2 内存分配 2.2.3 Unicode/ASCII兼容 2.2.4 例程实现 2.2.4.1 修改接口文件 2.2.4.2 修改对象程序 2.2.4.3 修改客户程序 2.3 C++对象使用抽象基类——例程DB_vtbl 2.3.1 问题:私有数据成员被暴露 2.3.2 解决方案:抽象基类 2.3.2.1 什么是抽象基类(Abstract Base Class) 2.3.2.2 实现秘诀:虚函数(Virtual Functions) 2.3.3 使用抽象基类 2.3.4 例程实现 2.3.4.1 修改接口文件 2.3.4.2 修改对象程序 2.3.4.3 修改客户程序 2.4 改由COM库装载C++对象——例程dbalmostcom 2.4.1 COM库 2.4.2 对象创建的标准入口点 2.4.3 标准对象创建API 2.4.4 标准对象注册 2.4.5 例程实现 2.4.5.1 修改接口文件 2.4.5.2 修改对象程序 2.4.5.3 修改客户程序 2.5 将C++对象变成COM对象 2.5.1 引用计数 2.5.2 多接口 2.5.3 IUnknown接口 2.5.4 标准类厂接口:IClassFactory 2.5.5 对象代码的动态卸载 2.5.6 自动注册 2.5.7 例程实现 2.5.7.1 修改接口文件 2.5.7.2 修改对象程序 2.5.7.3 修改客户程序 2.6 为COM对象添加多接口支持 2.6.1 多接口 2.6.2 DEFINE_GUID 2.6.3 例程实现 2.6.3.1 修改接口文件 2.6.3.2 修改对象程序 2.6.3.3 修改客户程序 小结 第3章 COM基础知识 3.1 对象与接口 3.1.1 COM对象 3.1.2 COM接口 3.1.3 IUnknown接口 3.1.3.1 生存期控制:AddRef和Release 3.1.3.2 接口查询:QueryInterface 3.1.4 全球唯一标识符GUID 3.1.5 COM接口定义 3.1.6 接口描述语言IDL 3.2 COM应用模型 3.2.1 客户/服务器模型 3.2.2 进程内组件 3.2.3 进程外组件 3.2.4 COM库 3.2.5 HRESULT返回值 3.2.6 COM与注册表 3.3 COM组件 3.3.1 实现类厂对象 3.3.2 类厂对象的创建 3.3.3 实现自动注册 3.3.4 实现自动卸载 3.4 COM客户 3.4.1 COM对象创建函数 3.4.1.1 CoGetClassObject 3.4.1.2 CoCreateInstance 3.4.1.3 CoCreateInstanceEx 3.4.2 如何调用进程内组件 3.4.3 COM客户调用进程外组件 3.5 进一步认识COM 3.5.1 可重用机制:包容和聚合 3.5.2 进程透明性 3.5.3 安全性机制 小结 第4章 COM扩展技术 4.1 可连接对象机制 4.1.1 客户、接收器与可连接对象 4.1.1.1 接收器 4.1.1.2 可连接对象 4.1.1.3 客户 4.1.2 实现可连接对象 4.1.3 实现接收器 4.1.4 建立接收器与连接点的连接 4.1.5 获得出接口的类型信息 4.2 结构化存储 4.2.1 什么叫结构化存储和复合文件 4.2.2 存储对象和IStorage接口 4.2.2.1 IStorage接口 4.2.2.2 获得IStorage指针 4.2.2.3 释放STATSTG内存 4.2.2.4 枚举存储对象中的元

3,245

社区成员

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

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