1

Тема: HTA: Командная строка запуска .hta файлов

В Win10 (возможно и раньше в Win8) запись в ключе HKEY_CLASSES_ROOT\htafile\Shell\Open\Command изменилась с привычной

C:\Windows\System32\mshta.exe "%1" %*

на

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

Вот сижу и думаю...
1. Зачем принудительно подсовывать 32битный движок? Не лучше ли было бы написать C:\Windows\System32\mshta.exe? Тогда hta файлик запущенный из 32 битной среды использовал бы 32битный движок, а запущенный из 64битной - 64битный движок. ИМХО логично...
2. Что за странные CLSIDы c не менее странным %U ms-овцы пытаются засунуть между именем файла и параметрами ком.строки? Зачем ???

Конечно, на оба вопроса можно ответить "наплюй на весь этот бред и пропиши в реестр то, что привычнее и удобнее" но все равно мне кажется что не совсем они там в Майкрософте идиоты и их действия как то можно объяснить. А может быть даже как то использовать на пользу...

2

Re: HTA: Командная строка запуска .hta файлов

Возможно, дело в том, что у 32-битного движка больший выбор в плане использования всяких COM-объектов. Не у всех их есть 64-битные версии.

3

Re: HTA: Командная строка запуска .hta файлов

YMP, согласен. Своя логика, хотя и весьма спорная, тут есть.
Только боюсь что на 2й вопрос логически ответить не удастся. Тут нужно просто знать. Излазил весь MSDN - не нашел ни одного упоминания о странном 1E460BD7-F1C3-4B2E-88BF-4E770A288AF5.

4

Re: HTA: Командная строка запуска .hta файлов

Изменения, по-видимому, начались раньше: Win7 Enterprise SP1


C:\>reg query "HKEY_CLASSES_ROOT\htafile\Shell\Open\Command"

HKEY_CLASSES_ROOT\htafile\Shell\Open\Command
    (Default)    REG_SZ    C:\Windows\SysWOW64\mshta.exe "%1" %*
( 2 * b ) || ! ( 2 * b )