【问题标题】:Open a file in ProjectedFS with GENERIC_ALL access (Projected File System)使用 GENERIC_ALL 访问权限在 ProjectedFS 中打开文件(投影文件系统)
【发布时间】:2019-09-13 02:32:51
【问题描述】:

我已经使用 Projected File System 创建了示例应用程序

我已经实现了所有必要的功能,当我从具有 GENERIC_READ 或 GENERIC_WRITE 访问权限的投影 FS 打开文件时,它运行良好,但是当我尝试使用 GENERIC_ALL 时,我收到拒绝访问错误。

出现access denied 错误的可能原因是什么? 当文件已复制到投影文件系统时出现错误。

代码:

HANDLE fHandle = CreateFile(path_to_file_in_projected_fs, GENERIC_ALL, 0, 0, OPEN_EXISTING, 0, 0);

预期结果:有效的文件句柄。

实际结果:无效句柄和访问被拒绝错误(通过 GetLastError())

附: GENERIC_READ_WRITE_EXECUTE 工作正常

HANDLE fHandle = CreateFile(path_to_file_in_projected_fs, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);

【问题讨论】:

  • 请发布您的代码、示例输入和预期输出。
  • @JL2210 已编辑,只需添加我尝试访问投影 fs 的客户端代码
  • 你能给出文件的路径并确保你有读/写权限吗?
  • 可能没有完全权限是它无法获得 GENERIC_ALL 访问权限的原因

标签: c windows winapi filesystems internals


【解决方案1】:

Is GENERIC_ALL equivalent to GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE? GENERIC_ALL 表示“所有可能的访问级别”(对于文件,它的名称为 FILE_ALL_ACCESS)。不仅仅是GENERIC_EXECUTE + GENERIC_WRITE + GENERIC_READGENERIC_ALL 包含诸如DELETEWRITE_DAC(更改权限)和WRITE_OWNER(更改所有者)之类的内容。您可以查看File Security and Access Rights 获取FILE_GENERIC_* 的访问权限。

您可以尝试从 GENERIC_READ+WRITE+EXECUTE 中逐一添加权限,看看是哪些权限导致了问题。 但是,您应该只请求实际需要的访问级别

【讨论】:

猜你喜欢
  • 2011-07-23
  • 2014-08-28
  • 2011-10-29
  • 1970-01-01
  • 1970-01-01
  • 2014-08-04
  • 2017-01-17
  • 1970-01-01
  • 2023-03-16
相关资源
最近更新 更多