我需要创建不依赖WMI的脚本,以执行以下操作:
我在互联网上发现的几乎所有注册表操作VBScript代码片段都依赖于WMI。出于某些原因,这是不可接受的。
您是否有任何关于如何在不依赖WMI的情况下操纵注册表的建议?
答案 0 :(得分:0)
WScript.Shell
对象的注册表函数,但它们仅限于读取,写入和删除键/值。除了通过读取并检查结果之外,没有检索注册表项或值的函数的功能。检索注册表值类型的函数也不存在。
从WMI对象访问注册表的其他方法是通过REG.EXE
函数使用打包的WScript.Shell.Exec
命令行工具。这是通过使用QUERY
,ADD
,DELETE
,IMPORT
或EXPORT
命令参数完成的。运行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
对象完成的注册表操作。