首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CreateFile不顾ERROR_ACCESS_DENIED返回FILE_FLAG_BACKUP_SEMANTICS

CreateFile不顾ERROR_ACCESS_DENIED返回FILE_FLAG_BACKUP_SEMANTICS
EN

Stack Overflow用户
提问于 2018-07-18 02:25:34
回答 1查看 644关注 0票数 2

我正在开发一个Windows备份应用程序(混合Go / C++),它需要从磁盘备份文件。

我的申请

  1. 在“备份运算符”组中以用户身份运行,并在secpol.msc中显式启用“备份文件和目录”。
  2. 调用OpenProcessToken()AdjustTokenPrivileges(),为整个过程授予SeBackupPrivilege,成功
  3. 成功地获取磁盘的VSS快照。
  4. 遍历VSS快照中的所有文件,然后尝试按以下方式对它们进行备份: CreateFile( path, GENERIC_READ, FILE_SHARE_READ, NULL, // SecurityAttributes OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS|FILE_FLAG_SEQUENTIAL_SCAN NULL // TemplateFile );
  5. 调用BackupRead()读取文件流。

这通常很好,而且我可以成功地读取我的用户帐户通常会被拒绝读取访问权限(例如C:\Windows\System32\config\systemprofile)的文件。

但是尽管存在这个,一些“顽固”的文件仍然给出了一个错误,来自CreateFile:0x5 ERROR_ACCESS_DENIED (“访问被拒绝”)。

我知道那些“顽固”的文件不是修复点。

这些文件存在于本地、内部附加、SATA、NTFS磁盘驱动器上,而不是网络驱动器或任何异国情调。

“顽固”的文件都是文件,而不是目录。

它们是一系列文件类型(docx、fla、swf、.DS_Store、.)。

除了防病毒程序之外,没有安装任何特殊的安全软件。

竞争对手的备份软件能够毫无错误地备份这些文件。

为什么会发生这种事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-25 23:53:02

此错误可能由EFS加密文件引起,而该文件不存在密钥.

在这种情况下,CreateFile在任何情况下都是不可能的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51392690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档