gpt4 book ai didi

c++ - 在 C++ 中执行二进制 tmpfile

转载 作者:行者123 更新时间:2023-11-30 04:02:38 26 4
gpt4 key购买 nike

我的目标是将一个 .exe 文件包装在另一个 .exe 文件中。每当包装器 .exe 启动时,嵌入的 .exe 应该启动。我已将二进制文件添加为资源。现在我想将文件作为 tmpfile 加载并使用 system() 函数或其他替代方法来执行二进制文件。但是,我无法获取 tmp 文件的文件名。我不能使用 tmpnam,因为它只会返回一个文件名,而不会创建一个实际的临时文件。

到目前为止我的代码:

#include <iostream>
#include <windows.h>
#include <stdio.h>

using namespace std;

int main()
{
HRSRC hRes = FindResource(0, MAKEINTRESOURCE(1), RT_RCDATA);
HGLOBAL hMem = LoadResource(0, hRes);
void* pMem = LockResource(hMem);
DWORD size = SizeofResource(0, hRes);

FILE * f = tmpfile();
fwrite(pMem, size, 1, f);
fclose(f);

return 0;
}

请帮帮我。谢谢。

最佳答案

据此:

http://man7.org/linux/man-pages/man3/tmpfile.3.html

关闭后文件被删除,所以使用fflush而不是 fclose (在嵌入的 fclose 完成后运行 exe)。然后在此处找到有关文件名的一些信息:

Is there a way to get the filename from a `FILE*`?

关于c++ - 在 C++ 中执行二进制 tmpfile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24970029/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com