Windows 10のレジストリ設定の基本
すでにご存じの方も多いとは思いますが、今回はWindows 10でのレジストリ操作について基本的な解説を行います。これは、毎回レジストリ操作を解説すると同じことを繰り返すことになるため記事が煩わしくなってしまうからです。
Windows 10にもレジストリがあり、編集にはレジストリエディタを利用します。レジストリエディタやレジストリ構造に大きな変更はなく、従来通りに行うことができます。ただし、筆者が試した範囲では、Windows 7、8.xで有効だったレジストリであっても、効果がないレジストリ設定がいくつかありました。レジストリの基本構造からして、無効な編集であっても、エラーになることはありませんが、効果があるかどうかは実際に試してみるしかありません。
レジストリエディタの起動
頻繁にレジストリエディタを使うのであれば、スタートメニューやタスクバーに登録したり、あるいはデスクトップにアイコンを置くこともありえるでしょう。ただ、タブレットモードなど、デスクトップアイコンに直接アクセスできない場合があるWindows 10では、スタートメニューへのタイル登録が便利でしょう。タスクバーに登録しておくこともできますが、レジストリに登録を行うアプリケーションを開発しているのでもない限り、それほどレジストリ操作の必要性があるとは思えません。
レジストリエディタ自体は、通常のデスクトップアプリケーション(クラッシックアプリケーション)で、以下のパスにあります。
C:\Windows\regedit.exe
前述のように簡単に起動するならスタートメニューなどへの登録があるが、一般にはそれほど高い頻度で利用することはありません。登録せずに簡単に起動する方法としては、「ファイル名を指定して実行」(図1)機能を使う方法があります。
これは、Windows 10では、Windowsキーを押しながら「R」キーを押すことで起動できます。こうしたキーの組み合わせを以後、
[Win]+R
と表記します。「R」のように一文字で表記できるキーはそのまま、ウィンドウズロゴキーなどのような複数文字で表現されるキーは、全体を「[」と「]」を括る(表記方法は適宜解説します)。なお、「+」は、同時押しを意味し、「+」キー自体を押す場合は「[+]」と表記することにします。こうしたプログラムや機能を起動するキーの組み合わせを「ショートカットキー」と呼びます。ときどきこれを「ショートカット」と略す人がいますが、Windowsでは、「ショートカット」には別の意味もあるため、できるだけ省略しないほうがいいでしょう。
この機能は、実行パス範囲内で、入力された実行ファイル名(拡張子は省略可能)を探して起動する機能を持ち、前記の「C:\Windows\」は実行パス内であるため、「regedit」のみの入力で起動が可能です。
また、「ファイル名を指定して実行」は、「[Win]+X」で表示される「システムメニュー」(図2)にも登録されており、ここから起動することもできます。また、このシステムメニューは、画面左下のスタートメニューの右ボタンクリックやタッチの長押しでも開くことができるため、ショートカットを覚えなくてもすみます。
レジストリの基本的な構造
レジストリは、「キー」と呼ばれる階層構造に「値」(バリュー)と呼ばれる小さな情報を登録して管理するものです。「値」は特定の形式のデータを保存するものです。「値」には「名前」、「種類」、「データ」があります。「名前」は、「キー」の中で個々の「値」を区別するものです。アルファベット、数字、若干の記号が使えますが、漢字などは指定できません。記号に関しては、ファイル名とほぼ同じで、「\」などの特殊記号が利用できません。
「種類」は、「値」が保持する情報「データ」の形式を表し、(表1.1)のような6つのタイプのみが指定できます。「データ」は、「値」が持つ情報自体です。
API上の種類(タイプ) | RegEditでの種類 | 意味 |
---|---|---|
REG_BINARY | バイナリ値 | 特定の形式を持たないバイトデータ |
REG_SZ | 文字列値 | 改行を含まない固定長の文字列 |
REG_EXPAND_SZ | 展開可能な文字列値 | 環境変数で展開される文字列(%~%) |
REG_MULTI_SZ | 複数行文字列値 | 改行を含む文字列 |
REG_DWORD | DWORD(32ビット)値 | 32bit符号なし整数値 |
REG_QWORD | QWORD(64ビット)値 | 64bit符号なし整数値 |
キーは、大きく5つのツリーになっています(図3)。
ルートキー | レジストリエディタで編集可能 | 略称 | Hive/Link | 備考 | |
---|---|---|---|---|---|
サブキー | Hiveファイル | ||||
HKEY_CLASSES_ROOT | ○ | HKCR | HKLM\SOFTWARE\ClassesとHKEY_USERS\ | クラス定義と拡張子の関連づけ | |
HKEY_CURRENT_USER | ○ | HKCU | HKEY_USERの下のログオンしているユーザーのサブキーにリンク | ログオン中のユーザー固有の設定 | |
HKEY_LOCAL_MACHINE | ○ | HKLM | BCD00000000 | \Boot\BCD | システム全体、ハードウェアに関する情報 |
COMPONENTS | %SystemRoot%\System32\Config\COMPONENTS | ||||
SYSTEM | %SystemRoot%\System32\Config\SYSTEM | ||||
SAM | %SystemRoot%\System32\Config\SAM | ||||
SECURITY | %SystemRoot%\System32\Config\SECURITY | ||||
SOFTWARE | %SystemRoot%\System32\Config\SOFTWARE | ||||
HARDWARE | 揮発性 | ||||
HKEY_USERS | ○ | HKU | %SystemRoot%\ServiceProfiles\NetworkService\Ntuser.dat %SystemRoot%\ServiceProfiles\LocalService\Ntuser.dat \Users\ユーザー名\Ntuser.dat AppData\Local\Microsoft\Windows\Usrclass.dat | ユーザーすべての情報 | |
DEFAULT | %SystemRoot%\System32\Config\Default | ||||
HKEY_CURRENT_CONFIG | ○ | HKCC | HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Currentへのリンク | ||
HKEY_PERFORMANCE_DATA | × | HKPD | 揮発性 | パフォーマンスデータ |
キーの階層構造を表記する場合には、ファイルフォルダと同じく「\」でキー名をつなげて表記します。たとえば、「HKEY_CURRENT_USER」にある「SOFTWARE」を表すには、「HKEY_CURRENT_USER\SOFTWARE」などと表します。また、先頭の部分は、長いので略称があります。
「値」はすべてどこかの「キー」に含まれます。なお、すべてのキーには「(既定) 」という名前の「値」が必ず存在しています。
レジストリの大部分は、実際には、ファイルとして保存されていて、これをWindowsがレジストリエディタで見えるような構造としてAPIを介してアクセス可能にしています。また、APIからレジストリとしてアクセスできる情報の一部は、「揮発性」と呼ばれ、システム状態などから作られてAPIを介してアクセスできるものの、ファイルとしては保存されません。たとえば、パフォーマンスなどに関連する情報は、レジストリという形でアクセスが可能ですが、これらは、システム状態などを反映しているだけです。これはレジストリエディタではアクセスできないが、パフォーマンスモニターがこれを利用しており、刻々と変化するシステムの内部状態をレジストリという形でアクセスしています。
レジストリエディタの使い方
レジストリエディタの基本的な使い方としては
- キーを追加する
- 値を追加する
- 値を変更する
- インポートとエクスポート
があります。まず、キーについてですが、キーは、名前の変更や削除も可能ですが、基本的にはレジストリエディタでは、これらは行わないようにします。もちろん間違って登録してしまったものは、削除したり名前を変更してもよいのですが、慣れないうちは、間違って他のキーの名前を変更してしまったり、削除してしまう可能性があります。レジストリは、編集するとすぐにシステムに反映され、ワープロソフトなどのように「セーブ」するような操作は必要ありません。このため、間違った操作がシステムにダメージを与えてしまう可能性があります。よほどひどいことをしない限りレジストリを書き換えたぐらいでシステムが起動しなくなるようなことはありませんが、基本的には、「危険」な操作であることを認識しておいたほうがいいでしょう。あまりよいたとえではないかもしれませんが、レジストリ操作とは、車のエンジンが動いているときにボンネットを開けて、エンジン部品に触るようなものです。整備士のようにエンジンを理解し危険を把握していれば、不可能なことではありませんが、一般ユーザーにはかなり危険度も高く難易度も高い作業です。また、危険な操作なので、基本的には、誤操作しやすいタッチ操作は「絶対」にやらず、必ずマウスやキーボードを使うべきでしょう。
キーに関しては、これを追加する作業は比較的少なくありません。レジストリ設定の記事などでは、あっさりと「なかったら作る」としか書いてないこともあります。基本的には、すべての「値」は特定の「キー」の中にあり、すべてのキーには親となる「キー」が存在します。このため、「値」の場所として指定されたキーに相当するものがなければ、レジストリエディタで作成するしかありません。
作成は、キーを作りたい場所を左側のツリー領域で選択して「新規」 ⇒ 「キー」を選択して行います(図4)。右クリックメニュー(タッチでは長押し)でも「編集」メニューにも「新規」があるので好きな方を使ってかまいません。キーの作成は、キー名をつけるだけです。基本的には自由な名前を付けることはないので、指示通りの名前を付けます。
「値」に関しては、新規作成、名前の変更、データの変更といった操作があります。まず新規作成ですが、レジストリエディタの左側の領域でキーを選んだら、「編集」 ⇒ 「新規」、右クリックメニューの「新規」から、「種類」を選択すると、右側の領域に項目が追加されるので、その名前を書き換えて指定する(図5、図6)。
こうして作られた「値」をダブルクリックもしくは、「編集」 ⇒ 「修正」または右クリックメニュー ⇒ 「修正」を選び、表示されたダイアログ(図7)でデータを入力します。
インポートエクスポートは、キー単位で行います。左側の領域でキーを選択し、「ファイル」 ⇒ 「エクスポート」(図8)。これは、標準で、「.reg」ファイルがレジストリエディタに関連づけしてあるためです。
登録前に確認はありますが、間違ってレジストリを登録してしまう可能性があるため、拡張子が「.reg」のファイルは簡単にクリックできるような「デスクトップ」などに置かない方が安全です。
なお、エクスポートされたレジストリファイルは、テキスト型式なので、エディタなどで編集することも可能です。