【问题标题】:IE "Enhanced Protected Mode (122)": What is the meaning of the "122"?IE“增强保护模式(122)”:“122”是什么意思?
【发布时间】:2019-02-01 00:10:00
【问题描述】:

我正在为用 C# 编写的 Internet Explorer 开发浏览器帮助对象 (BHO)。我使用 BeforeNavigate 事件来获取调用的 URL 并将其保存到局部变量中。对于每个选项卡,都会生成一个新的 BHO 实例。这意味着每个选项卡都有自己的 BHO,而 BHO 又拥有自己的局部变量。在被新的 URL 覆盖之前,我通过显示带有先前调用的 URL(局部变量的值)的 MessageBox 来检查这一点。

string myUrl = "";

void BeforeNavigate( string URL, ... )
{
    System.Windows.Forms.MessageBox.Show( myUrl );
    myUrl = URL.ToString();
}

但在某些情况下,尽管之前调用了 URL,但局部变量为空。我调查了 IE 设置,发现这种行为是由 IE 的区域提升保护引起的。对于区域本地 Intranet 和受信任站点,保护模式被禁用,而对区域 Internet 和受限站点启用保护模式。

例如,当调用 intranet.com 时,然后在同一选项卡中调用 internet.com,我希望 MessageBox 在调用 internet.com 时显示 intranet.com。但是会显示一个空字符串。我猜想调用 internet.com 会激活此选项卡的保护模式,从而生成 BHO 的新实例。 MessageBox 现在将显示新 BHO 实例的变量值。旧 BHO 的变量值丢失了。

如果为区域本地 Intranet 和受信任站点启用保护模式,则 BHO 行为正确。

这个问题我已经在IE's zone elevation protection interferences functionality of BHO 中描述过。

当我启用 EPM(增强保护模式)时,即使在所有区域中都启用了保护模式,也会出现同样的问题。奇怪的是,如果我从区域local intranettrusted sites 中明确删除测试的 URL。 (注意“保护模式”和“增强保护模式”是不同的。)

在网站的上下文菜单中,菜单项properties 提供有关网站执行模式的信息。对于 Internet 中的网站,显示模式 Internet | Protected Mode: Enhanced 表示该网站是在 EPM 中执行的。

我发现属于 Intranet 的网站是在“特殊”EPM 中执行的。对于 Intranet 网站,显示模式 Local Intranet | Protected Mode: Enhanced (122)。从区域中删除测试的 URL 后,会显示 Internet | Protected Mode: Enhanced (122)。我试图找出122 的含义,但找不到任何有用的信息。似乎在同一选项卡中调用Internet | Protected Mode: Enhanced (122) 网站和Internet | Protected Mode: Enhanced 网站会触发边界交叉,从而导致相同的问题。

谁能提供有关122 含义的信息?

任何帮助将不胜感激,谢谢!

【问题讨论】:

  • BHO 是一个 DLL。 DLL 中的所有全局变量都特定于加载 DLL 的进程。如果你想在iexplore.exe 的所有实例之间共享一个通用的全局值,你就必须要有创意,尤其是在某些受保护的模式下运行时,你可以使用沙箱转义的 Win32 API 集非常有限。跨度>

标签: c# internet-explorer bho


【解决方案1】:

在我看来,它只是一个内部序列号。

有关增强保护模式的详细信息,请参阅以下 Internet Explorer 博客文章:

Enhanced Protected Mode

Understanding Enhanced Protected Mode

【讨论】:

  • 我已经阅读了几篇文章,还有你提到的那些。我想知道如何解决这个问题,或者至少是什么原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 2013-07-09
  • 2020-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多