(王景余)问题提出:在微机使用中,由于病毒等原因致使主引导扇区信息被破坏,机器不能自举成功,无法正常使用的现象时有发生。
解决思路:将原保留的正常BOOT信息重新写入即可恢复。为此,本人用BORLANDC++编写了RWBOOT.C程序,在286、386微机上编译通过并投入使用,在日常的工作中,发挥了重要作用。
使用方法:在微机正常的情况下,执行RWBOOT中的“1”选择,建立本机主引导扇区信息文件,当遇到上述问题时,可用软盘启动后,执行RWBOOT程序中的“2”选择,文件名用原来“1”选择所形成的主引导扇区信息文件,重新写BOOT扇区,最后再热启动,机器即可恢复正常。程序清单如下:
;
/*RWBOOT.C读、写主引导扇区信息程序*/
#include<stdio.h>
#include<bios.h>.
int k,i,n,buff[256] ;
unsigned char namel[80];
FILE *f1,*fopen();
main()
{
system("cls");
printf(" \n *
*");
printf("\n *");
printf("读、写主引导扇区信息程序");
printf(" *");
printf(" \ n *
*");
printf(" \n * 1.读主引导扇区信
息 *");
printf(" \n *
*");
printf(" \n * 2.写主引导扇区信
息 *");
print(" \n *
*");
flag:
printf(" (请选择1,2):");
scanf("%c",&k);
if(k==’1’) rboot();
else if(k==’2’)wboot();
else{printf("\n\n 选择错,请重新选
择!\n");
goto flag;}
fclose(fl);return(0);
}
rboot()
{
printf("\n 请输入存放BOOT信息文件:");
scanf("%s,namel)
f1=fopen(namel’"wb");
biosdisk(0X02,0X80,0X00,0X00,0X01,0X01,buff);
for(n=0;n<256;n++)putw(buff[n],f1);
printf("\n\n 本机主引导扇区BOOT信息已
存入");
printf("%S文件中",namel); return(0);
}
wboot()
{
printf("\n 请输入写入BOOT信息文件名:");
scanf("%s",namel);
if((f1=fopen(namel,"rb"》==0)
{printf("\n\n\n "%s。不存在,请查
核!\n");
fclose(f1);exit(0);}
for(n=0;n<256;n++) buff[n]=getw(f1);
biosdisk(0x03,0x80,0x00,0x00,0x01,Ox01,buff);
printf("\n\n 本机主引导扇区BOOT已
用");
printf("%s文件信息刷新",namel); return(0);
}