![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Como ya te han dicho, ese código no creo que sea de delphi, de hecho no creo que funcione en windows, al menos no en Windows XP. Por suerte, no hace falta andar jugando con las interrupciones para leer el primer sector del disco.
Es así de sencillo: Código:
uses
SysUtils, Classes;
var
Buffer: Array[1..512] of Char;
begin
with TFileStream.Create('\\.\PhysicalDrive0',fmOpenRead or fmShareDenyNone) do
try
ReadBuffer(Buffer,Sizeof(Buffer));
// Ahora tenemos el sector 0 (tambien conocido por MBR) en el buffer
finally
Free;
end;
end.
Código:
var
Buffer: Array[0..$1FF] of Byte;
begin
with TFileStream.Create('\\.\PhysicalDrive0',fmOpenRead or fmShareDenyNone) do
try
ReadBuffer(Buffer,Sizeof(Buffer));
finally
Free;
end;
with TFileStream.Create('C:\mbr.bin',fmCreate) do
try
WriteBuffer(Buffer,Sizeof(Buffer));
finally
Free;
end;
end.
Código:
uses
SysUtils, Classes;
var
Buffer: Array[0..$1FF] of Byte;
i: Integer;
begin
Writeln;
with TFileStream.Create('\\.\PhysicalDrive0',fmOpenRead or fmShareDenyNone) do
try
Writeln('Leyendo el el MBR ...');
ReadBuffer(Buffer,Sizeof(Buffer));
// Ahora lo destripamos un poco
if (Buffer[$1FE] = $55) and (Buffer[$1FF] = $AA) then
Writeln('El disco es "bootable"')
else
Writeln('El disco NO es "bootable"');
for i:= 0 to 3 do
begin
if Buffer[$01BE + ($10 * i)] = $80 then
Writeln(Format('La particion numero %d es "bootable"',[i]))
else if Buffer[$01BE + ($10 * i)] = 0 then
Writeln(Format('La particion numero %d NO es bootable',[i]))
else
Writeln(Format('La particion numero %d esta mal formada',[i]));
// Para un windows el tipo es el 7
Writeln(Format('La particion numero %d es del tipo: %d',[i,Buffer[$01C2 + ($10 * i)]]));
end;
finally
Free;
end;
end.
![]() Última edición por seoane fecha: 04-08-2007 a las 02:23:28. |
|
#2
|
||||
|
||||
|
[quote = seoane]
Ahora la pregunta es que hacer con la información obtenida. Una buena opción es guardar el sector de arranque en un archivo, nunca viene mal tener una copia de seguridad. [/quote] Disculpen mi ignorancia, si guardo el sector de arranque es posible volver a restituirlo si se daña??????? ![]()
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
|
#3
|
||||
|
||||
|
Cita:
![]() Pero una copia guardada se podría restaurar perfectamente, por ejemplo, desde un Live Cd de linux. Utilizando el comando dd Código:
dd if=mbr.bin of=/dev/hda bs=512 count=1 /dev/hda = Primer disco duro (hdb para el segundo, etc ...) Aunque si le tienes manía al linux, siempre podemos recurrir a los clásicos. Aquí cuento como copiar el mbr a un disquete de inicio y luego restaurarlo usando el programa RESTORRB: http://www.clubdelphi.com/trucos/index.php?id=356 Por ultimo decir, que no hace mucho tuve que reinstalar windows en un equipo donde también tengo instalado linux. Como es sabido, el windows copia su propio mbr durante la instalación, impidiendo así que el linux pudiese volver a arrancar. Hay descritas muchas formas de reparar esto, pero una bastante sencilla es guardar una copia del mbr, instalar windows, y restaurar el mbr. Mas fácil y rápido imposible. |
|
#4
|
||||
|
||||
|
Esa era mi duda, pero lo dicho eres el barbaro ![]()
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
|
#5
|
||||
|
||||
|
Hola
Perdonad mi atraso, pero despues de 18 horas sin conexion ya pude. Gracias por vuestras respuestas he aprendido mucho, pero mucho de delphi, verdad que se llama asi?. Que suerte que me hice entender con mi pregunta. Que no funcione con windowns no es problema de todos modos no tengo ordenador. Saluditos |
|
#6
|
|||
|
|||
|
Cita:
![]() , Ah que mi amigo Carlos, es usted bueno para las ironías.Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Probad este programa para visualizar vuestros archivos con extensión 3ds | kakarotv5 | Gráficos | 0 | 26-02-2007 14:26:57 |
| Necesito interbase para un programa con interbase | David | Conexión con bases de datos | 2 | 20-04-2006 00:23:55 |
| Hola Es mi primer mensaje en este Foro y necesito ayuda para archivos XML | Juan_Carlos_P | Gráficos | 2 | 08-08-2005 19:11:17 |
| Como realizo este programa? | Neo | Varios | 0 | 09-06-2003 18:08:55 |
|