OpenEncryptedFileRawA 函数 (winbase.h)

打开已加密的文件以备份(导出)或还原(导入)该文件。 这是一组加密文件系统 (EFS) 函数之一,旨在实现备份和还原功能,同时将文件保持为加密状态。

语法

DWORD OpenEncryptedFileRawA(
  [in]  LPCSTR lpFileName,
  [in]  ULONG  ulFlags,
  [out] PVOID  *pvContext
);

参数

[in] lpFileName

要打开的文件的名称。 字符串必须由 Windows 字符集中的字符组成。

[in] ulFlags

要执行的操作。 此参数可能是以下值之一。

含义
0
打开文件以导出 (备份) 。
CREATE_FOR_IMPORT
1
正在打开文件以导入 (还原) 。
CREATE_FOR_DIR
2
导入 (还原) 包含加密文件的目录。 这必须与前两个标志之一结合使用,以指示操作。
OVERWRITE_HIDDEN
4
在导入时覆盖隐藏的文件。

[out] pvContext

在后续调用 ReadEncryptedFileRaw、WriteEncryptedFileRawCloseEncryptedFileRaw 时必须显示的上下文块 地址。 请不要修改它。

返回值

如果函数成功,则返回 ERROR_SUCCESS

如果函数失败,它将返回 WinError.h 中定义的非零错误代码。 可以将 FormatMessageFORMAT_MESSAGE_FROM_SYSTEM 标志一起使用,以获取错误的泛型文本说明。

注解

调用方必须对文件具有读取或写入访问权限,或者必须在文件所在的计算机上具有备份权限 SeBackupPrivilege ,以便调用成功。

若要备份加密文件,请调用 OpenEncryptedFileRaw 以打开该文件,然后调用 ReadEncryptedFileRaw。 备份完成后,调用 CloseEncryptedFileRaw

若要还原加密文件,请调用 OpenEncryptedFileRaw,在 ulFlags 参数中指定CREATE_FOR_IMPORT,然后调用 WriteEncryptedFileRaw 一次。 操作完成后,调用 CloseEncryptedFileRaw

如果在远程计算机上打开加密文件时 lpFileName 超过 MAX_PATH 个字符,OpenEncryptedFileRaw 将失败。

如果调用方无权访问文件的密钥,则调用方需要 SeBackupPrivilege 来导出加密文件,或者需要 SeRestorePrivilege 来导入加密文件。

BackupReadBackupWrite 函数处理未加密文件的备份和还原。

在 Windows 8、Windows Server 2012 及更高版本中,以下技术支持此功能。

技术 支持
服务器消息块 (SMB) 3.0 协议
SMB 3.0 透明故障转移 (TFO)
具有横向扩展文件共享的 SMB 3.0 (SO)
群集共享卷文件系统 (CSV)
弹性文件系统 (ReFS)
 

SMB 3.0 不支持具有持续可用性功能的共享上的 EFS。

注意

winbase.h 标头将 OpenEncryptedFileRaw 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名的使用与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定

要求

要求
最低受支持的客户端 Windows XP Professional [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Advapi32.lib
DLL Advapi32.dll
API 集 在 Windows 8) 中引入的 ext-ms-win-advapi32-encryptedfile-l1-1-0 (

另请参阅

BackupRead

BackupWrite

CloseEncryptedFileRaw

文件加密

文件管理函数

ReadEncryptedFileRaw

WriteEncryptedFileRaw