IE をエンタープライズ モード (EM) で実行する必要があるアプリケーションのインストーラーを作成しています。(そうすべきではない理由を説明して回答しないでください。) EM は、Active Directory グループ ポリシーによって無効にすることができます (用語が間違っている場合は、アドバイスしてください)。この場合、ユーザーはエンタープライズ モードを有効にできません。EM を有効にするように IT 管理者に連絡するようユーザーに警告できるように、インストーラーでこの状態を検出するにはどうすればよいですか? グループ ポリシーは読み取れると思いますが、コード サンプルがあると便利です。
3 に答える
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 からの出力を使用して Enterprise Mode グループ ポリシーを検出する方が、大量のコードを記述するよりもはるかに優れているということです。一方、RSoP を直接照会する API があるようです: Windows Scripting Host (WSH) 経由で WMI を使用して、ローカル コンピューターに現在適用されている GPO を取得する方法。この記事のコードは WSH で実行するように書かれていますが、C++ コードでも同様のことができると思います。このサンプルは、API によって返されたディクショナリ構造をコンソールにダンプします。私たちのコードはおそらく、辞書内の単一の値をチェックするだけです。または、辞書で特定の設定を見つける必要があるかもしれません。見つかった場合、その値が調べられます。見つからない場合は、グループ ポリシーが設定されていないと見なすことができます。
C++ で RSoP クエリを実行する方法があります。開始点は IGPM::GetRSOP のようです。
私たちが見つけた答えの 1 つは、gpresult プログラムをクライアント マシンで実行して、グループ ポリシーのレポートを作成できることです。おそらく、インストーラーはこのプログラムを実行し、その出力を解析して設定を見つけることができます。もちろん、gpresult がグループ ポリシーを読み取ることができる場合、インストーラーが直接呼び出すことができる gpresult によって呼び出される Windows API が存在する可能性があります。これらの呼び出しが何であるかを知っている人は、返信してください。
レジストリを介してエンタープライズ モードを有効にすることもできるため、レジストリの値を確認できる場合があります。EMが無効になっている場合、「Sitelist」の値が空白になるかどうかは確認していませんが:
チェックしてください:
HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Main\EnterpriseMode.
また
HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Internet Explorer\Main\EnterpriseMode.
便利なリンク - エンタープライズ モードを有効にして、サイト リストを使用します。