我使用Projected File System创建了示例应用程序
我已经实现了所有必要的功能,当我从具有 GENERIC_READ 或 GENERIC_WRITE 访问权限的投影 FS 打开文件时,它运行良好,但当我尝试使用 GENERIC_ALL 时,我收到访问被拒绝错误。
出现访问被拒绝
错误的可能原因是什么?
当文件已复制到投影文件系统时,我收到错误。
代码:
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中一一添加权限,看看是哪些权限导致了问题。 但是,您应该仅请求实际需要的访问级别。
关于c - 使用 GENERIC_ALL 访问权限在 ProjectedFS 中打开文件(投影文件系统),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55819130/