备份和还原加密文件

加密文件系统 (EFS) 筛选加密文件的打开方式,使打开该文件的应用程序能够访问未加密的信息,当然,只要它具有适当的凭据来访问文件并获取解密文件所需的密钥。 对此文件的后续读取操作将生成未加密的文本。 这非常适用于对加密文件的典型访问,并使文件的加密和解密保持透明。 但是,这会妨碍加密文件的备份,因为如果使用 CreateFile、ReadFileWriteFile 等标准文件 I/O 调用尝试备份,则备份的文件将是纯文本版本。

提供原始加密函数来解决此问题。 备份应用程序是这些功能的主要目标用户。 原始加密函数与其他文件系统函数的区别在于,打开、读取和写入函数允许访问原始加密数据流,还允许读取/写入$EFS流。 因此,原始加密函数的调用方不需要访问解密文件的加密密钥。 以下原始加密 API 可用于备份和还原应用程序:

原始加密 API 说明
OpenEncryptedFileRaw 打开一个加密文件,可以访问加密格式的数据。 如果调用方无权访问文件的密钥,则调用方需要 SeBackupPrivilege 导出加密文件,或需要 SeRestorePrivilege 来导入加密文件。
CloseEncryptedFileRaw 关闭使用 OpenEncryptedFileRaw 打开的加密文件
ReadEncryptedFileRaw 读取以加密格式保留其数据的加密文件
WriteEncryptedFileRaw 写入加密文件,以加密格式保留其数据
ImportCallback 应用程序定义的回调,用于 WriteEncryptedFileRaw
ExportCallback 应用程序定义的回调,用于 ReadEncryptedFileRaw