2012-01-05 16 views
6

Dal RawDisk website:È possibile ottenere l'accesso in scrittura ai settori del disco non formattato in Vista e Windows 7 in modalità utente?

Il nuovo modello di sicurezza di Windows Vista pone severe restrizioni sulle applicazioni eseguite in modalità utente. Anche con diritti amministrativi elevati, l'applicazione non può ottenere l'accesso in scrittura ai settori del disco non elaborati.

È vero?

From the Microsoft doc:

i cambiamenti al file system e per lo stack di archiviazione non si applicano se il volume non è montato o se il volume non ha alcun file system.

Si prega di dare

  • o un link al documento ufficiale di Microsoft conferma il sito rawdisk
  • o un esempio di codice di lavoro. (Non sono riuscito ovviamente quello di crearne uno, CreateFile() chiamata non riesce con ERROR_ACCESS_DENIED se GENERIC_WRITE è impostata.)

Altri documenti Microsoft rilevanti che finora ho trovato:

+0

Cosa succede quando provi (con un volume sacrificale ovviamente)? – Richard

+0

@Richard Ottiene 'ERROR_ACCESS_DENIED' (0x5). Sto testando su una scheda SD grezza. – Ali

+0

Questa è la tua risposta. – Richard

risposta

1

Sì. Il primo articolo si fornisce un collegamento a un elenco di eccezioni più:

  • se il file system non è montato
  • se il file system è stato bloccato.
  • se i settori vengono scritti risiedere spazio di sistema di file al di fuori (questo include i settori di avvio, e il caso "nessun file di sistema" dove ovviamente tutti i settori sono al di fuori del file system)
  • se la richiesta di scrittura è stata contrassegnata da un driver in modalità kernel.

Ovviamente, l'ultima eccezione è irrilevante per voi. La modalità utente è l'opposto della modalità kernel. Le altre eccezioni si applicano ancora.

+0

Il file 'CreateFile()' fallisce per 'GENERIC_WRITE'. Si ** non ** ha un handle per chiamare' DeviceIoControl() 'e il problema 'FSCTL_ALLOW_EXTENDED_DASD_IO'. Se si applicano ancora le altre eccezioni, come dovrei chiamare' CreateFile() 'in modo da non ottenere un' ERROR_ACCESS_DENIED'? Il processo è correttamente elevato Fornire un esempio di codice funzionante – Ali

+0

Bene, questo è un non correlato non hai un numero di settore a quel punto, quindi le restrizioni basate sui settori non hanno ancora importanza. _did_ specifica sia "OPEN_EXISTING' e' FILE_SHARE_WRITE', vero? "e stai aprendo il volume (' \\. \ X: '), non è f sistema ile ('\\. \ X: \')? – MSalters

+0

Sì, lo faccio esattamente. Non ho idea di quali siano gli attributi di sicurezza, ho appena passato NULL. – Ali