2012/12/13

GPO でレジストリをいじる

事の発端は IE9。気がついたらなにやら調子が悪くなり、調べたらどうやら GPUを使ったハードウェアレンダリングが有効になっていた。

VMware の仮想マシンは 3Dサポート機能を有効にすることで OpenGL, DirectX といったGPUを有効活用するAPIが利用可能になるのだが、私の Windows7 ではこれを無効にしていたため、存在しないGPU相手になにやらやっていて、タイムアウトが起こるまで不調が続いたという感じだ。

対処については以下の通り。インターネットオプションの詳細より無効化できる。
http://support.microsoft.com/kb/2618121/ja

が、問題はこの設定は GPO で簡単には配布できないということだ。

http://technet.microsoft.com/ja-jp/library/gg699401.aspx より
Internet Explorer 9 には、ハードウェア アクセラレーション (GPU レンダリング) を無効にするポリシーは用意されていません。必要な場合、グループ ポリシーの基本設定を使用してハードウェア アクセラレーションを無効にできます。HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main キーでレジストリ値 UseSWRender を設定します。グループ ポリシーの基本設定の詳細については、「グループ ポリシー ツールによるブラウザー設定の管理」を参照してください。
「グループポリシーの基本設定」でできるとあるが、こちらで動いてる ActiceDirectory のドメインコントローラが Windows Server 2003 のためか、「Internet Explorer のメンテナンス」などのメニューにそれを見つけることができなかった。

あまり時間もなかったのと、ユーザへ個別に .reg を配ったり .bat ファイルを実行させるのも気が引けたので、adm テンプレートを作って強制的に適用するようにした。

; IE9 HW Accesll
CLASS USER
CATEGORY !!IE9SWRender
KEYNAME "Software\Microsoft\Internet Explorer\Main"
POLICY !!IE9SWRenderConfig
    EXPLAIN !!IE9SWRenderExplain
    VALUENAME "UseSWRender"
    VALUEON NUMERIC 1
    VALUEOFF NUMERIC 0
END POLICY
END CATEGORY
[Strings]
IE9SWRender="IE9 SW Rendering Configuration"
IE9SWRenderConfig="IE9 SW Rendering Configuration"
IE9SWRenderExplain="Use SW Render insted GPU"


作ったのは上記の通り。adm ファイルの書式については解説は不要だろう。

要するに「HKCU\Software\Microsoft\Internet Explorer\Main」の「UseSWRender」の値を DWORDで1か0かを設定するというシンプルなものだ。

ただし、実はこれではうまくいかない。というか表示されない。

諸々試したが、Software\Policies 以下でないパスへの操作については、GPOエディタでデフォルトでは表示されないようだ。

この通り定義したはずの POLICY項目が表示されない

これについては、右クリックして「表示」から「フィルタ...」を選択、


「完全に管理されているポリシー設定のみを表示します」のチェックを外すと見える。


ただし、表示されるようにこのポリシーは適切に管理されるとは限らない。
たとえば「無効」にも「未設定」にもせずにこの adm を削除したりすると、レジストリの中に設定がそのままごみとして残ってしまう恐れがある。


分かって使う分には問題ないが、あまりお勧めはできないこと、わざと表示していないことを察するべきだろう。