1

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

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

每个回调中的代码都访问浏览器对象的属性——它们都访问位置 url(这是第一个访问的唯一内容)。

我们的问题是,在尝试访问此属性时,这些函数中会出现间歇性的“Permission Denied”(0x800A0046)错误(这几乎是所有这些函数中从该对象访问的第一件事)。它并不总是发生,它有时会在某些回调中发生,但在其他回调中不会发生——通常第一个或三个回调会正常工作,但随后会出错。

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

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

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

我的想法是,某个对象在短时间内以某种方式被破坏或某些东西(或者可能是用线程做的事情),这导致了错误。我不是 COM 人,所以我不知道如何测试/调试它。

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

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

4

0 回答 0