Active Directoryのグループポリシーで設定できる項目がどのレジストリなのか調べてみた

Active Directoryのグループポリシーで設定できる項目は、それに対応するレジストリがある。
ということは、そのレジストリを調べて適切な値をセットすれば、グループポリシーを使わずともその効果が得られる。

ということで、調べる方法をまとめておく。

「そんなの『窓の手』使えばいいじゃん。」という場合は、使えばいいじゃん。(^^)

おおまかな話

グループポリシーで設定できる項目は、管理用テンプレート(ADMファイル)に記述されている。
このファイルは、ドメインコントローラのC:\WINDOWS\INF内にある。
調べたい項目の文字列をキーワードにしてADMファイルを検索し、そこに書かれている内容を読むことで、該当するレジストリのキーやセットすべき値を調べることができる。

レジストリの名前を調べる

  • Active Directoryユーザとコンピュータを起動してグループポリシーの設定画面を表示させ、調べたい項目の正しい文字列を調べる。
    • 以降では、「ユーザの構成」の「管理用テンプレート」の「タスクバーと[スタート]メニュー」の「[スタート]メニューから[マイ ドキュメント]を削除する」について調べるとする。
  • コマンドプロンプトを起動して、カレントディレクトリを、c:\windows\infに変更する。
> cd \windows\inf
    • ちなみに、グループポリシーで設定できる項目は、c:\windows\infフォルダの*.admというファイルに記述されている。詳しくは、Windows Serverのヘルプで「管理用テンプレート」または「ADMファイル」を参照。
  • 調べたい項目の正しい文字列の一部をもとに…この例ではマイ ドキュメントを選んでみる…、次のコマンドでその項目がどのADMファイルに含まれているか調べる。
> find "マイ ドキュメント" *.adm
    • この例ではsystem.admに含まれていることが分かった。
  • 前手順で調べたファイルを、メモ帳で開く。
> notepad system.adm
  • 開いたADMファイルで、調べたい項目が記述されている場所を探す。
    • [CTRL]+[F]で検索
    • この例では、次の行に書かれていた。
NoSMMyDocuments="[スタート] メニューから [マイ ドキュメント] を削除する"
  • 前手順で調べた、調べたい項目に関連付けられている英文項目名をもとに…この例ではNoSMMyDocuments…、同じファイルの中でこの項目のレジストリ情報が記述されている場所を探す。
    • [CTRL]+[F]で検索
    • この例では、次のような記述がされていた。
CLASS USER

CATEGORY !!StartMenu
	#if version >= 4
	EXPLAIN !!StartMenu_Help
	#endif

	KEYNAME "Software\Microsoft\Windows\CurrentVersion\Policies\Explorer"
(省略)
	POLICY !!NoSMMyDocuments
		#if version >= 4
		SUPPORTED !!SUPPORTED_Win2k
		#endif

		EXPLAIN !!NoSMMyDocuments_Help
		VALUENAME "NoSMMyDocs"
	END POLICY
  • 前手順で調べた情報をもとに、次のようなレジストリキーの名前を得る。
    • この例では…
CLASS USER HKCU(HKEY_CURRENT_USER)
KEYNAMEの値 Software\Microsoft\Windows\CurrentVersion\Policies\Explorer
該当するPOLICYの"VALUENAME"の値 NoSMMyDocs
    • これら3つの情報を合わせて、次のレジストリキーを得る。
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoSMMyDocs

レジストリにセットする値

  • どのような値をセットすればよいのかは、レジストリに関する記述がされている部分を見て考える。
    • この例では、セットできる値が「有効」「無効」「未定義」の3種類。
      • 「有効」にセットするには1
      • 「無効」にセットするには0
      • 「未定義」にセットするには何も値をセットしない

まとめると

  • 以上のことから、「タスクバーと[スタート]メニュー」の「[スタート]メニューから[マイ ドキュメント]を削除する」を有効にするためには、次のようにレジストリを設定すればよいことが分かった。
キー HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoSMMyDocs
1

おまけ

レジストリの値を確認する方法
  • 手っ取り早いのはREGEDITを使う方法。
  • 特定の値だけ簡単に見たい場合は、WSHを使うと便利。
    • サンプルプログラム
Option Explicit
Dim objWshShell
Dim key,value
Set objWshShell = WScript.CreateObject("WScript.Shell")

key = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoSMMyDocs"
value = objWshShell.RegRead( key )

WScript.Echo( "value="&value )
    • これをvbsという拡張子のファイルに保存してダブルクリックで実行。
レジストリの値をセットする方法
  • WSHを使う方法とREGファイル®EDITコマンドを使う方法、またはREGEDITで直接編集する方法がある。
  • WSHを使う場合
    • サンプルプログラム
Option Explicit
Dim objWshShell
Dim key, value, xtype
Set objWshShell = WScript.CreateObject("WScript.Shell")

key = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoSMMyDocs"
value = 1
xtype = "REG_DWORD"

objWshShell.RegWrite key, value, xtype
    • これをvbsという拡張子のファイルに保存してダブルクリックで実行。
  • REGファイル®EDITコマンドを使う場合
    • REGEDITの実行画面の左のフレームに表示されているフォルダを右クリックしてエクスポートを選択すると、フォルダ配下のレジストリ情報がテキストファイル(*.REG)に出力される。
    • このREGファイルは、そのままレジストリに取り込むことができる形式で記述されている。
    • 取り込みたいレジストリ情報に書き換えたREGファイルをsettings.regとすると、次のコマンドを実行。
> regedit settings.reg
    • プロンプトを表示しないでコマンドを実行したい場合は、/sオプションを付けて実行。
> regedit /s settings.reg
    • ちなみに、この例の場合REGファイルは次のようになる。
Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoSMMyDocs"=dword:00000001
レジストリを削除する方法
  • WSHを使うかREGEDITを使って直接削除するか。REGファイル®EDITコマンドを使って、空のレジストリで上書きしてしまうのもアリ。
  • WSHを使う場合
    • サンプルプログラム
Option Explicit
Dim objWshShell
Dim key
Set objWshShell = WScript.CreateObject("WScript.Shell")

key = "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\NoSMMyDocs"

objWshShell.RegDelete key
    • これをvbsという拡張子のファイルに保存してダブルクリックで実行。

さてさて…

この例で取り上げてきたレジストリをセットすると、スタートメニューのマイドキュメントが表示されなくなるはずだけど、セットした直後には表示されたままだった。一度ログオフしてログオンし直すと表示されなくなった。
セットしたレジストリの効果については、レジストリによるんだろう。