我想从非管理员程序发出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,顺便说一句。
答案 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参数的文档。我想你误解了这两个参数。