Written in Japanese(UTF-8)
2014.8.30
INASOFT


/トップ/いじくるつくーる/ダウンロード/WebHelp/ヘルプトップ/

本ソフトウェアの開発は終了しています。ヘルプに記載されている情報も古いものになっています。


レジストリ操作は危険か?



レジストリ操作は危険か?(2001. 4.26)


 数日前、「Windowsを2000%いじくるツールの各項目に危険度を付けて欲しい」というメールを頂きました。最初、私は言っていることの意味がわかりませんでした。

 なぜなら、このソフトは「さわっても危険でないレジストリの部分を、安全でグラフィカルに書き換える」ために作ったからです。そこで、世間のいくつかのカスタマイズ系ソフトについて、紹介記事を調べてみました。すると、いくつか驚くべき表現が見あたりました。

このソフトは、レジストリを操作しているので、万一が怖い




 さて、どういうことでしょう? レジストリを操作していると、すべて怖いんでしょうか? となると、メモ帳もレジストリを操作しますけど、これも危険なんですか?

 ここまで来て、気づきました。「レジストリを操作することは危険」について、自分でもよくわかっていなかったんです。色々考えてみました。私は「レジストリを窓の手などのカスタマイズ系ソフトで操作するのは、危険でないはず」という考えがあります。ところが、頭の片隅では、「レジストリを操作することは危険であり、バックアップを取っておくことが良い。マイクロソフトのWebサイトでもレジストリ操作前にはバックアップを取れと書いてあるし、何よりも、自分のソフトのヘルプにだってレジストリのバックアップを取ることを奨励すると書いているじゃないか」。私は混乱しました。私はウィルスを作っているわけではありません。わざわざ危険をはらんだ機能をユーザーに提供することなんてないはずです。

 これは一体どういう事なのか? そこで、新しい発見をしました。「レジストリを操作することが危険」という言葉には、主語と手段が抜けているのです。これが今日、初心者ユーザーや、一部のレジストリに詳しくない熟練ユーザーのレジストリに対する不安感を募らせている原因なのです。

 この問題について正しく理解しておくために、レジストリとは何かを知ることは大変重要だと思います。また、このソフトは、レジストリを操作しているので、万一が怖いと書かれてしまったことについて、これが正しいのか間違っているのか。正しいとすれば理由が何か、についても、よく考えて見ることにします。




1. レジストリとは何か

 MSDNライブラリにもふれられているとおり、レジストリは、"環境設定情報が登録されたデータベースであり、このデータベースは、Windowsや、新しい(new)Windowsベースのアプリケーションの、ほとんどの設定・初期化ファイルを扱い" ます。

 具体的にはどういうことなのかというと、レジストリは、Windows 3.1 までの iniファイルの問題点を克服した、WindowsおよびWindowsアプリケーション用の設定記録場所です。厳密には Windows 3.1 の頃にもレジストリは存在していましたが、メリットがあまり無かったため、使われていませんでした。しかし、Windows95以降、レジストリの管理方法が大きく変わり、プログラマにとっても使いやすくなったため、すべてのWin32アプリケーションは記録をレジストリに行うように奨励されています。

 ここで注意したいのが、レジストリはWindowsの環境を特殊に操作するための場所ではないということです。一般的なアプリケーションのほとんどが、自分自身の設定内容を記録するためにレジストリを利用しています。プログラムにとっては、レジストリは不揮発メモリに見えるわけです。

 一般的なアプリケーションというのは、かなり広範囲のアプリケーションを指します。例えば、メモ帳(HKEY_CURRENT_USER\Software\Microsoft\Notepad),エクスプローラ(HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer),Internet Explorer(HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer),Outlook Express(HKEY_CURRENT_USER\Software\Microsoft\Outlook Express),Media Player(HKEY_CURRENT_USER\Software\Microsoft\Windows Media),一太郎(HKEY_CURRENT_USER\Software\Justsystem\Taro),WinCDR(HKEY_CURRENT_USER\Software\Aplix\WinCDR),Acrobat Reader(HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader),Word,Excel,Netscape,…… もはや数え切れません。

 これら全てのアプリケーションがレジストリを操作しています。目的は自分自身の設定を保存するためです。もし「すべてのレジストリを操作するソフトが危険」というのであれば、これら全てのアプリケーションが危険ということになります。つまり、この文は解釈を誤ると、とんでもない社会不安を呼ぶことになるのです。




