Błąd Nie można znaleźć silnika skryptowego VBScript dla skryptu

Innego dnia natknąłem się na problem niemożności uruchomienia skryptów vbs (Visual Basic Script) na komputerze z systemem Windows 7. Jak się okazało, problem jest dość powszechny i ​​występuje we wszystkich wersjach systemu Windows, zaczynając od XP, a kończąc na Widows 8.

Problem jest następujący: podczas próby uruchomienia dowolnego skryptu VBS na komputerze pojawia się błąd:

Błąd CScript: nie można znaleźć silnika skryptowego „VBScript”

lub w rosyjskiej wersji systemu Windows:

Błąd CScript: nie można znaleźć jądra wykonania „VBScript” dla skryptu

Przede wszystkim sprawdź dostępność pliku. cscript.exe w katalogu % Windir% \ system32 (zwykle jest to c: \ Windows \ system32 \)

Następnie musisz ponownie zarejestrować bibliotekę vbscript.dll, uruchamiając w wierszu poleceń (z uprawnieniami administratora)

regsvr32 / s% SystemRoot% \ System32 \ vbscript.dl

Jeśli problem nie ustąpi po ponownym uruchomieniu, wypróbuj następujące polecenia w wierszu poleceń (ponownie zarejestruj wszystkie biblioteki niezbędne do uruchamiania skryptów Visual Basic na komputerze):

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

Dość często problem związany z niemożnością wykonania skryptów VBS jest spowodowany nieprawidłowym usunięciem programu antywirusowego. Faktem jest, że niektóre programy antywirusowe, gdy są zainstalowane w systemie, zmieniają klucz rejestru, który wskazuje na bibliotekę vbscript.dll, pisząc zamiast tego własną bibliotekę. Tj. Przed uruchomieniem jakiegokolwiek skryptu vbs, jego kod najpierw sprawdza specjalny moduł antywirusowy pod kątem bezpieczeństwa, a dopiero potem kod jest przesyłany do biblioteki vbscript.dll w celu wykonania. W ten sposób antywirus zyskuje kontrolę nad wykonywaniem wszystkich skryptów VBS na komputerze.

Jeśli program antywirusowy został poprawnie usunięty, kluczowa wartość powinna powrócić do wartości standardowej, ale niektóre programy antywirusowe (często zgrzeszyły programy antywirusowe McAfee, AVAST i produkty firmy Kaspersky Lab AVP) zapominają o tym, lub użytkownik może stworzyć problem poprzez nieprawidłowe usunięcie programu antywirusowego (niestosowanie standardowej procedury odinstalowania )

Na przykład ten klucz rejestru przyjmuje taką wartość podczas instalowania programu antywirusowego McAfee na komputerze.

C: \ Program Files \ Common Files \ McAfee \ SystemCore \ ScriptSn.20130508143011.dll

Aby przywrócić początkowe ustawienia, otwórz edytor rejestru i przejdź do sekcji HKEY_CLASSES_ROOT \ CLSID \ B54F3741-5B07-11cf-A4B0-00AA004A55E8 \ InprocServer32. Domyślny klucz (Domyślnie) nie może być pusty ani wskazywać na bibliotekę inną niż vbscript.dll. Jeśli nie, zmień jego wartość na ścieżkę biblioteki. vbscript.dll (domyślnie jest C: \ Windows \ system32 \ vbscript.dll)

Wskazówka. Jeśli podczas próby zapisania zmian w rejestrze pojawi się błąd „Nie można zmienić ... Błąd podczas zapisywania nowej wartości parametru” lub „Błąd edycji wartości”, musisz udzielić swojemu kontu prawa do modyfikacji tej gałęzi rejestru (RMB w InprocServer32 -> Pozwolenie)

Możesz po prostu zapisać następujący tekst w pliku z rozszerzeniem reg i zaimportować go do rejestru:

Edytor rejestru systemu Windows w wersji 5.00
[HKEY_CLASSES_ROOT \ CLSID \ B54F3741-5B07-11cf-A4B0-00AA004A55E8 \ InprocServer32]
@ = "C: \\ Windows \\ system32 \\ vbscript.dll"Wskazówka. Wszystkie powyższe dotyczą gałęzi HKEY_CLASSES_ROOT \ Wow6432Node \ CLSID \ B54F3741-5B07-11cf-A4B0-00AA004A55E8. W sekcji InprocServer32 należy również zapisać wartość domyślną C: \ Windows \ system32 \ vbscript.dll

Myślę, że pomimo coraz większego rozprzestrzeniania się skryptów Powershell wśród mas, większość administratorów systemów i programistów przez długi czas nie będzie w stanie porzucić nagromadzonego bagażu różnych skryptów automatyzacji na vbs, więc opisany problem i metody jego rozwiązania będą ważne przez długi czas..