2012-01-05 12 views
6

Desde el RawDisk website:¿Puedo obtener acceso de escritura a sectores de disco sin formato en Vista y Windows 7 en modo de usuario?

El nuevo modelo de seguridad de Windows Vista pone fuertes restricciones a las aplicaciones ejecutadas en modo usuario. Incluso con derechos administrativos elevados, la aplicación no puede obtener acceso de escritura a sectores de disco sin formato.

¿Es esto verdad?

From the Microsoft doc:

los cambios al sistema de archivos ya la pila de almacenamiento no se aplican si el volumen no está montado o si el volumen no tiene un sistema de archivos.

Por favor de

  • o bien un enlace al documento oficial de Microsoft confirma el sitio web RawDisk
  • o un ejemplo de código de trabajo. (Obviamente no he logrado crear uno, CreateFile() llamada falla con ERROR_ACCESS_DENIED si GENERIC_WRITE está establecido.)

Otros documentos relevantes de Microsoft que he encontrado hasta ahora:

+0

¿Qué sucede cuando lo intentas (con un volumen sacrificatorio por supuesto)? – Richard

+0

@Richard Obtengo 'ERROR_ACCESS_DENIED' (0x5). Estoy probando en una tarjeta SD en bruto. – Ali

+0

Así que esa es tu respuesta. – Richard

Respuesta

1

Sí. El primer artículo que proporciona enlazar a una larga lista de excepciones:

  • si el sistema de archivos no está montado
  • si el sistema de archivos se ha bloqueado.
  • si los sectores que se escriben residen fuera del espacio del sistema de archivos (esto incluye los sectores de arranque y el caso "sin sistema de archivos" donde obviamente todos los sectores están fuera del sistema de archivos)
  • si la solicitud de escritura ha sido marcada por un controlador en modo kernel.

Obviamente, la última excepción es irrelevante para usted. El modo de usuario es el opuesto al modo kernel. Las otras excepciones todavía se aplican.

+0

El 'CreateFile()' falla para 'GENERIC_WRITE'. Usted ** no ** tiene un controlador para llamar a' DeviceIoControl() 'y el problema 'FSCTL_ALLOW_EXTENDED_DASD_IO'. Si todavía se aplican otras excepciones, ¿cómo debo llamar a' CreateFile() 'para no obtener un' ERROR_ACCESS_DENIED'? El proceso está correctamente elevado. Proporcione un ejemplo de código de trabajo. – Ali

+0

Bueno, eso no tiene relación De todos modos, no tiene un número de sector en ese punto, por lo que las restricciones sectoriales aún no son importantes. Ha especificado _ tanto 'OPEN_EXISTING' como' FILE_SHARE_WRITE', ¿verdad? Y está abriendo el volumen (' \\. \ X: '), no es f sistema ile ('\\. \ X: \')? – MSalters

+0

Sí, hago exactamente eso. No tengo idea de qué atributos de seguridad son, simplemente paso NULL. – Ali

Cuestiones relacionadas