連載
» 2009年01月16日 05時00分 UPDATE

Tech TIPS:.regファイルを「手書き」してレジストリに読み込ませる方法

グループ・ポリシーが使えない複数のWindows PCに共通の設定を適用するには、レジストリを書き替えるという方法がある。それには変更内容を.regファイルに記してインポートすればよい。.regファイルの作成には注意すべき点があるものの、慣れれば難しくない。

[島田広道,デジタルアドバンテージ]
「Tech TIPS」のインデックス

連載目次

対象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ファイルはメモ帳で作成・編集可能

 .regファイルを作成するには、Windowsのメモ帳のようなUnicode(UTF-16)対応のテキスト・エディタを用いる。よほど長大な.regファイルでない限り、メモ帳で事足りるだろう。

 ただし、.regファイルを保存する際、拡張子と文字コードに注意する必要がある。メモ帳の場合、後述の書式などに従ってレジストリの変更内容を記述後、[ファイル]−[名前を付けて保存]を実行したら、拡張子は「.reg」、文字コードは「Unicode」にそれぞれ変更してから保存する(UTF-16のUnicodeで、バイト・オーダーリトル・エンディアンとする)。ほかのテキスト・エディタでも同様に対処する必要がある。

メモ帳で.regファイルを保存する際の注意点 メモ帳で.regファイルを保存する際の注意点
これはメモ帳で[ファイル]−[名前を付けて保存]を実行して表示されるファイル保存ダイアログ・ボックス。デフォルトの文字コード(ANSI)と拡張子(.txt)を、.regファイルに合わせて明示的に変更する必要がある。
  (1)ファイル名を指定する。拡張子.regを付けること。
  (2)「Unicode」を選択する。
  (3)これをクリックすると、.regファイルが保存される。

 この例だと「MyApp01.reg」というファイル名の.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)
……(以下省略)……

.regファイルの基本構成
.regファイルの内容は、レジストリ・エディタのバージョン指定から始まり、レジストリの変更内容を表すサブ・キーと値のセットが続いて記述される。
  (1)レジストリ・エディタのバージョン指定行。この文字列の決め打ちでよい。この下には必ず空行を挿入する。
  (2)変更対象のサブ・キー。必ずフル・パスで記述する。各サブ・キーの区切り文字は半角の「\」で、全体をくくるカッコは半角の「[ ]」。
  (3)変更対象の値。「=」の左側に値の名前(値名)、右側に値の内容(型とデータ)を記述する(詳細は後述)。1つのサブ・キーに複数の値の行を指定できる。
  (4)次の変更対象のサブ・キー。前(上)のサブ・キー/値のセットとは空行で区切る必要がある。

 サブ・キーは必ずフル・パスで記述する。その際、各サブ・キーの区切りには半角の「\」を挿入し、全体は半角の「[ ]」でくくる。

 値については、「=」の左に値の名前(値名)、右側に値の内容(データ)を記述する。複数の値を変更するには、サブ・キー行の下に1行ずつ各値の設定変更の行を連ねていけばよい。値名および型、データの指定方法は変更内容によって異なるので、詳細は後述する。

●サブ・キーを追加する記述

 レジストリに新たなサブ・キーを追加するには、単にそのフル・パスを記述するだけでよい。各サブ・キーの区切り文字(「\」)やパス全体をくくるカッコ(「[ ]」)の指定は前述のとおり。

Windows Registry Editor Version 5.00
 ……空行
[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Config\Site1] ……(1)
 ……空行

サブ・キーを追加する.regファイルの例
新たにサブ・キー「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ファイルの例
サブ・キー「Site1」に対し、3つの値を追加または修正する。
  (1)対象のサブ・キーを指定する行。
  (2)サブ・キー「Site1」の無名値を設定する行。無名値とは、レジストリ・エディタの[名前]列に「(既定)」あるいは「(標準)」と表示される値のこと。値名として二重引用符でくくらない半角の「@」を指定すると無名値を設定できる。
  (3)値「SiteType」に文字列「SharePoint」を設定する行。
  (4)値「SiteNo」に数値「0x00000001」を設定する行。データの型である「dword」と内容である数値「00000001」は、半角のコロン(「:」)で区切って指定する。型の種類については後述。
  (5)値「SiteDir」に文字列「D:\InetRoot\WWWRoot\」を指定する行。「\」そのものを格納するには「\\」と二重にして指定する必要がある。

 特に、値の内容としてフォルダのパスなど「\」を含む文字列を設定する場合、二重すなわち「\\」に変換して記述する必要がある点には注意したい。「\」が残っていると、その値は正常にレジストリへ追加されない。

 なお、.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進数に展開して記述しなければならず、ひどく面倒だ。

 これらの型のデータを手間なく作成するにはレジストリ・エディタのエクスポート機能を利用するとよい(エクスポート方法の詳細は関連記事を参照)。手順は以下のとおり。

  1. レジストリ・エディタを起動する。Windows 2000ではregedt32.exeを利用する。
  2. 一時的に使えるサブ・キーを新たに用意する。
  3. [編集]−[新規]−[複数行文字列値]または[展開可能な文字列値]を実行して、適当な名前の値を追加する。Windows 2000では[編集]−[値の追加]を実行し、 [データ型]に「REG_MULTI_SZ」または「REG_EXPAND_SZ」を指定して値を追加する。
  4. .regファイルに記述したい文字列を、3.の値の内容として入力する。
  5. 2.のサブ・キーを.regファイル形式でエクスポートする。
  6. 5.のファイルから4.で設定した値の記述を見つけ、その内容を.regファイルへコピーする。
  7. 作業が完了したら2.のサブ・キーを削除して元に戻す。

●サブ・キーを削除する記述

 サブ・キーを削除するには、以下のようにサブ・キーのフル・パスの先頭にハイフン(「-」)を挿入する。

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)

サブ・キー名を変更する.regファイルの例
サブ・キー「Config」の名前を「Conf」に変更する。(3)(5)を記述するには、あらかじめ「Config」以下のサブ・キー/値をエクスポートするなどして内容を把握しておく必要がある。
  (1)元のサブ・キー「Config」以下をすべて削除する行。
  (2)新しいサブ・キー「Conf」を追加する行。
  (3)元の「Config」に格納されていた値を復元する行。
  (4)元の「Config」以下にあったサブ・キー「Site1」を復元する行。
  (5)元の「Config\Site1」に格納されていた値を復元する行。

 これでサブ・キー「Config」の名前が「Conf」に変更される。

●値の名前も直接変更できない

 サブ・キーと同じく、値の名前(値名)もまた.regファイルでは直接変更できず、いったん削除して新しい名前で作り直す必要がある。

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\MyCompany\MyApp\Conf\site1] ……(1)
"Setting1"=- ……(2)
"Setting2"=dword:1234abcd ……(3)

値名を変更する.regファイルの例
値「Setting1」の名前を「Setting2」に変更する。(3)を記述するには、あらかじめ元の値「Setting1」の内容をエクスポートするなどして把握しておく必要がある。
  (1)対象のサブ・キーを指定する行。
  (2)値「Setting1」を削除する行。
  (3)値「Setting2」に元の値「Setting1」の内容を復元する行。

 これで値「Setting1」の名前が「Setting2」に変更される。

●.regファイルをレジストリに読み込ませる方法

 以上のようにして作成した.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ファイルがレジストリに読み込まれる。

■関連リンク


「Tech TIPS」のインデックス

Tech TIPS

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。