Windows TIPS
[System Environment]
  Windows TIPS TOPへ
Windows TIPS全リストへ
内容別分類一覧へ

コマンド・プロンプトでレジストリを操作する

解説をスキップして操作方法を読む

デジタルアドバンテージ
2004/02/21
 
対象OS
Windows 2000 Professional
Windows 2000 Server
Windows XP Professional
Windows XP Home Edition
Windows Server 2003
CUIベースのレジストリ操作ツールを利用することにより、定型的な処理や多数のリモート・マシンのメンテナンスなどが容易になる。
Windows 2000用のCUIベースのツールはサポート・ツールに含まれている。
 
解説

 Windowsシステムの各部の調整をしたり、動作設定を変更したりするために、レジストリを操作しなければならないことがある。本TIPSでもすでにいくつかそのような手法を紹介してきた。

 レジストリを操作するためには、一般的にはGUIベースのツール「regedit.exe」や「regedt32.exe *1」が使われることが多い。だが何度も同じ処理を実行する場合や、多数のマシンに(リモートから)同じ設定を施すならば、コマンドラインで使えるようなツールがあれば便利である。

*1 regedt32.exeはWindows 2000でのみ利用可能なツールである(もともとWindows NTにはこのツールしか用意されていなかった)。regedit.exeと違って、レジストリのキーに対するアクセス権の設定機能を持つ。これに対しWindows XPおよびWindows Server 2003では、2つのレジストリ・エディタの機能が統合され、regedit.exeだけでもアクセス権の設定が行えるようになっている。

 Windows OSには、このような目的のために利用できるツールが用意されている。


操作方法

 コマンド・プロンプト上でレジストリを操作するためのツールは「reg.exe」という。Windows 2000の場合は、サポート・ツールとして用意されているので、あらかじめユーザーがインストールしておく必要がある。サポート・ツールとは、Windows 2000のインストール用CD-ROMの\SUPPORT\TOOLSフォルダに用意されているツール類のことである。この中にあるSETUP.EXEを実行すればインストールされる。Windows XPとWindows Server 2003では、デフォルトのツールとしてあらかじめ用意されているので、すぐに使うことができる。どちらでも同じ機能を持っているが、表示されるメッセージが、Windows 2000のサポート・ツール版は英語メッセージ、Windows XP/Server 2003では日本語メッセージという違いがある。

regのサブコマンド

 regコマンドにはいくつかのサブコマンドがあり、例えばレジストリ・エントリを追加するなら「reg add パラメータ列」というふうにして利用する。regコマンドで利用できるサブコマンドは次のとおりである。

コマンド 意味
リモート
reg query 指定されたレジストリ・キーやそのサブツリーの値を表示する
reg add レジストリにキーや値名、値を追加したり、既存の値を修正したりする
reg delete レジストリから指定されたキーや値を削除する
reg copy レジストリのツリーをコピーする。ローカル・マシンのレジストリ内だけでなく、2つのマシン間でのリモート・コピーも可能
reg compare 指定された2カ所のレジストリ(ツリー)を比較して、その相違点もしくは同じ部分を表示する
reg save
関連記事
レジストリ・ツリーの保存。指定されたサブキー以下のツリーを指定されたファイルに保存する。保存されたファイルは次の「reg restore」でのみ利用可能。リモート・マシン上のレジストリを指定すると、そのマシン上の指定されたフォルダ(デフォルトは%SYSTEM_ROOT%)にファイルが保存される
(可)
reg restore
関連記事
reg saveで保存されたレジストリを、ローカル・マシン上の指定されたツリーの場所に復元する。リモート・マシンのレジストリをreg saveした場合は、そのマシンへログオンしてreg restoreする必要がある
不可
reg load
関連記事
reg saveで保存されたレジストリを、元とは異なる場所へロード/復元する。リモートのマシンへも書き戻せる
不可
reg unload
関連記事
reg load操作で読み込まれたレジストリのセクションを削除する
不可
reg export 指定されたキーやエントリ(とその値)をファイルに書き出す。GUI版のレジストリ・エディタでレジストリを書き出したときに作成されるファイル(〜.reg)と同じ形式で保存される
不可
reg import reg exportで書き出されたレジストリ値をローカルのコンピュータに書き戻す。エクスプローラ上で〜.regファイルをダブルクリックしたときの動作と同じ
不可
regコマンドのサブコマンドとその機能
regコマンドにはさまざまなサブコマンドがある。regコマンドの使い方は「reg /?」を実行すると表示される。さらに「reg add /?」とサブコマンドに続けて「/?」を指定すれば、サブコマンドごとの詳しい使い方が表示される。「リモート」の欄は、リモート・マシンのレジストリを操作できるかどうかを表している。「可」となっている場合は、レジストリのキー名の先頭にマシン名を指定することができる。

 regコマンドの使い方は、サポート・ツールのヘルプ・ファイル(Windows 2000の場合)や「ヘルプとサポート センター(Windows XP/Windows Server 2003の場合)」を参照すればよいが、通常はコマンド・プロンプト上で「reg /?」として表示させるのが簡単でよいだろう。各サブコマンドについては、例えば「reg add /?」などとすれば、使い方やサンプルが表示される。

