「グループポリシー基本設定」をご存知ですか?

Windows Server 2008 から搭載されている新機能で、従来のグループポリシーの機能拡張という位置づけで、主にクライアント PC に対する設定を中央から一括して実施する仕組みです。グループポリシーでは実現が難しかった「かゆい所に手が届く」設定が可能になっています。例えばこんなことができます。

◇ Windows の設定

[アプリケーション] 拡張機能: アプリケーションの設定を構成します。
[ドライブ マップ] 拡張機能: マップされたドライブの作成、変更、または削除と、すべてのドライブの表示設定の構成を行います。
[環境] 拡張機能: 環境変数を作成、変更、または削除します。
[ファイル] 拡張機能: ファイルを作成、置換、削除したり、ファイル属性を変更したりします。
[フォルダー] 拡張機能: フォルダーを作成、変更、または削除します。
[INI ファイル] 拡張機能: 構成設定ファイル (.ini) またはセットアップ情報ファイル (.inf) のセクションまたはプロパティを追加、置換、削除します。
[ネットワーク共有] 拡張機能: 共有を作成、変更、または削除 (共有解除) します。
[レジストリ] 拡張機能: レジストリ設定をコピーし、他のコンピューターに設定を適用します。レジストリ設定を作成、置換、または削除します。
[ショートカット] 拡張機能: ショートカットを作成、変更、または削除します。

◇ コントロール パネルの設定

[データ ソース] 拡張機能: ODBC (Open Database Connectivity) データ ソース名を作成、変更、または削除します。
[デバイス] 拡張機能: ハードウェアデバイスまたはデバイス クラスを有効または無効にします。
[フォルダー オプション] 拡張機能: フォルダーオプションを構成します。[プログラムから開く] に表示される、ファイル名拡張子への関連付けを作成、変更、または削除します。また、ファイルの種類に関連付けるファイル拡張子を作成、変更、または削除します。
[インターネットの設定] 拡張機能: ユーザーによる構成が可能なインターネット設定を変更します。
[ローカル ユーザーとグループ] 拡張機能: ローカルユーザーとグループを作成、変更、または削除します。
[ネットワーク オプション] 拡張機能: 仮想プライベートネットワーク (VPN) 接続またはダイヤルアップ ネットワーク接続を作成、変更、または削除します。
[電源オプション] 拡張機能: 電源オプションの変更と、電源設定の作成、変更、または削除を行います。
[プリンター] 拡張機能: TCP/IP、共有、およびローカルのプリンター接続を作成、変更、または削除します。
[地域のオプション] 拡張機能: 地域のオプションを変更します。
[タスク] 拡張機能: スケジュールされたタスクまたは即時実行タスクを作成、変更、または削除します。
[サービス] 拡張機能: サービスを変更します。
[スタート メニュー] 拡張機能: [スタート] メニュー オプションを変更します。

いかがでしょう?従来はログオンスクリプトでゴリゴリ書いて実現していた設定が、グループポリシー基本設定を使えば、UI からスマートに、かつ確実に、クライアント PC に対して一括適用することができます。

また、グループポリシーとは挙動の異なる適用の仕方をすることができます。それは、設定を一度だけ適用したり、適用対象外になった時に設定を削除できるという点です。

例えば、

・全端末にインストールされているアプリケーションの設定ファイルが更新されたので、一度だけ、新しいアプリケーションの設定ファイルを一斉展開したい。

・営業部のユーザー用端末には営業用共有ドライブを自動的にマウントしたい。でも、異動したら強制的にマウントを解除したい。

こんな要件も、グループポリシー基本設定の機能で実現できます。クライアント PC には初期設定をしておきたいけれど、後はエンドユーザーの自由に任せたい or 徹底的に管理したい、といった要件を満たすことが可能になります。

グループポリシー基本設定の対応 OS は、設定を管理する側(グループポリシーの編集)が Windows Server 2008 / 2008 R2 / Vista / 7(Vista / 7 は別途 RSAT のインストールが必要)、適用を受けるクライアントは、Vista / 7 / 2008 / 2008 R2 が標準対応、XP / 2003 はクライアントモジュールの追加(ダウンロード提供)によって対応可能です。また、設定はグループポリシーの基盤を利用して適用されますので、Active Directory ドメイン環境が必要です。

さて。

今回はこのグループポリシー基本設定を使って、こんなシナリオを実現する方法をご紹介します。

社長の有り難いメッセージが掲載された社内のポータルサイトを、ユーザーが自分の PC にログオンしたら、一度だけブラウザを立ち上げて表示させたい。

真っ先に思いつくのは、

・ブラウザのスタートページを社内のポータルサイトに変えてしまう
・ログオンスクリプトでブラウザを立ち上げ、サイトを開く

などの方法ですが、それぞれ問題があり、グループポリシーで一括適用するのは難しいです。いずれも、一度だけという要件に引っ掛かります。元々スタートページにポータルサイトを設定しているならいざ知らず、勝手にスタートページを書き換えたとあってはユーザーから非難轟々です。

