我怎样才能从标准输出运行 exe?

我怎样才能从标准输出运行 exe?

我有一个 .exe 文件作为 Github 项目上的发布版本托管,这是我的项目,因此我知道这个文件是安全的,因为我已经编译了它。https://github.com/USERNAME/PROJECT/releases/latest/download/TORUN.exe是给我这个文件的链接。我想做这样的事情:

curl -o- https://github.com/USERNAME/PROJECT/releases/latest/download/TORUN.exe | bash

Windows 上的替代品是什么bash,或者我可以调用什么来运行 .exe 文件?

答案1

简而言之,你不需要。

即使在 Linux 上,Bash 也无法从 stdout 运行“exe”文件。curl|bash您看到的所有命令都是运行Bash 脚本仅 – 已编译的可执行文件不能以这种方式运行。(请记住,Bash 仅要求操作系统运行可执行文件,不是 Bash 而是操作系统加载并执行它...)如果涉及已编译的可执行文件,此类脚本通常会将其下载到 /tmp 并从那里运行它。

Windows 也是如此;它通常无法运行未存储在实际文件中的 .exe。在 PowerShell 中看到 curl|bash 的等效版本是很常见的,通常使用其内置的iwr(Invoke-WebRequest) 命令来下载脚本而不是 curl,但直接在内存中执行仍然仅限于 PowerShell 脚本,而不是 .exe 文件。

(在内存中加载可执行文件的方法很复杂,但它们可能会引起反恶意软件系统的注意。)

答案2

应该工作。

curl -o %TEMP%\TORUN.exe https://github.com/USERNAME/PROJECT/releases/latest/download/TORUN.exe && .\%TEMP%\TORUN.exe

相关内容