2

Я пытаюсь обновить значки рабочего стола из HTA, используя следующие:

var shell = new ActiveXObject("WScript.Shell");
shell.run("C:\\Windows\\System32\\ie4uinit.exe -show");

Я запускаю его как администратор, и я уверен, что C:\Windows\System32\ie4uinit.exe существует.

Если я использую ту же самую команду из vbscript .vbs он успешно запускает файл.

Это какое-то ограничение? Почему HTA не может запустить C:\Windows\System32\ie4uinit.exe ?

Сообщение об ошибке:

Как я могу сделать эту работу?

1 ответ1

0

Ваш раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Classes\htafile\Shell\Open\Command содержит значение:

C:\Windows\SysWOW64\mshta.exe "%1" {1A460BD7-F1C3-4B2E-88BF-4E770A288AF5}%U{1A460BD7-F1C3-4B2E-88BF-4E770A288AF5} %*

Это 32-битный обработчик HTA, что означает, что вы работаете в 32-битном режиме.

Это также означает, что вы используете 32-разрядную версию VBScript, так что перенаправление файлов Windows фактически заставляет его искать в C:\Windows\SysWOW64 , где ie4uinit.exe не существует.

В этом ответе ServerFault можно найти решение, позволяющее избежать поддержки двух разных версий ваших сценариев VBScript.

В качестве альтернативы вы можете попробовать запустить приложение, используя 64-битный обработчик HTA, который находится по адресу C:\Windows\System32\mshta.exe .

Вам следует учитывать тот факт, что Microsoft больше не поддерживает активные приложения HTA, предпочитая вместо этого концентрироваться на Windows Forms и аналогичных технологиях, поэтому вполне вероятно, что HTA в будущем станет устаревшей.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .