c++ 导出嵌入数据的更快方法

lf5gs5x2  于 2023-03-25  发布在  其他
关注(0)|答案(2)|浏览(148)

由于某些原因,我使用这里描述的方法:Link
它从嵌入文件的第一个字节开始,一个接一个地遍历4.234.925字节!大约需要40秒才能完成。
有没有其他方法可以把嵌入式文件复制到硬盘上?(我可能错了,但我认为嵌入式文件是从内存中读取的)
谢谢。

xfyts7mz

xfyts7mz1#

一旦你知道嵌入的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);
}
gk7wooem

gk7wooem2#

就像那个人说的,每次WriteFile调用写更多的文件(或者整个文件)。

相关问题