Есть так много вещей, которые могут пойти не так в вашем сценарии, что вы должны начать просто:
(1) дано .vbs, что делает не попыток изменить реестр (который для Windows с нетерпением защищающей):
MsgBox "ThatsMe"
и призывание
err := exec.Command("cmd.exe", "/c", "ThatMe.vbs").Run()
из EXE-файл в той же папке, я получаю предупреждение о безопасности: «Вы действительно хотите открыть ThatsMe.vbs из подключенного сетевого диска E: \». Если я согласен, скрипт выполняется и появляется MsgBox. Настройки безопасности могут быть настолько строгими, что вас даже не спрашивают.
(2) Для выполнения вышеуказанного вызова на работу оболочка должна знать, как обращаться с файлами .VBS. Настройки вашего соединения/ftype могут не предоставлять эту информацию.Тогда
err := exec.Command("wscript.exe", "ThatsMe.vbs").Run()
или
err := exec.Command("cscript.exe", "ThatsMe.vbs").Run()
должен работать - интересно без предупреждения безопасности.
(3) Вместо того, чтобы полагаться на PATH и с/делать все файлы/работу в той же папке, provinding полных спецификаций файлов может быть хорошей идеей:
err := exec.Command(
"C:/WINDOWS/system32/wscript.exe",
"E:/trials/SoTrials/answers/10024850/go/ThatsMe.vbs").Run()
(4) Если вы можете выполнить смиренный ThatsMe.vbs, но ваш registry.vbs все равно не работает, тогда вам нужно исследовать, кому разрешено видеть/изменять части реестра, которые вас интересуют. Возможно, вам нужно вызвать ваш исполняемый файл в качестве администратора.
(5) Во время экспериментов я получил довольно приличные сообщения об ошибках от Go для (un) предназначенных мерзких вещей, которые я пробовал (используя% comspec% вместо cmd.exe, плохие спецификации файла, ...). Но попытка прочитать несуществующий элемент реестра вызвала всплывающее сообщение об ошибке Windows Script Host и no Ошибка Go. Таким образом, ваш «абсолютно ничего не происходит» диагноз заставляет меня задаться вопросом, скрывает ли Windows от вас сообщения об ошибках. Существуют темные опции, такие как «Отображать уведомление о каждой ошибке скрипта» в настройках IExplorer Advanced.
Вызывается с помощью 'cscript.exe' в сочетании с функцией, которую я нашел по адресу http://stackoverflow.com/questions/14763625/i-have-issue-with-shell-regwrite-on-windows-8, чтобы вызвать UAC разрешили проблему. Спасибо за помощь. – Peter