2014-07-26 63 views
1

我的目標是將.exe文件包裝到另一個.exe文件中。每當啓動包裝器.exe時,應啓動嵌入式.exe。 我已經將二進制文件添加爲資源。 現在我想將文件作爲tmp文件加載,並使用system()函數或其他替代方法來執行二進制文件。但是,我無法獲取tmpfile的文件名。我不能使用tmpnam,因爲它只會返回一個文件名,但不會創建實際的臨時文件。在C++中執行二進制tmpfile

我迄今爲止代碼:

#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; 
} 

請你幫幫我。 謝謝。

+0

爲什麼你需要這個計劃作爲資源嵌入?除了主程序之外,你不能簡單地安裝嗎? –

+0

您正在使用WinAPI,因此您可以使用GetTempFileName()+ GetTempPath()來生成臨時文件名。然後使用生成的文件名爲fopen()創建文件以進行二進制寫入。然後使用你的fwrite()+ fclose()。然後ShellExecute()用於運行應用程序 – grisha

回答