我需要从该可执行文件中读取添加到可执行文件末尾的数据 在win32上我有一个问题,我无法打开.exe进行阅读。我尝试过CreateFile和std :: ifstream 有没有办法指定对最初未通过共享打开的文件的非独占读访问权。
编辑 - 关于stackoverflow的好处,你提出错误的问题并得到正确的答案。
答案 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);
你的代码是什么?