微机自举工具 ——读写主引导扇区信息程序

🏠 首页 《无线电》杂志 1994年 🔗 第8期 🔗 第32页 分类:无线电技术自学经验交流 🔗 王景余 🔗

(王景余)问题提出:在微机使用中,由于病毒等原因致使主引导扇区信息被破坏,机器不能自举成功,无法正常使用的现象时有发生。

解决思路:将原保留的正常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);