【问题标题】:Calling COM component method from IBM Notes 9 fails从 IBM Notes 9 调用 COM 组件方法失败
【发布时间】: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 中)运行的代码完全相同。

那么,有人知道吗:

  1. Notes 9 COM 值编组是否适用于任何组件?
  2. Notes 9 COM 是否设置为识别“wow64”备用 32 位注册表
  3. 我可以检查注册表中某处的一些与 COM 相关的编组设置(如果有,它们是什么/在哪里)?
  4. 是否有一些设置告诉 Notes 使用 32 位组件(如 IIS 32 位兼容性选项)
  5. 我需要在主操作系统中做些什么或可以做些什么来“重定向或配置”COM
  6. 还是 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


【解决方案1】:

解决此问题的最简单且可能最有效的方法是与 IBM 建立 PMR。他们应该能够很快回答这个问题。

【讨论】:

    【解决方案2】:

    嗯,7 年过去了(而且已经过时了!)只是为任何寻求答案的人提供的更新......需要一些 Notes 设置,但并非所有 COM/Active-X 组件或数据类型都受 LotusScript 支持,因此即使 Notes 设置正确,您仍然可能无法访问/使用任何特定组件或组件中的某些方法。

    必须允许用户在服务器文档的安全部分的“签署或运行不受限制的方法和操作:”中运行不受限制的代理/代码。

    默认情况下,Notes 客户端执行控制列表 ('ECL') 必须允许访问“外部程序”或允许代码签名者访问。如果未授予外部访问权限,则 ECL 警告框将要求用户继续。

    如果您尝试执行不受支持的方法或不受支持的数据类型,则 LotusScript 或 COM/Active-X 错误报告将发出更多错误。 'CreateObject' 的 Notes 开发人员帮助文件提供了有关不受支持的数据类型的更多详细信息:

    LotusScript 不支持按名称而不是按它们出现的顺序来识别 OLE 方法或属性的参数,LotusScript 也不支持单独使用 OLE 名称(没有显式属性)来识别默认属性. 对于通过引用传递的布尔、字节和日期类型的 OLE 方法和属性的参数未指定结果。 LotusScript 不支持这些数据类型。

    依靠“默认属性”来访问默认方法是一个常见的错误,需要您特别注意组件的细节。很容易假设该组件不工作,但实际上您只是没有正确使用它。

    对此进行测试的一种方法是尝试打开所有 Windows 机器(可能是其他机器?)上可用的公共对象,可能是“FileSystemObject”(FSO)或 VbScript“regExp”组件。如果这些有效,您可以在此基础上再接再厉。为您的客户端安装正确获取 32/64 位注册是测试/正确的另一个要素。

    对于我的问题,我怀疑我使用了不受支持的方法或数据类型,并且偶尔在 Notes 中使用了 COM/Active-X,但总的来说一切正常。

    【讨论】:

      猜你喜欢
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-06
      • 1970-01-01
      相关资源
      最近更新 更多