我一直致力于这个项目,我会尽力解释我在做什么。
我将从本机DOS(USB DOS Boot thumbdrive)运行一个启动程序(SHOWDATA.EXE)的bat文件,并将该程序中的一些数据输出到文本文件。然后它将启动我的应用程序(使用Open-Watcom为DOS16Bit编译),它使用之前输出的信息修改第二个exe文件(EDITED.EXE)。然后它应该运行新修改的exe(EDITED.EXE)。我的测试环境已经在Virtual Box中并使用USB DOS可启动驱动器。到目前为止,我的系统和程序按预期运行,直到我显示'完成'并想要启动新修改的exe的行,我得到了
读取驱动器C的一般故障
中止,重试,忽略,失败?
Virtual Box此处还显示驱动器A(软盘驱动器A)的写入错误
如果我重新启动系统,我可以毫无问题地运行新修改的文件并获得所需的结果。
我打开或编辑或关闭导致此行为的文件的方式是否有问题?
#include <stdio.h>
#include <string.h>
int main(void)
{
FILE * pFile;
char data1[11];
char data2[33];
pFile = fopen ("testfile.exe","r+b");
printf ("PROGAM TITLE TEXT\n");
printf ("2013\n");
printf ("\n");
printf("Enter 10 Digit String from 1st filed above:\n"); //From previous program output
scanf ("%10s",data1); //only read 10 Chars
printf("Enter 32 Digits from 2nd field above:\n"); //From previous program output
scanf ("%32s",uuid); //only read 32 Chars
fseek (pFile,24523,SEEK_SET);//file offset location to begin write
fputs (sn,pFile); //Write our data!
fseek (pFile,24582,SEEK_SET);//file offset location to begin write
fputs (uuid,pFile); //Write our data!
fseek (pFile,24889,SEEK_SET);//file offset location to begin write
fputs (uuid,pFile); //Write our data!
fclose(pFile); //Close our file
printf ("Finished\n");
return(0);
}
我的Bat文件看起来像这样,我将一个变量从文本文件“D.txt”传递给SHOWDATA.EXE并将输出写入info.txt。然后我用FOR / F解析info.txt以仅显示将用于编辑第二个exe文件(EDITED.EXE)的有用信息。然后它将启动已编辑的exe文件。
TYPE D.txt | SHOWDATA.EXE > Info.txt
PAUSE
MYPROGRAM.EXE
PAUSE
EDITED.EXE
我很茫然。