Ошибка: Can’t find script engine VBScript for script

На днях столкнулся с проблемой невозможности запуска любых скриптов vbs (Visual Basic Script) на компьютере с Windows 7. Как оказалось, проблема довольно распространённая и встречается во всех версиях Windows, начиная с XP и заканчивая Widows 8.

Проблема следующая: при попытке запустить любой vbs скрипт на компьютере появляется ошибка:

CScript Error: Can’t find script engine «VBScript»

или в русскоязычной версии Windows:

Ошибка CScript: Не удается найти исполняющего ядра «VBScript» для сценария

Ошибка CScript : Can't find script engine "VBScript"

В первую очередь стоит проверить наличие файла 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 MCAfee заменят библиотеку обработчик vbs (vbscript.dll)

Чтобы восстановить начальные настройки, откройте редактор реестра и перейдите в раздел HKEY_CLASSES_ROOT\CLSID\{B54F3741-5B07-11cf-A4B0-00AA004A55E8}\InprocServer32. Ключ по умолчанию (Default) не должен быть пустым или указывать на отличную от vbscript.dll библиотеку. Если это не так, поменяйте его значение на путь к библиотеке vbscript.dll (по умолчанию это C:\Windows\system32\vbscript.dll)

Совет. Если при попытке сохранить изменения в реестр появляется ошибка доступа «Не удается изменить… Ошибка при записи нового значения параметра» или «Error Editing Value», нужно предоставить своей учетной записи права на модификацию данной ветки реестра (ПКМ по ветке InprocServer32 ->Permission)

Можно просто сохранить следующий текст в файл с расширением reg и импортировать его в реестр:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{B54F3741-5B07-11cf-A4B0-00AA004A55E8}\InprocServer32]
@=»C:\\Windows\\system32\\vbscript.dll»
Совет. Все сказанное выше относится и к ветке HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{B54F3741-5B07-11cf-A4B0-00AA004A55E8}. В разделе InprocServer32 в качестве значения по умолчанию также должно быть прописано C:\Windows\system32\vbscript.dll

Думаю, несмотря на все большее распространение в массы сценариев на Powershell , большинство системных администраторов и разработчиков ПО еще долго не смогут отказаться от накопленного багажа различных скриптов автоматизации на vbs, так что описанная проблема и методы ее решения будут актуальными еще долгое время.


Предыдущая статья Следующая статья


Комментариев: 1 Оставить комментарий

Оставить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)