Aquí te dejo todo lo necesario para copiar el MBR al primer sector de un disquete, de esta manera podremos arrancar el sistema en caso de emergencia. En este caso el código esta en delphi:
Código Delphi
[-]
function LeerMBR(Drive: Integer; Sector: Pointer): Boolean;
var
hDisk: THandle;
BytesRead: DWORD;
begin
Result:= FALSE;
hDisk:= CreateFile(PChar('\\.\Physicaldrive' + IntToStr(Drive)),GENERIC_READ,
FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_FLAG_SEQUENTIAL_SCAN,0);
if hDisk <> INVALID_HANDLE_VALUE then
begin
if ReadFile(hDisk,Sector^,512,BytesRead,nil) then
Result:= BytesRead = 512
else ShowMessage(SysErrorMessage(GetLastError));
CloseHandle(hDisk);
end else ShowMessage(SysErrorMessage(GetLastError));
end;
function EscribirMBR(Letra: Char; Sector: Pointer): Boolean;
var
hDisk: THandle;
BytesWritten: DWORD;
begin
Result:= FALSE;
hDisk:= CreateFile(PChar('\\.\' + Letra + ':'),GENERIC_WRITE,FILE_SHARE_READ,
nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
if hDisk <> INVALID_HANDLE_VALUE then
begin
if WriteFile(hDisk,Sector^,512,BytesWritten,nil) then
Result:= BytesWritten = 512
else ShowMessage(SysErrorMessage(GetLastError));
CloseHandle(hDisk);
end else ShowMessage(SysErrorMessage(GetLastError));
end;
var
Buffer: array[1..512] of Byte;
begin
if LeerMBR(0,@Buffer) then
if EscribirMBR('A',@Buffer) then
ShowMessage('El sector se ha copiado al disquete');
end;
Con esto creo que ya se puede hacer una utilidad de rescate bastante resultona. ¿Que te parece?