HTA не может запустить ie4uinit.exe

457
Azevedo

Я пытаюсь обновить значки рабочего стола из 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?

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

enter image description here

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

2
Так что же такое сообщение об ошибке, когда оно не работает? DavidPostill 5 лет назад 0
Я обновил вопрос с экраном ошибки. Azevedo 5 лет назад 0
Мне все еще кажется, что 32-разрядное перенаправление может объяснить ie4uinit не найдено. Вы уверены, что выполняете в 64-битном режиме в тот момент, когда отображается диалоговое окно? harrymc 5 лет назад 0
Положительно. 64-битная. Я проверил образ процесса в диспетчере задач. Azevedo 5 лет назад 0
Что происходит, когда вы запускаете систему под именем `psexec -i -s`? В качестве еще одного теста включите для своей учетной записи [Обход проверки хода] (https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/bypass-traverse-checking). harrymc 5 лет назад 0
Не могли бы вы также показать содержимое раздела реестра `HKEY_LOCAL_MACHINE \ SOFTWARE \ Classes \ htafile \ Shell \ Open \ Command` и теги заголовка вашего HTML. harrymc 5 лет назад 0
Ключ reg содержит: `C: \ Windows \ SysWOW64 \ mshta.exe"% 1 "% U % *` Azevedo 5 лет назад 0
Это 32-битный обработчик HTA: `C: \ Windows \ SysWOW64 \ mshta.exe` - ** SysWOW64 **. Все больше и больше похоже на то, что перенаправление является ответом, даже если какой-то неизвестной магией диалог создается 64-битной задачей. Вы можете попробовать использовать `C: \ Windows \ System32 \ mshta.exe`, но это может сломать некоторые вещи - существует причина, по которой 32-битная версия является обработчиком по умолчанию. harrymc 5 лет назад 0

1 ответ на вопрос

0
harrymc

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

C:\Windows\SysWOW64\mshta.exe "%1" %U %* 

Это 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 в будущем станет устаревшей.

Все 64 бит здесь. Все еще не это. Я дал полный путь к «ie4uinit.exe» Azevedo 5 лет назад 0
Диспетчер задач в Windows 10 больше не показывает 32- и 64-разрядность процесса. Для этого вам нужен Process Explorer, в котором отображается столбец «Тип изображения», или дважды щелкните исполняемый файл и увидите его в поле «Изображение». harrymc 5 лет назад 0
Теоретически вы можете получить доступ к реальной системе 32 с помощью [Redirector файловой системы] (https://docs.microsoft.com/en-us/windows/desktop/winprog64/file-system-redirector): `C: \ Windows \ Sysnative \ ie4uinit.exe`, хотя я не знаю, насколько хорошо это будет работать в вашей среде. Обратите внимание, что `Sysnative` - это не каталог, а всего лишь инструмент обхода, и что он не существует для 64-битных приложений. harrymc 5 лет назад 0
@ Азеведо: Есть комментарии? harrymc 5 лет назад 0
Все тот же. Azevedo 5 лет назад 0
Он останется таким же, пока вы работаете в 32-битном режиме. Ссылка, которую я дал, имеет решение, которое я не проверял. harrymc 5 лет назад 0
У вас все еще есть сомнения относительно правильности моего ответа? harrymc 5 лет назад 0