Получение VBS-скрипта для изменения реестра
Я пробовал множество различных решений для создания скрипта, который одним щелчком мыши может изменить некоторые настройки реестра в Skype. Я пытался выполнить прямой сценарий, даже используя задержку и отправку ввода, но, похоже, ничего не работает.
Самое близкое, что я получил, это следующее:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Skype\Phone]
"ProxySetting"=-
"ProxyAddress"=-
"DisableUDP"=-
Однако это все еще приводит к появлению окна подтверждения от "RegistryEditor". Я попытался получить скрипт для отправки ввода, и я попытался создать отдельный сценарий VBS для запуска этого файла и дважды отправить ввод для обработки окна подтверждения, но без "гладкого" успеха.
Каким было бы правильное решение?
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")