在具有GENERIC_ALL访问权限的ProjectedFS中打开文件(投影文件系统)

时间:2019-04-23 20:43:33

标签: c windows winapi filesystems internals

我已经使用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())

P.S。 GENERIC_READ_WRITE_EXECUTE正常工作

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

1 个答案:

答案 0 :(得分: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(用于更改权限)和{{1 }}(更改所有者)。您可以检查File Security and Access Rights来访问WRITE_OWNER

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