2011-10-19 3 views

risposta

5

Odio componenti ecco qualche codice

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

Ciò ha funzionato perfettamente. Grazie. – ivarec

+0

Come utilizzare questo codice per un'unità (come c: \, d: \ e ...)? È possibile aiutarmi? (^_^) –

+1

@ShaahinAshayeri su createfile usa \\. \ C: – opc0de

2

Hai provato RawDiskAccess componente, fonte per Delphi 7 here

+0

sembra essere molto promettente, ma non compila con Delphi 2010. Andando tentare di risolvere la fonte. – ivarec

2

leggerlo come qualsiasi altro disco quando si fa un accesso in lettura grezza. Hai solo bisogno il primo settore

per Delphi si può guardare:

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

fisico accesso al disco (può funzionare per voi) Raw Disk Access (può funzionare per voi) TDiskIO (troppo vecchio , funziona solo con w9x)

+0

Questi componenti non verranno compilati su Delphi 2010 (e probabilmente tutti i Delphis sopra il 2009) e il loro porting mi sta dando dei problemi. Per ora proverò direttamente tramite l'API di Windows se non viene proposta un'altra soluzione e postare e rispondere con esso quando funziona. – ivarec

1

Abbiamo il prodotto RawDisk che fornisce accesso in lettura e scrittura alle partizioni raw sotto XP, Vista e Windows 7 (esistono alcune restrizioni di sicurezza quando si utilizza l'API di Windows e RawDisk consente di ignorare tali restrizioni). Il codice è disponibile per tutte le versioni di Delphi da Delphi 5 a Delphi XE (il supporto XE2 verrà aggiunto in un paio di giorni).