C:\>reg add /?

Console Registry Tool for Windows - version 3.0
Copyright (C) Microsoft Corp. 1981-2001.  All rights reserved


REG ADD キー名 [/v 値名 | /ve] [/t Type] [/s セパレータ] [/d データ] [/f]

  キー名    [\\コンピュータ\]完全キー
      コンピュータ  リモート コンピュータ名 - 現在のコンピュータを
                    既定として省略します。HKLM と HKU のみリモート
                    コンピュータで利用できます。
      完全キー      ルートキー\サブキー
        ルートキー  [ HKLM | HKCU | HKCR | HKU | HKCC ]
        サブキー    選択したルートキーの下のレジストリ キーの完全な名前

  /v  選択したキーの下の追加される値名

  /ve キーの空の値名 <名前なし> を追加します

  /t  種類
           [ REG_SZ    | REG_MULTI_SZ  | REG_DWORD_BIG_ENDIAN    |
             REG_DWORD | REG_BINARY    | REG_DWORD_LITTLE_ENDIAN |
             REG_NONE  | REG_EXPAND_SZ ]
           省略された場合、REG_SZ を想定します
…(以下省略)…

レジストリ・キーの指定方法

 regコマンドを利用する場合は、そのパラメータとしてレジストリのキーを指定する必要がある。レジストリには、目的に応じていくつかのルート・キーが存在する。例えばシステム全体にかかわる設定は「HKEY_LOCAL_MACHINE\SOFTWARE」、ユーザーごとの設定は「HKEY_USERS」などである。だがこれらは非常に長いので、以下のような省略形式を利用することもできる。

省略キー 正式なキー名称 リモート
HKLM HKEY_LOCAL_MACHINE 利用可能
HKCU HKEY_CURRENT_USER 利用不可能
HKCR HKEY_CLASSES_ROOT 利用不可能
HKU HKEY_USERS 利用可能
HKCC HKEY_CURRENT_CONFIG 利用不可能
レジストリ・キーの省略形式
レジストリ・キーを指定する場合は、ここで示した省略形式でも指定することができる。ただしリモート・マシン上のレジストリを指定する場合は、HKLMとHKUのみが使用可能であり、ほかのキーは指定できない。

 この省略形を使うと、例えば「HKEY_LOCAL_MACHINE\Software\Microsoft」は「HKLM\Software\Microsoft」と短く省略して、簡潔に記述することができる。

 リモート・マシン上のレジストリを指定する場合は、キーの先頭に「\\コンピュータ名\」を付ければよい。例えば「\\server1\HKLM\Software\Microsoft」とする。ただし、リモートからレジストリを操作する場合は「CURRENT_USER(現在ログオンしているユーザー)」という概念はないので、HKLMとHKUのみが利用できる。リモートのレジストリにアクセスするためには、リモート・マシンに対する管理者権限を持っていなければならない。

