我试图检查注册表项是否存在,无论我尝试什么,我总是收到错误消息“无法打开注册表项进行读取”
我使用的代码:
keyPath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\BOS\\BOSaNOVA TCP/IP\\Set 1\\Cfg\\Sign On\\";
try
{
var shell = new ActiveXObject("WScript.Shell");
var regValue = shell.RegRead(keyPath);
shell = null;
}
catch(err)
{
}
我在这里缺少什么?
最佳答案
您可能需要删除尾部斜杠。如果您使用它,它将查找您指定的键的默认值,如果没有找到,则会给出该错误。
相反,如果您尝试通过不使用尾部斜杠来访问一个键,就好像它是一个值一样,您将得到相同的错误。
一些尝试访问 key 的示例:
失败:
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);
关于registry - 检查 WScript 是否存在注册表项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2086563/