在JScript中访问COM对象属性会导致“权限被拒绝”错误

时间:2012-11-01 18:35:31

标签: com permission-denied jscript

在我工作的地方,我们有一个围绕IE的专有C ++包装器,我们将它作为COM对象引入JScript脚本。

我们将这个对象的一些事件连接到一些JScript回调。特别是网页“DocumentLoad”事件有4个回调函数连接到它。

每个回调中的代码访问浏览器对象的属性 - 所有这些都访问位置URL(这是第一个访问的唯一内容)。

我们的问题是在尝试访问此属性时,这些函数中存在间歇性的“权限被拒绝”(0x800A0046)错误(这几乎是从这个对象中访问的所有内容)。它并不总是会发生,它有时会发生在某些回调中但不会发生在其他回调中 - 通常是第一个回调或三个回调功能正常,但其余的错误。

我不认为这是一个实际的权限被拒绝错误,我在阅读时通常会尝试访问具有正确权限的文件或在尝试访问某个属性时在浏览器内脚本中来自单独域的iFrame中的页面。这些都不是正在发生的事情,但却找不到它可能是什么。我可以看到它可能与被拒绝的浏览器内权限松散相关,但为什么会出现间歇性?

我发现Windows事件日志(在Windows 7上)中记录了权限被拒绝错误时的其他错误;它们如下:

  • 0x80040155 - 未注册的接口
  • 0xC0000005 - 访问冲突

我的想法是,不知何故,一个物体在短时间内被破坏或者某些东西(或者某些东西可能会被线程化)并导致错误。我不是一个COM人,但我不知道如何进行测试/调试。

Windows 7(32位)和Windows XP(32位,SPK2?)上发生权限被拒绝错误

任何和所有帮助表示赞赏!

0 个答案:

没有答案