EncryptFileA 函数 (winbase.h)

加密文件或目录。 文件中的所有数据流都已加密。 加密目录中创建的所有新文件均已加密。

语法

BOOL EncryptFileA(
  [in] LPCSTR lpFileName
);

参数

[in] lpFileName

要加密的文件或目录的名称。

调用方必须具有 FILE_READ_DATAFILE_WRITE_DATAFILE_READ_ATTRIBUTESFILE_WRITE_ATTRIBUTESSYNCHRONIZE 访问权限。 有关详细信息,请参阅 文件安全和访问权限

返回值

如果该函数成功,则返回值为非零值。

如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。

注解

EncryptFile 函数需要对正在加密的文件进行独占访问,如果另一个进程正在使用该文件,则会失败。

如果文件已加密, 则 EncryptFile 仅返回一个非零值,该值指示成功。 如果文件已压缩, EncryptFile 将在加密文件之前解压缩该文件。

如果 lpFileName 指定只读文件,则函数将失败, GetLastError 返回 ERROR_FILE_READ_ONLY。 如果 lpFileName 指定包含只读文件的目录,则函数会成功,但该目录未加密。

若要解密加密的文件,请使用 DecryptFile 函数。

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

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

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

注意

winbase.h 标头将 EncryptFile 定义为别名,该别名根据 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 (

另请参阅

DecryptFile

文件加密

文件管理函数