На днях столкнулся с проблемой невозможности запуска любых скриптов vbs (Visual Basic Script) на компьютере с Windows 7. Как оказалось, проблема довольно распространённая и встречается во всех версиях Windows, начиная с XP и заканчивая Widows 8.
Проблема следующая: при попытке запустить любой vbs скрипт на компьютере появляется ошибка:
или в русскоязычной версии Windows:
В первую очередь стоит проверить наличие файла cscript.exe в каталоге %Windir%\system32 (обычно это c:\Windows\system32\)
Далее нужно попробовать перерегистрировать библиотеку vbscript.dll, выполнив в командной строке (с правами администратора)
regsvr32 /s %SystemRoot%\System32\vbscript.dl
Если после перезагрузки проблема не пропадет, попробуйте в командной строке выполнить следующие команды (перерегистрируем все библиотеки, необходимые для работы скриптов Visual Basic на компьютере):
regsvr32 atl.dll regsvr32 jscript.dll regsvr32 dispex.dll regsvr32 scrrun.dll regsvr32 scrobj.dll regsvr32 vbscript.dll
regsvr32 msxml3.dll regsvr32 ole32.dll regsvr32 oleaut32.dll wscript /regserver
Довольно часто проблема, связанная с невозможностью выполнение vbs скриптов вызвана некорректным удалением антивируса. Дело в том, что некоторые антивирусы при установке в систему меняют в реестре ключ, указывающий на библиотеку vbscript.dll, прописывая вместо него свою библиотеку. Т.е. перед запуском любого vbs скрипта сначала его код проверяет на безопасность специальный модуль антивируса, и лишь затем код передается на выполнение библиотеке vbscript.dll . Таким образом антивирус получает контроль над выполнением всех vbs скриптов на машине.
При корректном удалении антивируса значение ключа должно возвращаться на стандартное, но некоторые антивирусы (часто этим грешил антивирусы McAfee, AVAST и продукты AVP Лаборатории Касперского) «забывают» это сделать, либо проблему может создать сам пользователь, некорректно удалив антивирус (не стандартной uninstall — процедурой)
Например, такое значение примет этот ключ реестра при установке на компьютере антивируса McAfee.
C:\Program Files\Common Files\McAfee\SystemCore\ScriptSn.20130508143011.dll
Чтобы восстановить начальные настройки, откройте редактор реестра и перейдите в раздел HKEY_CLASSES_ROOT\CLSID\{B54F3741-5B07-11cf-A4B0-00AA004A55E8}\InprocServer32. Ключ по умолчанию (Default) не должен быть пустым или указывать на отличную от vbscript.dll библиотеку. Если это не так, поменяйте его значение на путь к библиотеке vbscript.dll (по умолчанию это C:\Windows\system32\vbscript.dll)
Можно просто сохранить следующий текст в файл с расширением reg и импортировать его в реестр:
[HKEY_CLASSES_ROOT\CLSID\{B54F3741-5B07-11cf-A4B0-00AA004A55E8}\InprocServer32]
@=»C:\\Windows\\system32\\vbscript.dll»
Думаю, несмотря на все большее распространение в массы сценариев на Powershell , большинство системных администраторов и разработчиков ПО еще долго не смогут отказаться от накопленного багажа различных скриптов автоматизации на vbs, так что описанная проблема и методы ее решения будут актуальными еще долгое время.