由于某些原因,我使用此处描述的方法:http: //geekswithblogs.net/TechTwaddle/archive/2009/10/16/how-to-embed-an-exe-inside-another-exe-as-a .aspx
它从嵌入文件的第一个字节开始,一个一个地经过 4.234.925 个字节!完成大约需要 40 秒。
有没有其他方法可以将嵌入文件复制到硬盘?(我可能在这里错了,但我认为嵌入的文件是从内存中读取的)
谢谢。
由于某些原因,我使用此处描述的方法:http: //geekswithblogs.net/TechTwaddle/archive/2009/10/16/how-to-embed-an-exe-inside-another-exe-as-a .aspx
它从嵌入文件的第一个字节开始,一个一个地经过 4.234.925 个字节!完成大约需要 40 秒。
有没有其他方法可以将嵌入文件复制到硬盘?(我可能在这里错了,但我认为嵌入的文件是从内存中读取的)
谢谢。
一旦您知道嵌入式 exe 的位置和大小,您就可以一口气完成。
LPBYTE pbExtract; // the pointer to the data to extract
UINT cbExtract; // the size of the data to extract.
HANDLE hf;
hf = CreateFile("filename.exe", // file name
GENERIC_WRITE, // open for writing
0, // no share
NULL, // no security
CREATE_ALWAYS, // overwrite existing
FILE_ATTRIBUTE_NORMAL, // normal file
NULL); // no template
if (INVALID_HANDLE_VALUE != hf)
{
DWORD cbWrote;
WriteFile(hf, pbExtract, cbExtract, &cbWrote, NULL);
CloseHandle(hf);
}
正如那个人所说,每个 WriteFile 调用写入更多文件(或整个文件)。每个字节的 WriteFile 调用会非常慢,是的。