COM中CreateInstance返回ERROR_NO_TOKEN是什么意思?

Sonic2007 2008-10-09 09:11:53


CreateInstance(__uuiodf(Class));

这个老是返回1008, ERROR_NO_TOKEN, 但是class的id已经注册了, 在注册表中能看到, 不应该找不到, 另外, 如果关了UAC就没有错误, 开了UAC就不行. 我已经提升了进程的权限到管理员, 但是还是不好使, 是不是这个线程的权限问题?
...全文
1016 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sys0002 2008-10-10
  • 打赏
  • 举报
回复
1)添加manifest当然是在你的调用程序里加,这样你的调用程序是高权限的,它调用CoCreateInstance启动的DCOM服务当然也就是高权限了。如果你的DCOM里面没有进行高权限的操作,可以不用manifest,这样普通权限的程序也可以启动它。
2)CoCreateInstanceAsAdmin的使用是在Vista下普通权限启动高权限的DCOM服务的一种方法,也就是在你调用CoCreateInstanceAsAdmin时操作系统自动弹出UAC框。
Sonic2007 2008-10-10
  • 打赏
  • 举报
回复
谢楼上老大,
首先是我的Manifest文件中已经是Administrator了
关于CoCreateInstanceAsAdmin, 我会研究. 但是我用CreateElevatedInstance这种方法是不行的,错误还是同样的问题, 用提升权限的方法来CreateInstance还是有错误.

如果我先把需要启动的exe文件通过run as administrator启动起来, 再通过CreateInstance, 这样就可以调用该exe中的接口,
如果不这样做的话, 而是直接通过CreateInstance来启动这个exe组件, 就是会说ERROR_NO_TOKEN

这到底是为什么呢? 我怀疑是Vista的UAC在CreateInstance的时候, 把我的exe组件看成了是不信任的user组件了, 所以CreateInstance 不能把该进程外组件启动起来, 但是我看了manifest中, 已经是requireAdministrator了.(该exe的图标有Vista中的盾的标识, 是不是说明不是admin的呢?)

进程外组件调用具体的机制我还不是很清楚, 我当前的进程是具有administrator权限的, 但是CreateInstance就不能调用一个进程外的exe组件

望各位大牛指教, 感谢再三
sys0002 2008-10-10
  • 打赏
  • 举报
回复
权限问题

1)添加Manifest使用管理员权限就可以了,因为添加manifes使用管理员权限与你直接右键Run as administrator是一致
2)使用CoCreateInstanceAsAdmin
具体参考:http://blogs.msdn.com/vistacompatteam/archive/2006/09/28/CoCreateInstanceAsAdmin-or-CreateElevatedComObject-sample.aspx
Sonic2007 2008-10-10
  • 打赏
  • 举报
回复
怎么没人回答? 都不知道? 这问题有这么难么
Sonic2007 2008-10-10
  • 打赏
  • 举报
回复
我的调用程序是一个dll, 也是一个COM组件, 在当前的运行进程中它已经是高权限的了, 但是通过CreateInstance调用另一个exe就不行了, 相当于调用进程外的组件, 不明白到底是怎么回事....唉
Sonic2007 2008-10-09
  • 打赏
  • 举报
回复
mainfest中看到的也是Administrator
主要是我调用的是进程外的组件,在一个dll中调用的另外一个exe,
如果我先把exe用Run as administrator, 然后再调用就是可以的,
但是直接CreateInstance调用就不行, 不清楚具体怎么回事
wangweixing2000 2008-10-09
  • 打赏
  • 举报
回复
你当前进程权限如果提升了,线程应该没有问题:)
你的确认你的mainfest中提升了权限

3,245

社区成员

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

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