Internet explorer 本地系统帐户的IE保护模式

Internet explorer 本地系统帐户的IE保护模式,internet-explorer,selenium,protected-mode,Internet Explorer,Selenium,Protected Mode,我有一个Windows服务,在Windows 7操作系统上运行Team City构建代理 此代理触发NUnit测试,该测试使用Selenium IE web驱动程序执行一系列测试 要使Selenium IE web驱动程序工作,所有区域的保护模式都需要设置为相同的值(打开或关闭保护模式) 问题是本地系统帐户的默认设置无效(某些区域在保护模式下运行,其他区域则不在保护模式下运行) 谁能告诉我如何更改所有用户或本地系统帐户用户的保护模式设置 您可以尝试禁用UAC,这也将为系统中的所有用户禁用保护模式

我有一个Windows服务,在Windows 7操作系统上运行Team City构建代理

此代理触发NUnit测试,该测试使用Selenium IE web驱动程序执行一系列测试

要使Selenium IE web驱动程序工作,所有区域的保护模式都需要设置为相同的值(打开或关闭保护模式)

问题是本地系统帐户的默认设置无效(某些区域在保护模式下运行,其他区域则不在保护模式下运行)


谁能告诉我如何更改所有用户或本地系统帐户用户的保护模式设置

您可以尝试禁用UAC,这也将为系统中的所有用户禁用保护模式。

以下是解决方案(为了实现这一点,我访问了互联网的每个角落):

启动
RegEdit
并转到此键:

HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones
在我的计算机(Windows 7)上,本地系统帐户是
S-1-5-18
。这可能对所有版本的Windows都是一样的,但我不知道这一点

在该注册表项中,还有五个键1、2、3、4和5,每个键表示一个区域

对于每个区域,如果存在名为“2500”的DWORD值,则将其值设置为0以关闭保护模式。请注意,如果它不存在,则不必添加它

值“2500”应控制勾选框“启用保护模式”

更新(来自anon用户):

执行相同操作的图形方法是确保“交互式服务检测”服务(UI0Detect)正在运行(请注意,Windows 8/2012及更高版本需要正确设置
HKLM\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServices
注册表项才能显示弹出窗口)获取
psexec
并运行

psexec -si 0 "C:\Program Files\Internet Explorer\iexplore.exe"
在弹出窗口中,单击查看消息,然后在Internet Explorer中切换屏幕后,转到工具->Internet选项|安全并检查每个区域的安全级别


快乐的用户界面测试

IE WebDriver上有一个设置,告诉它忽略保护模式设置。从设置的名称来看,它可能会引入一些“不稳定性”,但我对这种方法没有任何问题:

var options = new InternetExplorerOptions();
// avoid the "Protected Mode must be set to the same value (enabled or disabled) for all zones" error
options.IntroduceInstabilityByIgnoringProtectedModeSettings = true;
return new InternetExplorerDriver(options);

解决方案的最佳描述如下

谢谢你的建议。我试过这个,在这种情况下似乎没有效果。注意:我通过“控制面板->系统和安全”访问的“用户帐户控制设置”窗口禁用了它。你解决过这个问题吗?哇!好极了,我几乎放弃了寻找解决方案。看起来是的,实际上本地系统帐户是S-1-5-18,测试在本地帐户下运行。实际上,我现在开始做的是使用Chrome Webdriver。这样就消除了保护区问题,而且速度更快。IE兼容性问题通常必须在别处解决。Mikael-太棒了!!!糟糕的是,这并不那么明显。我尝试了组策略,但无效。这是不正确的,DWORD值为0表示关闭,DWORD值为3表示打开。如果它不存在,则会返回Windows的默认值,该默认值对于Internet和受限站点区域都是打开的,除非您正在使用IE7,在这种情况下,它对于本地Intranet区域也是打开的。对于Windows 10,2500的值应为3,而不是0。我在UI中更改了它,然后检查了注册表,当我关闭它时,它正在将其设置为3。这也意味着您需要将其添加到所有区域,因为默认值为0,这是启用的。有关为什么这是一个坏主意的更多信息,请参阅。@Godders-是的,我已经阅读了那篇文章。关键的一点是“驱动程序需要一个解决方案,用于那些由于机器过度锁定而无法设置IE设置的人。这就是功能设置的目的。”在我的工作环境中,IE确实被锁定,我们的测试人员无法设置所需的保护模式设置。因此,黑客的使用。但我同意除非必要,否则不应该使用它!