首页 新闻 会员 周边 捐助

关于RTX获取本地登录账号报“检索 COM 类工厂中 CLSID"的错

0
悬赏园豆:20 [待解决问题]

近期对RTX进行二次开发,功能也很简单就是获取本地登录账号在VS上已经成功但是部署到IIS上报错,报错信息如下“检索 COM 类工厂中 CLSID 为 {5EEEA87D-160E-4A2D-8427-B6C333FEDA4D} 的组件时失败,原因是出现以下错误: 80040154。”
我的代码 
RTXAPI api = new RTXAPI();
RTXCRoot root = (RTXCRoot)api.GetObject("KernalRoot");
string account = root.account ;
请各位大神帮忙解决下。谢谢

华心的主页 华心 | 初学一级 | 园豆:182
提问于:2015-09-05 10:39
< >
分享
所有回答(2)
0

1.确认是否注册成功

2.确认目标平台是否是X86

jello chen | 园豆:7336 (大侠五级) | 2015-09-05 11:04

请问是怎么注册的?X86 网站发布的时候需要修改平台X86?但是我改了之后就报错

支持(0) 反对(0) 华心 | 园豆:182 (初学一级) | 2015-09-05 11:07

@华心: 需要regsvr32注册你的dll或ocx

支持(0) 反对(0) jello chen | 园豆:7336 (大侠五级) | 2015-09-05 11:14
0

一是要用 regsvr32 注册 com 组件,二是如果你的 com 组件是 32 位的,需要在 iis 中将应用程序池修改成为 x86。

Launcher | 园豆:45050 (高人七级) | 2015-09-06 09:08

你好我已经注册了,也已经将IIS程序池改为X86,但是报

未将对象引用设置到对象的实例

RTXAPI api = new RTXAPI();

RTXCRoot root = (RTXCRoot)api.GetObject("KernalRoot");

this.ASPxTextBox1.Text = root.Account;

看了下root为null 但是本地VS调试能取到值 

支持(0) 反对(0) 华心 | 园豆:182 (初学一级) | 2015-09-07 08:58

@华心: 用 5EEEA87D-160E-4A2D-8427-B6C333FEDA4D 或者 KernalRoot 去注册表搜索,把搜索到的项都贴出来。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-09-07 09:09

@Launcher: 我现在权限贴图贴不了,我搜了下5EEEA87D-160E-4A2D-8427-B6C333FEDA4D总共有4个,1.RTXAX.AXAPI.1下的CLSID,2.RTXClient.RTXAPI下的CLSID,3.RTXClient.RTXAPI.2下的CLSID,4.{5EEEA87D-160E-4A2D-8427-B6C333FEDA4D}就这4个。

支持(0) 反对(0) 华心 | 园豆:182 (初学一级) | 2015-09-07 11:29

@华心: 你在服务器上打开 exel,使用 vba 的 CreateObject 函数测试下能否创建对象。另外你要告诉我 api.GetObject("KernalRoot") 这句代码创建的是哪个 COM 对象?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-09-07 13:14

@Launcher: 服务器就是我本机,我IIS是在本地发布。VS运行没问题可以获取到账号,但是IIS发布之后就报错。

支持(0) 反对(0) 华心 | 园豆:182 (初学一级) | 2015-09-07 14:00

@华心: 把应用程序池标识修改为“LocalSystem”.

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-09-07 14:09

@Launcher: 没报错了,但是root.Account是空的,检测不到RTX的登录账号,但是我RTX是登着的

支持(0) 反对(0) 华心 | 园豆:182 (初学一级) | 2015-09-07 14:22

@华心: 你的 RTX 是不是进程外 COM 组件?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-09-07 14:30

@Launcher: 不是啊,是进程中的。

支持(0) 反对(0) 华心 | 园豆:182 (初学一级) | 2015-09-07 14:36

@华心: 你会用 VBA 或 C++ 写 COM 客户端程序吗?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-09-07 15:03

@Launcher: 这个真不会呢。。

支持(0) 反对(0) 华心 | 园豆:182 (初学一级) | 2015-09-07 16:00

@Launcher: 会不会跟IIS的版本有关系?

支持(0) 反对(0) 华心 | 园豆:182 (初学一级) | 2015-09-07 16:23

@华心: 一般来说不会。你要会用 VBA 写一段创建组件并获取“account”的代码就比较好了,类似如下:

Dim xlApp As Object   '定义存放引用对象的变量。
  
Set xlApp = CreateObject("excel.application")

xlApp.Visible = True

xlApp.Quit

Set xlApp = Nothing 

或者你能把这个 RTX 的技术架构给描述清楚也行,毕竟你这个玩意儿不像 Office ,不是谁都要用的。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-09-07 16:31

@Launcher: 对RTX的开发不是很了解,我是照着API写的,API是用VB写的

支持(0) 反对(0) 华心 | 园豆:182 (初学一级) | 2015-09-07 17:01

@华心: 是 VB,还是 VB.NET?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-09-07 17:47

@Launcher: VB.NET

支持(0) 反对(0) 华心 | 园豆:182 (初学一级) | 2015-09-09 11:16

@华心: 那你调用的是托管程序集,你把方法 api.GetObject 的源码贴出来看看。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-09-09 11:46

@Launcher: 这个是RTX组件里的源码

支持(0) 反对(0) 华心 | 园豆:182 (初学一级) | 2015-09-11 11:16

@华心: 源码在哪里?你逗我呢?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-09-11 11:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册