Невозможно вызвать curl в .hta, используя JavaScript - PullRequest
0 голосов
/ 09 октября 2018

Почему-то я не могу вызвать curl.exe в .hta, используя JavaScript.Запуск следующего (только в качестве примера) с именем .hta

<!DOCTYPE html>
<html>
    <body>
        <script type="text/javascript">
            w=new ActiveXObject("WScript.Shell")
            w.run('"C:\\Windows\\System32\\curl.exe" "https://www.google.com" -o t.txt')
        </script>
    </body>
</html>

приводит к ошибке «файл не найден», хотя curl.exe определенно существует в каталоге System32.Если я, однако, вызываю curl.exe, расположенный в другом каталоге, это прекрасно работает, а также просто 'curl', если я добавлю этот каталог в PATH.Также работает, например, notepad.exe или fc.exe в каталоге System32.

Я также пытался использовать VBScript для запуска curl в .hta, но это тоже не работает.Однако, если я создаю .js с

w=new ActiveXObject("WScript.Shell")
w.run('"C:\\Windows\\System32\\curl.exe" "https://www.google.com" -o t.txt')

или .vbs с

Set w = CreateObject("Wscript.Shell")
w.Run("""C:\\Windows\\System32\\curl.exe"" ""https://www.google.com"" -o t.txt""")

, оба работают хорошо.

Так в чем причина того, что curl не работает при вызовев .хта?Это занесено в черный список по каким-то причинам (из-за безопасности?), Есть ли где-то ошибка или я просто что-то делаю не так?Та же история: если .bat вызывает C: \ Windows \ System32 \ curl, он не будет работать, когда вызывается в .hta, но работает, когда вызывается .js или .vbs.Вызов SomeOtherDirectory \ curl.exe работает.

1 Ответ

0 голосов
/ 09 октября 2018

Мне наконец-то удалось набрать слова для записи в Google, и обнаружил, что не так .Файлы HTA запускаются 32-разрядным mshta.exe, что приводит к перенаправлению C: \ Windows \ System32 в C: \ Windows \ SysWOW64, где не существует curl.exe.Замена System32 на Sysnative .hta работает.

w.run('"C:\\Windows\\Sysnative\\curl.exe" "https://www.google.com" -o t.txt')
...