如何仅使用FILE_READ_ATTRIBUTES权限打开文件?

时间:2013-05-25 06:45:48

标签: c++ c windows

我想从非管理员程序发出FSCTL_GET_NTFS_VOLUME_DATA控制代码。该文档说“打开卷时FILE_READ_ATTRIBUTES或FILE_WRITE_ATTRIBUTES访问就足够了”所以我相信这应该是可能的。我尝试了路径和音量路径:“\。\ C:”“\?\ Volume {4f26a671-c36e-11e2-913d-806e6f6e6963}”虽然我可以打开它们,但对DeviceIOControl的调用只适用于{ {1}}。这是代码:

GENERIC_READ | GENERIC_WRITE

上次错误打印出1,顺便说一句。

2 个答案:

答案 0 :(得分:2)

在我的系统上,FILE_READ_ATTRIBUTES不起作用,但FILE_EXECUTE可以使用而且可以在没有管理员权限的情况下使用。

我还需要将共享选项更改为

FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE

让它完全发挥作用。

答案 1 :(得分:0)

使用宏GENERIC_READ | GENERIC_WRITE而不是FILE_READ_ATTRIBUTES。请查看CreateFile函数的dwDesiredAccess和dwFlagsAndAttributes参数的文档。我想你误解了这两个参数。