Windows XP Professionalをワークグループ構成で使っています。利用者毎に環境を制御しようと思って、gpedit.mscを起動してローカルポリシーを設定してみたのですが、設定を変更すると、Administratorを含むすべてのアカウントに対して設定が適用されてしまうため困っています。
Active Directoryを利用すればアカウント単位の制御ができるのはわかっているのですが、ワークグループ構成で何とかならないでしょうか。
Windows 2000以降の機能であるローカルポリシーでは、基本的にアカウント単位での制御はできません。ただしローカルポリシーが格納されているファイルのアクセス権を制御することで、特定のアカウントに対するローカルポリシーの適用を抑止することは可能ですので、以下その方法について説明しましょう。
ユーザーのローカルポリシーを作成すると、%SystemRoot%\System32\GroupPolicy\User
以下に、図1のようにしてRegistry.polという名称のファイルが作成されます。
図1: 作成されたローカルポリシーファイル
このファイルは、通常Authenticated Usersに読み取り権限が設定されているため、事実上どのアカウントからでも参照することが可能ですが、ここで例えばAdministratorに対して図2のように拒否のアクセス権を明示的に設定することで、Administratorに対してローカルポリシーの適用を抑止することが可能です。この方法はWindows 2000 Professionalにも適用可能です。
図2: アクセス拒否の設定
なおこの設定を行なうと、ローカルポリシーファイルへのアクセスを拒否したアカウント(上記の例ではAdministrator)からはローカルポリシーの参照や編集もできなくなってしまいますので、編集する時だけ一時的にアクセス権を与えるのといった運用が必要になります。
このように、トリッキーな方法を利用することで、特定のアカウントに対するローカルポリシーの適用を除外することはできますが、それでももともとの要望にある利用者毎の環境の制御はできません。どうしても利用者毎の環境の制御が必要な場合は、Windows NT互換の機能として残されているシステムポリシーを利用するとよいでしょう。
システムポリシーはpoledit.exeというツールで作成します。[ファイル]-[新規作成]で新しいシステムポリシーの作成した上で、[編集]-[ユーザーの追加]([グループの追加])で、図3のように任意のアカウントやグループをシステムポリシーに追加して、そのアカウント固有の設定を行なっていくことが可能です。
図3: システムポリシーの設定
ユーザ毎の設定を追加可能
作成したら任意のファイル名(通常は拡張子POL)で保存しておきます。作成したシステムポリシーファイルを有効にするには、
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Update
にある以下のレジストリを設定して再起動してください。
REG_DWORD: | UpdateMode: | 2 |
REG_SZ: | NetworkPath: | <システムポリシーファイルのフルパス名> |
システムポリシーには、Windows 2000/XPで追加された機能に関する設定は含まれていませんが、ADMファイルというテキスト形式で記述されたシステムポリシーのテンプレートファイルを作成することで、レジストリで設定可能な任意の設定を追加することが可能ですので、Windows 2000/XPにも対応することが可能です。作成したADMファイルは[オプション] - [ポリシーテンプレート]を選択すると現れる図4の画面から読み込みます。
図4: ADMファイルの読み込み
このようにシステムポリシーを利用することで、ワークグループ構成のWindows 2000/XP Professionalでも利用者毎の環境構築を実現することが可能になります。関連する技術情報として、「JP274478: NT 4.0 ドメイン/ワークグループ内の Professional クライアントへのグループポリシー」も参照して下さい。
このように、ローカルポリシーの代わりに利用可能なシステムポリシーですが、ローカルポリシーの場合は、通常の場合設定を無効にすると該当の設定はローカルポリシー適用前の設定に戻るのに対し、システムポリシーの場合は、システムポリシーを適用して設定を変更してしまうと、その後システムポリシーを無効にしても該当の設定は元に戻りません。この点には注意して下さい。