レジストリ操作


このドキュメントはJavaScriptについて知識があるという前提で書かれています。

■はじめに

WSHではレジストリの操作が可能で、 レジストリから情報を読み込んだり、 またレジストリに新しい情報を書き込んだりする事が出来ます。 間違ったレジストリの情報を削除するなどすると、 OSが起動しなくなる事もありますので、 レジストリの操作は十分な知識を持った上で行うようにして下さい。 レジストリ操作に関する詳細な仕様については、Microsoft社提供の WSHリファレンス をご覧下さい。

■レジストリの情報を取得する

レジストリの情報を取得するには Shellオブジェクトの RegReadメソッドを使用します。

var WshShell = WScript.CreateObject("WScript.Shell");
var NNDir = WshShell.RegRead("HKCU\\Software\\Netscape\\Netscape Navigator\\Main\\Install Directory");
//HKCUは、HKEY_CURRENT_USERの略称です
WScript.Echo(NNDir);

上記の例は、Netscapeがインストールされているディレクトリを取得するコードです。

なお、指定したキーが存在しなかった場合はエラーが発生してしまいます。 それを防ぎたい場合は、try...catch文を使ってRegReadメソッド使用時にエラーが起きた場合 catchステートメントにエラーを投げさせます。

var WshShell = WScript.CreateObject("WScript.Shell");
try {
  var NNDir = WshShell.RegRead("HKCU\\Software\\Netscape\\Netscape Navigator\\Main\\Install Directory");
  WScript.Echo(NNDir);
}
catch(e) {
  WScript.Echo("error: " + e.description);
}
■レジストリの情報を削除する

レジストリの情報を削除するにはRegDeleteメソッドを使用します。 例えば、HKEY_CURRENT_USER\hoge\fooの削除するならば、

var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.RegDelete("HKCU\\hoge\\foo")
//HKCUは、HKEY_CURRENT_USERの略称です

とします。

なおこの場合も存在しないキーに対して RegDeleteメソッドを使用すると エラーが発生しますので、try...catch文で対処してください。

■レジストリに書き込み

レジストリに新たなキーを書き込む時は、RegWriteメソッドを使用します。 例えば、HKEY_CURRENT_USER\hoge\fooに Hello World という文字列を記録するなら、

var WshShell = WScript.CreateObject("WScript.Shell");
WshShell.RegWrite("HKCU\\hoge\\foo","Hello World!");
//HKCUは、HKEY_CURRENT_USERの略称です

とします。

なお、このテスト用に書き込んだキー(HCKU\hoge\)を削除するには、 WshShell.RegDelete("HKCU\\hoge\\"); を実行して下さい。

●レジストリの操作は慎重に。