2. レジストリ操作法

 危険かどうかの話はいったん終わりにして、ここではレジストリを操作するのにどんな方法があるかを紹介します。

 まず、Windows 3.1 まで、iniファイルに記述された内容は「メモ帳」を使って編集できました。iniファイルがテキスト形式で書かれていたからです。しかし、iniファイルには64KB以内でないといけなかったり、各アプリケーション毎にiniファイルを準備するために小さいファイルの分散がおき、クラスタギャップによるディスク領域の無駄遣いが多い等の欠陥があり、レジストリが登場しました。レジストリはWindows自身が徹底的に管理します。Windows は HDD 内にSystem.dat, User.dat (Windows Me ではこれらに加えて Classes.dat)というファイルを作成してレジストリを保存するため、クラスタギャップによるディスク領域の無駄遣いもおきません。しかし、これらのファイルは人間には読めない形式(ここでは便宜的にバイナリファイルという言葉を使います)で書かれているため、メモ帳では編集することができません。そこで、この構造を木構造にしてわかりやすく編集できるツール「レジストリエディタ(Regedit.exe)」を使うことになります。レジストリエディタを使うことにより、ユーザーは全てのレジストリを編集することができるようになりました。

 しかし、レジストリにはかなり詳細なWindows設定も含まれています。当然、「操作してよい部分・いけない部分」はわからないため、初心者ユーザーのみならず熟練ユーザーでも、レジストリエディタを用いてレジストリを編集するのは至難の業と言えます。場合によってはWindowsを再インストールしないと行けなくなるかもしれないからです。これは、レジストリを操作するプログラムがWindowsアプリであるにもかかわらず、レジストリが破壊されるとWindowsが起動しなくなるからです。また、Windowsレジストリの広域部分が破壊されてしまった場合、その設定内容の多さから、人間がそれを1つ1つ修復するのは困難であるといえます。

 そこで、普通はWindows付属の「コントロール パネル」や「システムポリシーエディタ(CD-ROM内にあります)」を用いてレジストリを編集します。これらはレジストリを操作していることをユーザーに意識させず、安全に、グラフィカルに設定を書き換えてくれます。ただし、これらのソフトは編集可能な部分が狭い領域に限られているため、Microsoftのシェル開発チームは TWeakUI という環境設定ツールを作りました。これは、かなり広域のレジストリを扱えるということで、世界中でかなり使われていると思います。

 当然、同じ発想で、レジストリを安全かつグラフィカルに操作できるようにしようというフリーソフトは他にも存在し、定番ソフトの窓の手や、スタートメニュー内に関わるレジストリ設定を得意とするCustomize Start Menu、私の作っているいじくるつくーるなどが存在しています。これらのソフトは、レジストリエディタによりレジストリの「設定してはいけない部分」をユーザーにふれさせない役割も果たしていると見ることもできます。つまり、安全に編集できるレジストリ部分だけを操作させることにより、結果的に安全性を生み出しているのです。

 「レジストリを操作するのは危険」というのは、あくまでレジストリのことを知らないユーザーがレジストリエディタを使って操作するのが危険だということだということが、よくわかったと思います。

 ここで矛盾が生じます。カスタマイズ系ソフトを使ってレジストリを操作することが安全なのなら、なぜレジストリのバックアップを取ることが奨励されるのか? です。


