El documento relevante Microsoft es:
Blocking Direct Write Operations to Volumes and Disks
CreateFile, remarks on Physical Disks and VolumesCreateFile: operación de escritura directa a disco sin procesar "Acceso denegado" - Vista, Win7
El ejecutable está escrito en C++ y se llama CreateFile()
para abrir una tarjeta SD tarjeta que tiene sin sistema de archivos. Las llamadas CreateFile()
y ReadFile()
consecutivas son exitosas para GENERIC_READ
sin privilegios de administrador.
CreateFile
falla para GENERIC_WRITE
incluso con privilegios de administrador. En el explorador, establezco Ejecutar como administrador en Propiedades> Compatibilidad> Nivel de privilegio. También traté de ejecutar el ejecutable desde un cmd de administrador (iniciado con Ctrl + Shift + Enter, "Administrador:" está en el título de la ventana, correctamente elevado). Aún así, obtengo ERROR_ACCESS_DENIED
(0x5).
¿Tengo que pasar algo más al CreateFile
? no tengo idea de lo que son los atributos de seguridad, acabo de pasar null, relevant code is here en la línea 92, y en la línea 48. here
O ¿hay algo más que debe ser configurado para ejecutar el proceso con privilegios de administrador?
preguntas Un relacionadas:
Can I get write access to raw disk sectors under Vista and Windows 7 in user mode?
Raw partition access in Windows Vista
How to obtain direct access to raw HD data in C?
Is there a clean way to obtain exclusive access to a physical partition under Windows?
Si no hay un sistema de archivos crear el archivo debe fallar. Quizás con la lectura no falla hasta que lee al menos un byte, en contraste con escribir, que intenta crear un archivo real (vacío) en abierto. –
@DannyVarod La lectura funciona como un encanto, he leído gran cantidad de datos y los datos son correctos. Consulte [Microsoft's doc] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858%28v=vs.85%29.aspx#physical_disks_and_volumes), 'CreateFile' ** es la forma de manejar unidades sin sistema de archivos. ** – Ali
¿Qué valor se pasa como el parámetro * access * a 'open_device()'? – wallyk