C++应用程序杀死USB磁盘Access?
我一直在做这个项目,我会尽力解释我在做什么 我将从本机DOS USB DOS引导thumbdrive运行一个bat文件,该文件启动一个程序SHOWDATA.EXE,并将该程序中的一些数据输出到一个文本文件。然后,它将启动我的应用程序,用openwatcom为DOS16Bit编译,该应用程序使用之前输出的信息修改第二个exe文件EDITED.exe。然后它应该运行新修改的exe EDITED.exe。我的测试环境是在虚拟盒中,使用USB DOS可引导驱动器。到目前为止,我的系统和程序按预期运行,直到我显示“Finished”并希望启动新修改的exe时,我得到一个 读取驱动器C的一般故障 中止、重试、忽略、失败 此处的虚拟框还显示驱动器a的写入错误 如果我重新启动系统,我就可以毫无问题地运行新修改的文件,并获得所需的结果 我打开、编辑或关闭文件的方式是否存在导致此行为的问题C++应用程序杀死USB磁盘Access?,c++,batch-file,usb,dos,C++,Batch File,Usb,Dos,我一直在做这个项目,我会尽力解释我在做什么 我将从本机DOS USB DOS引导thumbdrive运行一个bat文件,该文件启动一个程序SHOWDATA.EXE,并将该程序中的一些数据输出到一个文本文件。然后,它将启动我的应用程序,用openwatcom为DOS16Bit编译,该应用程序使用之前输出的信息修改第二个exe文件EDITED.exe。然后它应该运行新修改的exe EDITED.exe。我的测试环境是在虚拟盒中,使用USB DOS可引导驱动器。到目前为止,我的系统和程序按预期运行,直
#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);
}
我不知所措。你正在编译C++吗?因为对我来说这看起来像C。我想我应该澄清一下,我是使用面向DOS 16位的Open Watcom V2 C/C++编译器编译的。有任何东西在运行吗?如果先运行一些内部命令并暂停,会怎么样?尝试添加cd并在开始处暂停。还请注意,for循环在DOS上不起作用。@Cookie是的,除了for/F NT扩展以外的所有内容都会正常运行。我会CD,我会DIR。我试过,也试过。我还没有先试过CD。让我重新构造成一个子目录,看看它是如何工作的。就在最后一次暂停之后,它继续运行EDITED.EXE,这就是“关于重试失败”错误出现的原因。我重新启动并运行EDITED.exe,它将以程序注入的新值运行。
TYPE D.txt | SHOWDATA.EXE > Info.txt
PAUSE
MYPROGRAM.EXE
PAUSE
EDITED.EXE