グループ・ポリシーが使えない複数のWindows PCに共通の設定を適用するには、レジストリを書き替えるという方法がある。それには変更内容を.regファイルに記してインポートすればよい。.regファイルの作成には注意すべき点があるものの、慣れれば難しくない。
対象OS:Windows 2000/Windows XP/Windows Server 2003/Windows Vista/Windows Server 2008
周知のとおり、レジストリはWindowsシステム全般のさまざまな情報を集中的に管理するデータベースである。レジストリにはWindowsのシステムやアプリケーションなどに関する設定情報も含まれており、レジストリを書き替えることで各種設定も変更できる。
もっともレジストリを直接書き替えることなく、設定を変更する方法はいくつもある。そもそも、コントロール・パネルや管理ツール、あるいはアプリケーションの設定メニューといったGUIから設定を変更するのがWindowsの基本だ。しかし、例えば複数のPCに同一の設定を反映する場合、いちいちGUIから対話的操作をするのは非常に手間がかかるのも事実である。
こんなときの王道はActive Directoryでグループ・ポリシーを活用することだ。ドメインあるいは組織単位ごとにグループ・ポリシーを作成して割り当てれば、その所属PCすべてに対して自動的に共通の設定を適用できる(グループ・ポリシーの詳細は関連記事参照)。
しかし、ワークグループ構成のコンピュータやグループ・ポリシー非対応のアプリケーションが対象だと、この方法はほぼ利用できない。
こうした状況ではレジストリ書き替えによる設定変更が有力な手段といえる。
その1つとして、.regファイルを作成してレジストリに読み込ませる方法がある。.regファイルとはレジストリにインポート可能な形式のテキスト・ファイルの一種で、Windowsのメモ帳で作成できる。
単一の.regファイルに複数のレジストリ操作をまとめられるほか、Windowsエクスプローラなどで.regファイルをダブルクリックするだけでレジストリにその内容をインポートできるメリットがある(レジストリのインポートの詳細については関連記事参照)。特に、同一の設定を複数のコンピュータに対して適用する場合に有効だ。
一方、コンピュータ/ユーザーごとに設定内容を変えたい場合は、それぞれに対応した.regファイルを用意する必要があり、かえって手順が複雑になる点に注意が必要である。また.regファイルを書くのはそれほど難しくないものの、書式上注意すべき点もある。
本TIPSではこうした注意点も含めて、.regファイルを「手書き」で新規作成する方法を説明する。
レジストリに不正な値を書き込んでしまうと、システムに重大な障害を及ぼし、最悪の場合、システムの再インストールを余儀なくされることもあります。レジストリ・エディタの操作は慎重に行うとともに、あくまで御自分のリスクで設定を行ってください。何らかの障害が発生した場合でも、本Windows Server Insider編集部では責任を負いかねます。ご了承ください。
.regファイルの記述を誤ると、レジストリに深刻な損傷を与える危険性がある。大規模に.regファイルを展開する前にテストを入念に実施するのはもちろん、テスト環境でも.regファイルによる変更個所を復元できるよう、あらかじめレジストリをバックアップしておくことをお勧めする(バックアップ手順など詳細は関連記事参照)。
.regファイルを作成するには、Windowsのメモ帳のようなUnicode(UTF-16)対応のテキスト・エディタを用いる。よほど長大な.regファイルでない限り、メモ帳で事足りるだろう。
ただし、.regファイルを保存する際、拡張子と文字コードに注意する必要がある。メモ帳の場合、後述の書式などに従ってレジストリの変更内容を記述後、[ファイル]−[名前を付けて保存]を実行したら、拡張子は「.reg」、文字コードは「Unicode」にそれぞれ変更してから保存する(UTF-16のUnicodeで、バイト・オーダーはリトル・エンディアンとする)。ほかのテキスト・エディタでも同様に対処する必要がある。
この例だと「MyApp01.reg」というファイル名の.regファイルが作成される。
ここからは、最も重要な.regファイルの記述内容について説明する。
.regファイルの基本構成は、以下のように先頭のレジストリ・エディタのバージョン指定と、変更対象のサブ・キー/値のセットからなる。このセットは複数指定が可能で、それぞれ空行で区切って記述する。レジストリに読み込む際には、上から順番に各セットが処理される。
Windows Registry Editor Version 5.00 ……(1)
……空行
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config\Site1] ……(2)
"SiteName"="TestSite" ……(3)
……空行
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config\user1] ……(4)
……(以下省略)……
サブ・キーは必ずフル・パスで記述する。その際、各サブ・キーの区切りには半角の「\」を挿入し、全体は半角の「[ ]」でくくる。
値については、「=」の左に値の名前(値名)、右側に値の内容(データ)を記述する。複数の値を変更するには、サブ・キー行の下に1行ずつ各値の設定変更の行を連ねていけばよい。値名および型、データの指定方法は変更内容によって異なるので、詳細は後述する。
レジストリに新たなサブ・キーを追加するには、単にそのフル・パスを記述するだけでよい。各サブ・キーの区切り文字(「\」)やパス全体をくくるカッコ(「[ ]」)の指定は前述のとおり。
Windows Registry Editor Version 5.00
……空行
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config\Site1] ……(1)
……空行
途中の階層のサブ・キー(上記の「MyCampany」や「MyApp」など)は、存在しなくても自動的に作成される。そのため、途中のサブ・キーを追加するための行は不要で、対象のサブ・キーへのフル・パスを1行だけ記述すればよい。また、既存のサブ・キーを追加対象としても、レジストリへの読み込み時にエラーとはならない。単に無視されるだけなので、特に対処の必要はない。
サブ・キーと同時に値も追加したい場合は、サブ・キー指定行のすぐ下に、値を追加する行を記述する(次項参照)。
値の追加または値の内容の修正には、対象のサブ・キーを指定する行のすぐ下に値の追加/修正のための行を記述する。レジストリに.regファイルを読み込ませる際、対象のサブ・キーが存在しなければ、そのサブ・キーが新たに作成された後、指定した値も追加される。
新たに値を追加する手順と、既存の値の内容を修正する手順は変わらない。対象の値が存在しなければ「追加」、存在すれば「修正」として扱われる。
Windows Registry Editor Version 5.00
……空行
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config\Site1] ……(1)
@="DefaultSite" ……(2)
"SiteType"="SharePoint" ……(3)
"SiteNo"=dword:00000001 ……(4)
"SiteDir"="D:\\InetRoot\\WWWRoot\\" ……(5)
……空行
特に、値の内容としてフォルダのパスなど「\」を含む文字列を設定する場合、二重すなわち「\\」に変換して記述する必要がある点には注意したい。「\」が残っていると、その値は正常にレジストリへ追加されない。
なお、.regファイルでは値の内容の一部だけ修正することはできず、値の内容全体を指定する必要がある。例えば上記の値「SiteDir」の内容にて「WWW」を「FTP」に変更したい場合でも、全体すなわち「"D:\\InetRoot\\FTPRoot\\"」と指定しなければならない。
■値の型について
レジストリの値には、あらかじめ決まっているいくつかの型がある。文字列値以外の型については、.regファイルでは明示的に指定しなければならない。代表的な型を下表に記す。
名称 | 型の種類 | .regファイルの書式 | 説明 |
---|---|---|---|
文字列値 | REG_SZ | "<値名>"="<文字列>" | 1行の文字列。値の型は指定不要。 |
DWORD値 | REG_DWORD | "<値名>"=dword:<8桁16進数> | 32bit長の数値。「0(0x00000000)」から「4294967295(0xffffffff)」までの数値を指定可能。 |
バイナリ値 | REG_BINARY | "<値名>"=hex:<2桁16進数>,<2桁16進数>,……,\ <2桁16進数>,……,<2桁16進数> |
バイナリ・データ。1byteずつ半角カンマで区切り、行末には「,\」を記す。 |
複数行文字列値 | REG_MULTI_SZ | "<値名>>"=hex(7):<2桁16進数>,<2桁16進数>,……,\ <2桁16進数>,……,<2桁16進数> |
複数行にわたって記述された文字列。文字コードを1byteずつ半角カンマで区切って記述し、行末には「,\」を記す。 |
展開可能な文字列値 | REG_EXPAND_SZ | "<値名>"=hex(2):<2桁16進数>,<2桁16進数>,……,\ <2桁16進数>,……,<2桁16進数> |
環境変数や式が挿入された文字列。文字コードを1byteずつ半角カンマで区切って記述し、行末には「,\」を記す。 |
代表的なレジストリ値の型と書式 「名称」「型の種類」はレジストリ・エディタで表示されるデータの型の表記を表す。.regファイルには、「.regファイルの書式」に従って値の型を記述する必要がある。特によく使われるのは文字列値とDWORD値の2種類。 |
このうち、複数行文字列値(REG_MULTI_SZ)と展開可能な文字列値(REG_EXPAND_SZ)は、その文字コードを1byteずつ16進数に展開して記述しなければならず、ひどく面倒だ。
これらの型のデータを手間なく作成するにはレジストリ・エディタのエクスポート機能を利用するとよい(エクスポート方法の詳細は関連記事を参照)。手順は以下のとおり。
サブ・キーを削除するには、以下のようにサブ・キーのフル・パスの先頭にハイフン(「-」)を挿入する。
Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config\Site1]
これでサブ・キー「Site1」はもちろん、「Site1」に含まれる値および「Site1」以下の階層のサブ・キーもすべて削除される。
値を削除するには、内容部分すなわち「=」の右側にハイフンのみ記述する。ハイフンを二重引用符でくくらないよう注意すること(内容が「-」という文字列に変更されてしまい、値は削除されない)。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config\Site1]
"Setting1"=-
これでサブ・キー「Site1」の値「Setting1」が削除される。
.regファイルでは直接サブ・キーの名前を変更できず、いったん対象のサブ・キーを削除して新しい名前で再作成する必要がある。そのため、元のサブ・キーの値および下階層のサブ・キーを、新しいサブ・キーに設定し直すための記述が必要となる。
Windows Registry Editor Version 5.00
……空行
[-HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config] ……(1)
……空行
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Conf] ……(2)
"Type"="default" ……(3)
……空行
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Conf\site1] ……(4)
"Setting1"=dword:1234abcd ……(5)
これでサブ・キー「Config」の名前が「Conf」に変更される。
サブ・キーと同じく、値の名前(値名)もまた.regファイルでは直接変更できず、いったん削除して新しい名前で作り直す必要がある。
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Conf\site1] ……(1)
"Setting1"=- ……(2)
"Setting2"=dword:1234abcd ……(3)
これで値「Setting1」の名前が「Setting2」に変更される。
以上のようにして作成した.regファイルを、実際にコンピュータに読み込ませるにはいくつかの方法がある。簡単なのは、Windowsエクスプローラなどから.regファイルをダブルクリックするという方法だ。デフォルトで.regファイルは、実行されるとその内容がレジストリに読み込まれる。
例えば.regファイルをファイル・サーバのネットワーク共有フォルダに保存し、それをエンド・ユーザーに依頼してクライアントPCからWindowsエクスプローラで実行してもらう。これで.regファイルの内容がレジストリに読み込まれる。
ただし、エンド・ユーザーが管理者権限を持っていない場合、HKEY_LOCAL_MACHINE以下のように管理者だけが書き替え可能なサブ・キーは変更できない。
リモートから各コンピュータでコマンドを実行する手段があれば、以下のようにreg importコマンドを利用して.regファイルを読み込ませることができる。
reg import <.regファイル名>
このコマンドラインをローカル・システム・アカウントまたは管理者アカウントで実行すれば、管理者限定のサブ・キーも変更できる。reg importコマンドの詳細については関連記事を参照していただきたい。
Windows 2000でregコマンドが使えない場合は、レジストリ・エディタ(regedit.exe)でも代用できる。
regedit /s <.regファイル名>
どちらのコマンドラインでも、対話的操作なしで.regファイルがレジストリに読み込まれる。
■関連リンク
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.