Manipulando arquivos e diretórios criptografados

Um programador ou usuário pode marcar um diretório ou arquivo como criptografado. Um arquivo marcado como criptografado é criptografado pelo sistema de arquivos NTFS usando o driver de criptografia atual. Se, posteriormente, o arquivo for marcado como não criptografado, ele será descriptografado e deixado em um estado de texto sem formatação (não seguro).

Os diretórios não são criptografados por conta própria. Em vez disso, por padrão, em um diretório "criptografado", todos os novos arquivos no diretório são criptografados na criação. Um usuário deve alterar especificamente o status de um novo arquivo para descriptografado se o usuário não quiser que o arquivo seja criptografado. Um diretório criptografado está visível. Para tornar um diretório inacessível a outros usuários, use os métodos padrão de controle de acesso.

As funções de criptografia não podem ser usadas com a API de Backup.

Para criptografar um novo arquivo, use a função CreateFile com o sinalizador FILE_ATTRIBUTE_ENCRYPTED . Para criptografar um arquivo existente, use a função EncryptFile . Todos os fluxos de dados no arquivo são criptografados. Se o arquivo já estiver criptografado, EncryptFile não fará nada além de retornar um valor diferente de zero, o que indica êxito. Se o arquivo for compactado, EncryptFile descompacta o arquivo antes de criptografá-lo.

Para descriptografar um arquivo criptografado, use a função DecryptFile . Se o arquivo não estiver criptografado, DecryptFile não fará nada, mas retornará um valor diferente de zero indicando êxito.

A função EncryptionDisable desabilita ou habilita a criptografia do diretório indicado e dos arquivos nele. Ele não afeta a criptografia de subdiretórios abaixo do diretório indicado.

Para recuperar o status de criptografia de um arquivo, use a função FileEncryptionStatus. Como alternativa, chame a função GetFileAttributes e examine o sinalizador FILE_ATTRIBUTE_ENCRYPTED no valor retornado.

CopyFile e CopyFileEx tentam criptografar o arquivo de destino com as chaves usadas na criptografia do arquivo de origem. Se isso não puder ser feito, ambas as funções tentarão criptografar o arquivo de destino com chaves padrão. Se ambos os métodos não puderem ser feitos, CopyFile e CopyFileEx falharão com um erro de ERROR_ENCRYPTION_FAILED . Se você quiser que CopyFileEx conclua a operação de cópia mesmo quando o arquivo de destino não puder ser criptografado, inclua o sinalizador COPY_FILE_ALLOW_DECRYPTED_DESTINATION no valor do parâmetro dwCopyFlags em sua chamada para CopyFileEx.