3. レジストリの危険

 レジストリを扱うことの危険はもう一つあります。レジストリはOSが管理しているため、もしOSがレジストリへの書き込みに失敗すると、レジストリファイル全体が壊れる危険性があります。これはiniファイルで分散させていたときには起こりえなかった問題であり、レジストリによる一括管理方式にした結果起こる弊害のうちの一つです。

 そこで、Windows98からは起動時に毎回、レジストリのバックアップを取るように改良されました。これは自動的に行われ、もしWindowsが起動不可になった場合は、Windowsは自動的に過去のレジストリバックアップを復元し、システムの起動を試みます。仮に起動に失敗したとすれば、本来の原因はレジストリにはなかったということになり、バックアップは意味をなしません。これは、仮にユーザーがバックアップを取っていたとしても、システム起動に関わるような問題の解決には、一切関わりを持てないことを意味します。

 となると、カスタマイズ系ソフトがレジストリのバックアップを取ることを奨励することの意味がますます薄れます。これは一体どういう事なのか?

 実は、Windowsを2000%いじくるツール ver.5.20 の場合、システム起動不可の時に備えてレジストリのバックアップを取るようにしているわけではありません。「システムは起動するけど、設定項目を編集しすぎて、元の状態に戻そうにも、どうなっていたか忘れてしまった」ような状況で復元できるようにするためのものなのです。

 それから、他のレジストリを操作する一般ソフト(メモ帳など)に比べて、カスタマイズ系ソフトが根本的に違う部分があります。それは、他のアプリケーションやOS自身のレジストリ設定を操作しているという点です。仮に他のアプリケーションがバージョンアップに伴ってレジストリの管理方法を変えれば、カスタマイズ系ソフトはとんでもなく危険な情報の変更を行う危険性があります。

 さらに、他の一般的なアプリケーションは自分自身の設定を書き換える程度しかレジストリを操作していませんが、カスタマイズ系ソフトは自分自身の設定の他、大量の他のアプリに対する変更も行っています。もしOSがコケる可能性があるとすれば、危険性は増します。

 これは、一定量で降り続ける雨で例えることができます。たとえば、1秒間に3滴の雨が降ったとします。通常のアプリのレジストリ操作時間が、3秒かかったとすれば、雨に濡れるのは9滴です。しかし、カスタマイズ系ソフトはレジストリ編集部分が多いために10秒かかったとすれば、雨に濡れるのは30滴となります。もし、この1滴をレジストリ書き込みにOSがコケる危険性だとすれば、前者は危険に9回しかさらされていないのに対して、後者は30回も危険にさらされています。つまり、カスタマイズ系ソフトは他のソフトに比べて危険という結論が出ます。

 しかし、今回出てきた数字は大きすぎます。実際にレジストリ書き込みにかかる時間は数ミリ秒程度ですし、OSがコケる危険性というのも、ほとんど0に等しいくらいの確率です。つまり、実質的な数値として、危険性は現れてこないのです。




4. 結論

以上より、"レジストリを操作することが危険" というのは、レジストリを知らないユーザーが、レジストリエディタを使って操作するのが危険という意味であり、さらに、カスタマイズ系ソフトについても細かい点を見ればカスタマイズ系ソフトは危険かもしれないが、実質的に危険性が表面に現れることはほとんどないということがわかると思います。


※このページは、ソフトウェアに付属のヘルプファイルをWeb用に再構築したものです。大部分に自動変換を施しているため、一部は正しく変換しきれずに表示の乱れている箇所があるかもしれませんが、ご容赦下さい。また、本ドキュメントはアーカイブドキュメントであり、内容は「いじくるつくーる」最終公開時点、あるいは、それより古い時点のものとなっております。一部、内容が古くなっている箇所があるかと思いますが、あらかじめご了承下さい。
※このページへは、自由にリンクしていただいてかまいません。
このページに関するご意見の受け付けは終了しています。

/トップ/いじくるつくーる/ダウンロード/WebHelp/ヘルプトップ/