おそらく、末尾のスラッシュを削除する必要があります。それを使用すると、指定したキーのデフォルト値が検索され、見つからない場合はそのエラーが発生します。
逆に、末尾のスラッシュを使用せずに値であるかのようにキーにアクセスしようとすると、同じエラーが発生します。
キーにアクセスしようとするいくつかの例:
失敗:
var keyPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion";
var shell = new ActiveXObject("WScript.Shell");
var regValue = shell.RegRead(keyPath);
WScript.Echo("Value: " + regValue);
成功します (ただし、デフォルト値が空であるため、空の結果が得られます):
var keyPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\";
var shell = new ActiveXObject("WScript.Shell");
var regValue = shell.RegRead(keyPath);
WScript.Echo("Value: " + regValue);
値にアクセスしようとするいくつかの例:
成功 (出力はValue: C:\Program Files
):
var keyPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ProgramFilesDir";
var shell = new ActiveXObject("WScript.Shell");
var regValue = shell.RegRead(keyPath);
WScript.Echo("Value: " + regValue);
失敗 (値にアクセスするときに末尾のスラッシュを使用しないでください):
var keyPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\ProgramFilesDir\\";
var shell = new ActiveXObject("WScript.Shell");
var regValue = shell.RegRead(keyPath);
WScript.Echo("Value: " + regValue);