我使用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);
Is GENERIC_ALL equivalent to GENERIC_READ | GENERIC_WRITE | GENERIC_EXECUTE? GENERIC_ALL
的意思是“每个可能的访问级别”(对于文件,这个名称为FILE_ALL_ACCESS
)。它不仅仅是GENERIC_EXECUTE
+ GENERIC_WRITE
+ GENERIC_READ
,GENERIC_ALL
包含诸如DELETE
,WRITE_DAC
(更改权限)和WRITE_OWNER
(更改所有者)等内容。您可以查看File Security and Access Rights以获取FILE_GENERIC_*
。
您可以尝试从GENERIC_READ + WRITE + EXECUTE逐个添加权限,以查看导致问题的权限。但是,您应该只请求实际需要的访问级别。