Control de archivos y directorios cifrados

Un programador o usuario puede marcar un directorio o archivo como cifrado. El sistema de archivos NTFS cifra un archivo marcado como cifrado mediante el controlador de cifrado actual. Si en una fecha posterior, el archivo se marca como no cifrado, se descifra y se deja en un estado de texto sin formato (no seguro).

Los directorios no se cifran por sí mismos. En su lugar, de forma predeterminada, en un directorio "cifrado", todos los archivos nuevos del directorio se cifran al crearse. Un usuario debe cambiar específicamente el estado de un nuevo archivo para descifrar si el usuario no desea que el archivo se cifre. Un directorio cifrado está visible. Para que un directorio no sea accesible para otros usuarios, use los métodos estándar de control de acceso.

Las funciones de cifrado no se pueden usar con la API de copia de seguridad.

Para cifrar un nuevo archivo, use la función CreateFile con la marca FILE_ATTRIBUTE_ENCRYPTED . Para cifrar un archivo existente, use la función EncryptFile . Todos los flujos de datos del archivo se cifran. Si el archivo ya está cifrado, EncryptFile no hace nada más que devuelve un valor distinto de cero, lo que indica que se ha realizado correctamente. Si el archivo está comprimido, EncryptFile descomprime el archivo antes de cifrarlo.

Para descifrar un archivo cifrado, use la función DecryptFile . Si el archivo no está cifrado, DecryptFile no hace nada, sino que devuelve un valor distinto de cero que indica que se ha realizado correctamente.

La función EncryptionDisable deshabilita o habilita el cifrado del directorio indicado y los archivos en él. No afecta al cifrado de subdirectorios por debajo del directorio indicado.

Para recuperar el estado de cifrado de un archivo, use la función FileEncryptionStatus . Como alternativa, llame a la función GetFileAttributes y examine la marca FILE_ATTRIBUTE_ENCRYPTED en el valor devuelto.

CopyFile y CopyFileEx intentan cifrar el archivo de destino con las claves usadas en el cifrado del archivo de origen. Si esto no se puede hacer, ambas funciones intentan cifrar el archivo de destino con claves predeterminadas. Si no se pueden realizar ambos métodos, CopyFile y CopyFileEx producirán un error de ERROR_ENCRYPTION_FAILED . Si desea que CopyFileEx complete la operación de copia incluso cuando no se pueda cifrar el archivo de destino, incluya la marca COPY_FILE_ALLOW_DECRYPTED_DESTINATION en el valor del parámetro dwCopyFlags en la llamada a CopyFileEx.