由于某些原因,我无法使用JavaScript在.hta中调用curl.exe。以.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>
尽管System32目录中确实存在curl.exe,但仍会导致找不到文件错误。但是,如果我调用位于不同目录中的curl.exe,就可以很好地工作,如果我将该目录添加到PATH中,则只需'curl‘即可。也可以在System32目录中运行notepad.exe或fc.exe。
我还尝试在.hta中使用VBScript启动curl,但也不起作用。但是,如果我使用以下命令创建.js
w=new ActiveXObject("WScript.Shell")
w.run('"C:\\Windows\\System32\\curl.exe" "https://www.google.com" -o t.txt')
或.vbs with
Set w = CreateObject("Wscript.Shell")
w.Run("""C:\\Windows\\System32\\curl.exe"" ""https://www.google.com"" -o t.txt""")
两者都工作得很好。
那么,在.hta中调用curl时,curl不工作的原因是什么?它被列入黑名单了吗(安全?)原因,是某个地方有bug,还是我做错了什么?
编辑:已尝试调用调用curl的.bat。同样的情况:如果.bat调用C:\Windows\System32\curl,则在.hta中调用时不会工作,但在.js或.vbs中调用时可以工作。调用SomeOtherDirectory\curl.exe是可行的。
发布于 2018-10-09 08:22:38
我终于设法在谷歌和found what was wrong上输入了写下的单词。curl.exe文件由32位mshta.exe运行,这导致C:\Windows\System32重定向到不存在HTA的C:\Windows\SysWOW64。用Sysnative替换System32使.hta正常工作。
w.run('"C:\\Windows\\Sysnative\\curl.exe" "https://www.google.com" -o t.txt')
https://stackoverflow.com/questions/52710921
复制相似问题