2011-10-19 10 views

Respuesta

5

odio componentes asi que aquí hay algo de código

var 
    RawMBR : array [0..511] of byte; 
    btsIO : DWORD; 
begin 
    hDevice := CreateFile('\\.\PHYSICALDRIVE1', GENERIC_READ, 
     FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0); 
    if hDevice <> INVALID_HANDLE_VALUE then 
    begin 
     SetFilePointer(hDevice,512 * 0,nil,FILE_BEGIN); // replace 0 with sector that you wish to read 
     ReadFile(hDevice, RawMBR[0], 512, btsIO, nil); 
     CloseHandle(hDevice); 
    end; 
    end; 
+0

Eso funcionó perfectamente. Gracias. – ivarec

+0

Cómo usar este código para un disco (como c: \, d: \ y ...)? ¿Es posible ayudarme? (^_^) –

+1

@ShaahinAshayeri en createfile use \\. \ C: – opc0de

2

¿Usted intentó RawDiskAccess componente, fuente de Delphi 7 here

+0

parece prometedor, pero no compila con Delphi 2010. Voy a tratar de arreglar la fuente. – ivarec

2

Leer al igual que cualquier otro disco cuando se realiza un acceso de lectura en bruto. Sólo se necesita el primer sector

Para Delphi se puede ver en:

http://www.torry.net/pages.php?id=253

Física acceso al disco (que puede funcionar para usted) Raw acceso al disco (puede funcionar para usted) TDiskIO (demasiado viejo funciona solo bajo w9x)

+0

Esos componentes no compilarán en Delphi 2010 (y probablemente todo Delphis por encima de 2009) y portarlos me está haciendo pasar un mal momento. Trataré directamente a través de la API de Windows por ahora si no se propone ninguna otra solución y la publicaré y responderé cuando funcione. – ivarec

1

Tenemos el producto RawDisk que proporciona acceso de lectura y escritura a particiones sin procesar bajo XP, Vista y Windows 7 (existen ciertas restricciones de seguridad al usar la API de Windows y RawDisk le permite eludir esas restricciones). El código está disponible para todas las versiones de Delphi, desde Delphi 5 hasta Delphi XE (la compatibilidad con XE2 se agregará en un par de días).

Cuestiones relacionadas