一方、ログオンスクリプトなら、ごにょごにょプログラムを書いて、一度実行したらフラグ代わりに適当なファイルを作って、次回起動時はそのファイルが存在していたら起動しない、などといった仕掛けを作ることもできそうですが、一度でいいのに毎回無駄にログオンスクリプトは走りますし、クライアントに余計なゴミは残したくないですね。そもそもファイルを作成するための実行権限の問題などもあります。こんな方法ですと、運用開始後にそこかしこの PC でトラブルが発生し、メッセージを読んでもらえずにカンカンの社長の顔が目に見えるようです。スマートではありませんね。

そこで登場するのが、グループポリシー基本設定と、RunOnce レジストリキーの仕組みを使う方法です。

以下にその手順をご紹介します(Active Directory ドメイン環境と、グループポリシー基本設定が使用可能な Windows Server 2008 サーバーが存在することが前提になります)。

※ スクリーンショットは全て 2008 R2 のものですが、2008 でも同様です。

まず、管理コンソール「グループポリシーの管理」を開き、編集対象のグループポリシーを選択して右クリックし、[編集] をクリックします。

image

「グループ ポリシー管理エディター」が起動しますので、左側ペインのツリーを [ユーザーの構成] - [基本設定] - [Windows の設定] - [レジストリ] と展開します。

image

右側のペインで右クリックし、[新規作成] - [レジストリ項目] を選択します。

image

「新しいレジストリのプロパティ」ダイアログの [全般] タブで、以下のように入力します。

アクション: 更新
ハイブ: HKEY_CURRENT_USER
キーのパス: Software\Microsoft\Windows\CurrentVersion\RunOnce
値の名前: <任意の名前>
(※ ここでは「LaunchIE」と入力します)
値の種類: REG_SZ
値のデータ: iexplore.exe <表示したい URL>
(※ ここで入力したコマンドが、ユーザーのログオン時に実行されます)

image 

[共通] タブをクリックし、[1 度だけ適用し、再適用しない] のチェックを入れ(ここがミソです)、[OK] をクリックします。

 

image

ちなみにここで、[項目レベルで対象化する] にチェックを入れ、[対象化] ボタンをクリックすると、この設定を適用するユーザーや端末の条件を詳細に定義することができます。

これで、グループポリシー適用対象の端末に対して、1 回だけ RunOnce レジストリキーに値が登録される設定が一つ作成されました。

image

設定はここまでです。あとはドメインに参加しているクライアントから、ドメインユーザーでデスクトップにログオンしてみると、Windows が RunOnce レジストリキーに登録されているエントリを読み込み、IE が立ち上がって指定されたページが表示されます。そしてもう一度ログオンし直してみると、今度は IE は起動しません。

image 

これで社長もニンマリです。OS 以外にソフトウェアを追加導入することなく、これを実現した貴方の評価も急上昇です。

RunOnce レジストリキーは、通常はプログラムのセットアップ時に用いられる仕組みで、OS 起動時やユーザーのログオン時に、一度だけ実行したい処理を登録することができます。OS は RunOnce レジストリキーに登録されている値をコマンドとして実行して、その値を自動的に削除します(ですので実行は 1 度きり = RunOnce です)。

プログラムをインストールすると、自動的に PC が再起動して、再起動後インストールの続きが始まることがありますよね。あの仕組みを実現しているのが RunOnce です。

RunOnce キーに登録する値は、名前を変えることにより複数定義することができますので(このシナリオ例では「LaunchIE」と設定しました)、インストールプログラム等とバッティングしないような名前で値を作成すれば、他の RunOnce を利用するプログラムに干渉することなく、安全に IE を起動できます。

今回はグループポリシー基本設定の機能を利用して、1 度だけ RunOnce レジストリにコマンドを登録することで、1 度だけの IE 起動を実現しました。ちなみに、端末に対する一括した任意のレジストリ操作は、グループポリシー基本設定で容易にできるようになりました。

地味ですが、確実に端末の運用管理を楽にして、管理コストを削減できる機能だと思いませんか?「Windows Server は 2000 や 2003 で十分。新機能なんて使わないよ!」と思っている方もいらっしゃるかもしれませんが、2008 / 2008 R2 では、今まで大変な思いをして実現していた機能や、そもそもできなかった機能なども含め、サーバーの基本的な機能も着実にレベルアップしています。是非一度ご評価いただければと思います。

◇ グループポリシー基本設定に関する情報

グループ ポリシーを使用した基本設定の展開(TechNet)
【Management】グループポリシー基本設定 の「適用できなくなった場合はこの項目を削除する」って? (フィールド SE あがりの安納です)

◇ RunOnce に関する情報

レジストリの RunOnce キーの定義(サポート技術情報)
[INFO] Run、RunOnce、RunServices、RunServicesOnce レジストリ キーと [スタートアップ] フォルダの関係(サポート技術情報)
Windows 秘話: RunOnce 待ち(TechNet Magazine)


マイクロソフト株式会社
山崎 淳一