获取VBS脚本以更改注册表

时间:2013-09-23 13:02:06

标签: vbscript registry skype wsh

我一直在尝试许多不同的解决方案来创建一个脚本,只需点击一下就可以改变 Skype 中的一些注册表设置。我尝试使用延迟和发送输入直接编写脚本,但似乎没有任何工作。

我得到的最接近的是:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Skype\Phone]
"ProxySetting"=-
"ProxyAddress"=-
"DisableUDP"=-

但是,这仍会导致“ RegistryEditor ”的确认框。我试过让脚本发送回车,我尝试制作一个单独的VBS脚本来运行这个文件并发送两次输入以处理确认框但没有“顺利”成功。

适当的解决方案是什么?

1 个答案:

答案 0 :(得分:1)

使用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")