2008-11-13 38 views
3

我需要從該可執行文件中讀取添加到可執行文件末尾的數據。
在win32上,我遇到了一個問題,我無法打開用於閱讀的.exe文件。我試過CreateFile和std :: ifstream。
是否有一種方法可以指定對最初未用共享打開的文件的非獨佔讀取訪問權限。可執行讀取本身

編輯 - 關於stackoverflow的偉大的事情,你問錯誤的問題,並得到正確的答案。

+0

數據如何添加到可執行文件的末尾? – Marcin 2008-11-13 18:04:46

+0

它只是將數據捕獲到stub exe的末尾,然後在最後標記一種FAT。像一個自解壓exe文件系統。 – 2008-11-13 18:14:46

回答

1

我們這樣做是更新資源在我們的一個項目中。它有什麼問題?如果EXE正在運行,那麼它已經處於打開狀態以便讀取,並且可以多次繼續以只讀方式打開它。我剛剛檢查了我們的代碼,我們只是使用:

HANDLE file=CreateFile(filename, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0); 

這在所有版本的32位和64位Windows上均可正常工作。

1

我沒有問題,打開使用這兩種語句的過程的可執行映像:

FILE* f = fopen(fname, "rb"); 

hFile = CreateFile(fname, FILE_READ_DATA, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); 

什麼是你的代碼?