【发布时间】:2013-09-14 03:30:36
【问题描述】:
调用 sysWOW64 中注册的 32 位 COM 组件方法失败并显示错误消息:
“方法 OleVarToLsVal 中的类型不匹配,发现未知,未知 预计”
它的 win7 64 位,但 Notes 客户端默认安装为 32 位应用程序。代码如下:
dim c as Variant
dim n as Variant
set c = createobject("MSWC.counters")
n = c.Get("xx")
在调试调用时,对象已设置并可使用“isObject(c)”进行测试,(尽管您无法在 LotusScript 调试中详细检查每个方法/属性)。
该方法应该返回一个原始长。我试过设置 n 一样长,clng-ing 值,cstr-ing 值,参数,strconv 参数,使用变量作为参数,都无济于事。
WScript VBS 主机(在 syswow64 中)运行的代码完全相同。
那么,有人知道吗:
- Notes 9 COM 值编组是否适用于任何组件?
- Notes 9 COM 是否设置为识别“wow64”备用 32 位注册表
- 我可以检查注册表中某处的一些与 COM 相关的编组设置(如果有,它们是什么/在哪里)?
- 是否有一些设置告诉 Notes 使用 32 位组件(如 IIS 32 位兼容性选项)
- 我需要在主操作系统中做些什么或可以做些什么来“重定向或配置”COM
- 还是 Notes 又坏了,没人关心?
任何帮助表示赞赏 - 谢谢。
【问题讨论】:
-
已尝试在 sysWOW64 中重新注册应用程序:regsvr32 "C:\Program Files (x86)\IBM\Lotus\Notes\nlsxbe.dll" - 没有变化 - 并尝试在 32 位上运行 Notes9操作系统。仍然没有运气(但 VBS 再次在那台机器上工作)。
-
我对Notes一无所知;但是,错误消息强烈表明错误在 Notes 中,而不是在 COM 中。在您提出的各种问题中:#3 很可能是“否”,因为 VBScript 托管工作。 #4 也很可能是“否”; AFAIK Notes 只有 32 位,而 IIS 默认为 64 位。 #5 也很可能是“否”;遗憾的是,它倾向于将#6 设为“是”。
-
@Eric - 感谢您的总结 - 倾向于同意 - 目前,仍然没有找到解决方案。
标签: com activex lotus-notes lotus-domino lotusscript