是这样的,
我想要在EXE文件尾部插入数据,使其运行后能得到,原理应该很简单,但实施时遇到了一些困难:
1.发现EXE文件运行后不能读取自身:CFile file;
file.open(__argv[0],CFile::moderead);
.....
可每次都失败,file.h_file总是表示为打开失败。2.读数据也时发现不能直接得到
不读取自身,读取其他文件,得到的数据不准确:
while (file.GetLength()>=file.GetPosition()+10000)
{
file.HugeRead(buf,10000);
str+=buf;
}
file.HugeRead(buf,file.GetLength()-file.GetPosition());
发现,每次应读10000个字节,实际上str却每次增加10003个字节的内容。
可能是我读取的方式有误,请问有没有解决的方法?这两个问题使我的程序无法继续,希望大家能尽量帮助我,谢谢。

解决方案 »

  1.   

    我看到有一办法你先创建一个副本程序并把控制权交给副本运行,然后就可以对已经退出运行的执行文件修改了
    关于读取问题,有些时候你无法保证当前的指针一定在同一个位置,使用seek函数对指针进行移动,我正在写的软件有大量的文件操作还没有发现这样的问题.
      

  2.   

    CFile类中好像没有HugeRead吧,是ReadHuge吧,建议不要用他,32位程序中已经废除了他,用read就可以啊
      

  3.   

    没有其他方法的话我会用DaiWeis()所说的方法,请问还有没有其他方法,可以避开再建一个文件?
      

  4.   

    先试一下这样,看再有没有后面的问题出现,若有就说一声。
    file.open(__argv[0],CFile::modeRead | CFile::shareDenyNone );
      

  5.   

    太好了!
    试用file.open(__argv[0],CFile::modeRead | CFile::shareDenyNone );
    运行后也可以打开。
    谢谢Dai_Weis(),AthlonxpX86(一滴水)与Richuen22(劲深蓝) !