可以使用regedit /s
,但有点尴尬,因为您必须使用设置创建一个文件,然后导入该文件。即使我们忽略了这一点,解决方案仍然存在regedit
不返回指示导入是否成功的状态代码的问题。后者可以通过替换来regedit.exe
解决reg.exe
:
rc = objShell.Run("reg import \\host\share\registry.reg", 0, True)
但是,没有必要导入外部文件。VBScript 可以通过WshShell
对象直接创建、操作和删除注册表项和值:
Set sh = CreateObject("WScript.Shell")
sh.RegDelete "HKLM\SOFTWARE\Policies\Skype\Phone\ProxySetting"
sh.RegDelete "HKLM\SOFTWARE\Policies\Skype\Phone\ProxyAddress"
sh.RegDelete "HKLM\SOFTWARE\Policies\Skype\Phone\DisableUDP"
或通过WMI:
Const HKLM = &h80000001
Const key = "SOFTWARE\Policies\Skype\Phone"
Set reg = GetObject("winmgmts://./root/default:StdRegProv")
rc1 = reg.DeleteValue(HKLM, key, "ProxySetting")
rc2 = reg.DeleteValue(HKLM, key, "ProxyAddress")
rc3 = reg.DeleteValue(HKLM, key, "DisableUDP")