2008-11-13 40 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); 

什么是你的代码?