VBScript:获取注册表值的类型,并使用WMI删除/创建注册表值* *

时间:2012-08-27 05:27:20

标签: vbscript registry wmi

我需要创建依赖WMI的脚本,以执行以下操作:

  1. 检查注册表值是否存在,以及是否具有所需类型
  2. 如果注册表值存在但类型错误,请将其删除
  3. 如果注册表值不存在,或者在步骤#2中删除,则使用某种类型
  4. 创建它
  5. 如果注册表值存在正确类型的,请确保其值正确
  6. 我在互联网上发现的几乎所有注册表操作VBScript代码片段都依赖于WMI。出于某些原因,这是不可接受的。

    您是否有任何关于如何在不依赖WMI的情况下操纵注册表的建议?

1 个答案:

答案 0 :(得分:0)

来自 Windows Scripting Host (WSH)的VBScript / JScript确实具有来自WScript.Shell对象的注册表函数,但它们仅限于读取,写入和删除键/值。除了通过读取并检查结果之外,没有检索注册表项或值的函数的功能。检索注册表值类型的函数也不存在。

从WMI对象访问注册表的其他方法是通过REG.EXE函数使用打包的WScript.Shell.Exec命令行工具。这是通过使用QUERYADDDELETEIMPORTEXPORT命令参数完成的。运行REG.EXE以显示使用情况摘要,或REG.EXE QUERY /?REG.EXE EXPORT /?等,以显示命令使用详情。

QUERY命令的输出将显示值数据及其类型(如果存在)。除了将结果保存在EXPORT文件中之外,还可以使用REG命令。 REG.EXE工具的结果也可以在CMD.EXE的帮助下重定向到文件中。例如:

CMD.EXE /C REG.EXE QUERY "HKEY_CURRENT_USER\Control Panel\Cursors" > "reg output.txt"

请注意output.txt的内容与REG文件的内容不同。 REG文件具有标准格式,部分在Microsoft知识库KB310516中进行了描述。

通过检查REG.EXE工具的退出代码,并解析其输出或生成的REG文件,可以检索注册表值类型。如果可能,并且如果性能受到关注,则应该使用可以使用WScript.Shell对象完成的注册表操作。