wscript.exe перестал работать с пользовательским протоколом
Все компьютеры в нашей компании настроены с использованием специального протокола, который запускает скрипт vbs, поэтому при нажатии на ссылку с этим пользовательским протоколом скрипт vbs запускается и выполняет операции, которые взаимодействуют с файловой системой и приложениями, в противном случае недоступными для браузера.,
Это файл.reg, используемый для регистрации протокола:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\<name>]
"URL Protocol"=""
@="Url:<Description>"
"UseOriginalUrlEncoding"=dword:00000001
[HKEY_CLASSES_ROOT\<name>\DefaultIcon]
@="C:\\Windows\\System32\\WScript.exe"
[HKEY_CLASSES_ROOT\<name>\shell]
[HKEY_CLASSES_ROOT\<name>\shell\open]
[HKEY_CLASSES_ROOT\<name>\shell\open\command]
@="C:\\Windows\\System32\\WScript.exe \"C:\\Program Files\\<name>.vbs\" \"%1\""
Сценарий прекрасно работает с 2014 года без проблем на ~50 компьютерах.
На прошлой неделе один пользователь пожаловался, что перестал работать. Я обнаружил, что WScript.exe больше не работает, поэтому скопировал его, создав WScript2.exe, изменил пользовательский протокол для запуска WScript2.exe и возобновил работу.
Этим утром мой компьютер также не слушал щелчки в моем пользовательском протоколе. Я сделал копию WScript.exe в WScript2.exe, и он возобновил работу.
Я ожидаю, что мой телефон скоро начнет звонить.
Почему WScript.exe перестал слушать пользовательский протокол?
Почему его идентичная копия все еще работает?
РЕДАКТИРОВАТЬ (ответы на комментарии)
Возможно, если бы я знал, как лучше описать "это перестало работать", я бы знал, как это исправить:)
Я не знаю, перестал ли он работать из-за обновления Microsoft, обновления антивируса или изменения ИТ-инфраструктуры / конфигурации. Вот краткое изложение того, что привело меня к обходному пути:
- Я сравнил свой собственный протокол с рабочим, я выбрал
mailto
в качестве ссылки - Я заметил, что при изменении последней строки файла.reg (см. Выше) он будет работать с любым другим исполняемым файлом, но он не будет работать с
wscript.exe
- Я сравнил исполнение
wscript.exe
на зараженных компьютерах к его выполнению на компьютерах (пока нет) влияет и разницы нет- Двойной клик показывает то же самое
Windows Script Host Settings
диалог - Выполнение из командной строки с теми же аргументами, которые используются пользовательским протоколом, работает как положено
- Двойной клик показывает то же самое
- Пользовательский протокол передает правильные аргументы при выполнении другого исполняемого файла
- На данный момент я думал, что Windows занесен в черный список
wscript.exe
и я начал искать альтернативу - Я пытался переименовать
wscript.exe
вwscript2.exe
но я не мог, потому что у меня нет разрешения TrustedInstaller - Я сделал копию вместо переименования
- Я проверил копию из командной строки, и она работала как оригинал
- Я протестировал копию из пользовательского протокола, и она работала так, как когда-то делал оригинал
РЕДАКТИРОВАТЬ 2 (больше ответов на комментарии)
Все компьютеры имеют Windows 10 Pro.
Нажав на Settings - Updates & Security - View update history
это говорит Feature update to Windows 10, version 1803 Succesfully installed on 5/22/2018
, Нажав на Show what's new in this update
ничего полезного не показывает.
РЕДАКТИРОВАТЬ 3
Не работает = никаких симптомов, ничего не происходит, ничего не выполняется, ничего не регистрируется (насколько я знаю).
Я попробовал с простым VBScript с одной строкой MsgBox "Hello"
, Он работает из командной строки, но не из пользовательского протокола. Диспетчер задач не показывает ничего всплывающего, но я не знаю, показывает ли он это, потому что продолжительность жизни слишком коротка, чтобы показать, или потому что он не выполняется. Тот же скрипт работает с wscript2.exe.
Мне кажется, что что-то (Windows, антивирус, ...) занесет в черный список custom protocol + wscript.exe
вещь, но не custom protocol + any other executable
или же any other environment + wscript.exe
, Вот почему я попытался скопировать wscript.exe в wscript2.exe. И я был приятно удивлен, узнав, что это работает.