使用GENERIC_ALL访问权限在ProjectedFS中打开文件(Projected File System)

问题描述 投票:0回答:1

我使用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);
c windows winapi filesystems internals
1个回答
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逐个添加权限,以查看导致问题的权限。但是,您应该只请求实际需要的访问级别。

© www.soinside.com 2019 - 2024. All rights reserved.