Cortar y pegar en el Explorador (el shell gráfico de Windows) funciona exactamente igual que llamar a alguna variante de la API MoveFile
, probablemente específicamente MoveFileExW
con marcas que permiten copiar el archivo (ya que es necesario para" mover "un archivo a través de conexiones de red o particiones de disco físico ) y el indicador de escritura, que indica a la función que no regrese hasta que el disco se haya actualizado con todos los cambios, incluida la eliminación de la ubicación del archivo anterior (para "movimientos" que deben implementarse como operaciones de copiar y eliminar). Este también es generalmente el mismo comportamiento que obtendría al usar los comandos move
o ren
en cmd.exe
(esos comandos hacen lo mismo), arrastrar y soltar el archivo en el Explorador, etc. El sistema realizará un cambio de nombre, en lugar de un movimiento físico, si es posible, ya que es mucho más rápido.
Cualquier operación de movimiento exitosa significará que el archivo ya no es accesible en su ruta / nombre anterior, y se aplicará instantáneamente cuando la operación sea exitosa. Sin embargo, la "eliminación" hecha por un "movimiento" de copiar y eliminar dejará el contenido del archivo en el disco, y simplemente eliminará la entrada del sistema de archivos y marcará el espacio como libre; cualquier nuevo dato escrito en el disco puede sobrescribir ese espacio, pero hasta que lo haga, un atacante con acceso de bajo nivel al disco podría pasar por alto el sistema de archivos y acceder al contenido del archivo leyendo el disco como un dispositivo de bloque. Los "movimientos" que tienen lugar dentro de una sola partición y, por lo tanto, se implementan simplemente como un cambio de nombre, ni siquiera cambian la ubicación física en el disco, solo la ruta lógica a través del sistema de archivos que apunta a la ubicación física del archivo. Si desea realizar una eliminación más completa, por ejemplo, al sobrescribir la ubicación anterior del archivo, debe usar una operación de Copia explícita ( CopyFileW
, copiar y pegar, o el comando copy
, etc.) y luego realice la operación de eliminación completa en la ruta anterior.