处理加密文件和目录

程序员或用户可将目录或文件标记为加密。 标记为加密的文件是使用当前加密驱动程序由 NTFS 文件系统加密的。 如果在以后的日期,文件标记为未加密,则会将其解密并保留为纯文本(不安全)状态。

目录本身未加密。 相反,默认情况下,在“加密”目录中,目录中的所有新文件都在创建时进行加密。 如果用户不希望加密文件,则用户必须专门更改新文件的状态以解密。 加密目录可见。 若要使其他用户无法访问目录,请使用访问控制的标准方法。

加密函数不能用于 备份 API

若要加密新文件,请使用具有 FILE_ATTRIBUTE_ENCRYPTED 标志的 CreateFile 函数。 若要加密现有文件,请使用 EncryptFile 函数。 文件中的所有数据流均已加密。 如果文件已加密,EncryptFile 不执行任何作,但返回非零值,表示成功。 如果文件是压缩的,EncryptFile 会先对文件进行解压缩,然后再加密。

若要解密加密文件,请使用 DecryptFile 函数。 如果文件未加密,DecryptFile 不执行任何操作,但返回一个指示成功的非零值。

EncryptionDisable 函数禁用或启用所指示目录及其文件中文件的加密。 它不会影响所指示目录下面的子目录的加密。

若要检索文件的加密状态,请使用 FileEncryptionStatus 函数。 或者,调用 GetFileAttributes 函数,并检查返回值中的 FILE_ATTRIBUTE_ENCRYPTED 标志。

CopyFileCopyFileEx 尝试使用源文件加密中使用的密钥加密目标文件。 如果无法执行此作,这两个函数都会尝试使用默认密钥加密目标文件。 如果这两种方法都无法完成,CopyFileCopyFileEx 失败,并出现 ERROR_ENCRYPTION_FAILED 错误。 如果要 CopyFileEx 完成复制操作,即使目标文件无法解密,也请在调用 CopyFileEx时将标志 COPY_FILE_ALLOW_DECRYPTED_DESTINATION 包含在 dwCopyFlags 参数的值中。