如何检测组策略是否禁用了IE的企业模式?

时间:2014-12-05 01:57:41

标签: internet-explorer active-directory gpo

我正在为需要IE在企业模式(EM)中运行的应用程序编写安装程序。 (请不要回答解释为什么我不应该这样做。)可以通过Active Directory组策略禁用EM(如果这导致了术语错误,请提供建议)。在这种情况下,用户无法启用企业模式。如何在安装程序中检测到此状态,以便我可以警告用户与其IT管理员联系以请求他们启用EM?我假设可以读取组策略,但代码示例会很棒。

3 个答案:

答案 0 :(得分:0)

您可以检查注册表中的值,因为您还可以通过注册表启用企业模式。虽然如果禁用EM,我还没有验证“Sitelist”中的值是否为空白:

请检查:

HKEY_CURRENT_USER \ Software \ Policies \ Microsoft \ Internet Explorer \ Main \ EnterpriseMode。

HKEY_LOCAL_MACHINE \ Software \ Policies \ Microsoft \ Internet Explorer \ Main \ EnterpriseMode。

一些有用的链接 - 启用企业模式并使用站点列表:

http://msdn.microsoft.com/en-us/library/dn640699.aspx

答案 1 :(得分:0)

我们发现的一个答案是,gpresult程序可以在客户端计算机上运行,​​以生成组策略的报告。我们的安装程序可能会运行此程序并解析其输出以查找设置。当然,如果gpresult可以读取组策略,gpresult调用的Windows API很可能是我的安装程序可以直接调用的。如果有人知道这些电话是什么,请回复。

答案 2 :(得分:0)

我做了一些搜索,以了解我们如何以编程方式执行gpresult所做的事情。这是一个意识流,因为我报告了我发现它的顺序:

gpresult实用程序用于报告RSoP(策略的结果集)。顾名思义,这给出了所有策略设置的结果。使用GPRESULT工具执行策略查询的结果集可以找到一个很好的摘要。它说:

If you are a consultant who works on other people’s networks though, you don’t usually have the luxury of being intimately familiar with the network’s configuration. If you get called in to diagnose a problem on a client’s network, you may be able to determine that the problem is group policy related in a matter of minutes. However, it can take days to figure out exactly which group policy element is causing the problem because the group policy can be so complex.

所以最重要的是,我们可能会更好地使用gpresult的输出来检测企业模式组策略,而不是编写一堆代码来执行此操作。另一方面,似乎有直接查询RSoP的API:如何使用WMI通过Windows Scripting Host(WSH)检索本地计算机上当前应用的GPO。虽然本文编写的代码是在WSH中运行的,但我相信类似的东西可以在C ++代码中完成。此示例将API返回的字典结构转储到控制台。我们的代码可能只是检查字典中的单个值。或许它必须在字典中找到某个设置。如果找到,则检查其值。如果未找到,则可以假设没有组策略集。

有一种方法可以在C ++中进行RSoP查询。起点似乎是IGPM :: GetRSOP。