我正在开发一个Windows备份应用程序(混合Go / C++),它需要从磁盘备份文件。
我的申请
secpol.msc中显式启用“备份文件和目录”。OpenProcessToken()和AdjustTokenPrivileges(),为整个过程授予SeBackupPrivilege,成功CreateFile( path, GENERIC_READ, FILE_SHARE_READ, NULL, // SecurityAttributes OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS|FILE_FLAG_SEQUENTIAL_SCAN NULL // TemplateFile );BackupRead()读取文件流。这通常很好,而且我可以成功地读取我的用户帐户通常会被拒绝读取访问权限(例如C:\Windows\System32\config\systemprofile)的文件。
但是尽管存在这个,一些“顽固”的文件仍然给出了一个错误,来自CreateFile:0x5 ERROR_ACCESS_DENIED (“访问被拒绝”)。
我知道那些“顽固”的文件不是修复点。
这些文件存在于本地、内部附加、SATA、NTFS磁盘驱动器上,而不是网络驱动器或任何异国情调。
“顽固”的文件都是文件,而不是目录。
它们是一系列文件类型(docx、fla、swf、.DS_Store、.)。
除了防病毒程序之外,没有安装任何特殊的安全软件。
竞争对手的备份软件能够毫无错误地备份这些文件。
为什么会发生这种事?
发布于 2018-07-25 23:53:02
此错误可能由EFS加密文件引起,而该文件不存在密钥.
在这种情况下,CreateFile在任何情况下都是不可能的。
https://stackoverflow.com/questions/51392690
复制相似问题