registry - 检查 WScript 是否存在注册表项

标签 registry wsh

我试图检查注册表项是否存在,无论我尝试什么,我总是收到错误消息“无法打开注册表项进行读取”

我使用的代码:

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/

相关文章:

windows - 有没有办法获取所有已安装程序的安装路径?

c# - 在 C# 中查找和删除注册表项

javascript停止特定服务

c++ - 使用 C++ 编辑注册表

c# - 如何: Create a Key In the Registry (Visual C#)?

batch-file - 如何在VBS Shell命令参数中转义等号=

vbscript - 执行时显示消息对话框

javascript - 从 JavaScript 运行 WScript.Shell.Run() 时获取 "Wrong number of arguments or invalid property assignment"

c++ - 配置 Qt .pro 文件以使用 cl.exe 和 link.exe 修复链接错误

registry - 如何在 Windows CE 5.0 设备上添加注册表项?