レジストリ操作の例

 ここでは例として、自動ログオンの設定をリモートのマシンに対して施してみよう。システム起動時に自動ログオンするには、「TIPS―ログオンを省略してWindows 2000を利用できるようにするには(レジストリによる設定法)」で紹介したようにレジストリを設定する。

レジストリの値名 タイプ 意味
DefaultDomainName REG_SZ 自動ログオンするドメイン名。ドメインではなくローカル・マシンのアカウントにログオンする場合はマシン名を指定する
DefaultUserName REG_SZ 自動ログオンするユーザー名
DefaultPassword REG_SZ 自動ログオンするユーザーのパスワード
AutoAdminLogon REG_SZ 1
自動ログオンのための設定
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon以下にこれらの値を作成すると、システム起動時に自動的にログオンさせることができる。

 この設定を行うためには、以下のようなコマンドを実行する。ここではログオンするマシン名はserver1、ユーザー名はuser01、パスワードはpassword01としている。キー名などの途中に空白が含まれている場合は、ダブルクォート記号で囲むことを忘れないでいただきたい。

※これは、.BATファイルにした例

rem setup-autologon.bat

net use \\server1\ipc$ /user:user01 *
reg add "\\server1\HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultDomainName /t REG_SZ /d "SERVER1" /f
reg add "\\server1\HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName   /t REG_SZ /d "user01" /f
reg add "\\server1\HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword   /t REG_SZ /d "password01" /f
reg add "\\server1\HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon    /t REG_SZ /d "1" /f
net use \\server1\ipc$ /delete

 最初と最後にある「net use \\server1\ipc$ 〜 」と「net use 〜 /delete」は、対象となるサーバへの接続と切断を行うためのものである。詳しくは「TIPS―アカウントを指定してIPC$共有リソースへ接続する」を参照していただきたいが、このような共有指定を明示的に行うことにより、現在ログオンしているユーザー・アカウントとは関係なく、対象となるマシンへ任意のアカウントで共有のためにログオンすることができる(必要なければ、省略してよい)。

 途中にある「reg add "\\server1\HKLM〜" /v 〜 /t 〜 /d 〜 /f」が実際のレジストリ値をセットするためのコマンドである。途中に空白文字が入っている場合には、パラメータを「"〜"」のように、ダブルクォート記号で囲むようにする。また文字列型(REG_SZ_〜)の値の場合もダブルクォート記号で囲むのがよいだろう。ここでは文字列しか使用していないが、REG_DWORDの場合は数値を10進数か16進数で指定する(16進数の場合は先頭に0xを付け、0x1234abcdのようにする)。

 パラメータの最後にある「/f」は、上書きするという指定である。同じキーや値の内容を変更する場合は、このオプションがないと、上書きしてもよいかどうかがいちいち聞かれることになる。

 設定した値を確認するには、例えば以下のようにすればよい。これはWinlogonのキー以下にある値をすべて表示させるというコマンドである。

reg query "\\server1\HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" /s

 このようにregコマンドを使えば、レジストリの設定作業を簡単に行うことができる。多数のリモート・マシンに対してまとめて設定を変更したいといった場合に役に立つだろう。End of Article

  関連記事(Windows Server Insider)
  TIPS―ログオンを省略してWindows 2000を利用できるようにするには(レジストリによる設定法)
  TIPS―アカウントを指定してIPC$共有リソースへ接続する
     
この記事と関連性の高い別のWindows TIPS
リモートからレジストリを操作する
特定のレジストリ・キー以下を素早くバックアップする
ログオンを省略してWindows 2000を利用できるようにするには(レジストリによる設定法)
システムに自動ログオンする方法(ユーザー管理ツール編)
アカウントを指定してIPC$共有リソースへ接続する
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「Windows TIPS」

TechTargetジャパン

Windows Server Insider フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ

- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH