可执行阅读本身

时间:2008-11-13 17:57:25

标签: c++ winapi file

我需要从该可执行文件中读取添加到可执行文件末尾的数据 在win32上我有一个问题,我无法打开.exe进行阅读。我尝试过CreateFile和std :: ifstream 有没有办法指定对最初未通过共享打开的文件的非独占读访问权。

编辑 - 关于stackoverflow的好处,你提出错误的问题并得到正确的答案。

3 个答案:

答案 0 :(得分:3)

为什么不使用专为此功能设计的资源。它不会在最后,但它将在可执行文件中。

如果你在构建之后添加到.exe - 你不必添加到最后,你可以更新内置.exe上的资源

http://msdn.microsoft.com/en-us/library/ms648049(VS.85).aspx

答案 1 :(得分:1)

我们在其中一个项目中这样做。有什么问题呢?如果EXE正在运行,那么它已经打开以供阅读,您可以继续以只读方式多次打开它。我刚检查了我们的代码,我们只是使用:

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

到目前为止,所有版本的32位和64位Windows都没有问题。

答案 2 :(得分:1)

使用以下任一语句打开进程的可执行映像没有问题:

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

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

你的代码是什么?