【发布时间】:2019-06-24 14:11:19
【问题描述】:
我正在尝试打开文件的 ::$EA 流。 有没有人这样做过?我在任何地方都找不到任何样本。
执行此操作所需的 dwDesiredAccess 是什么?显然 FILE_EA_READ 还不够。我收到了 ACCESS_DENIED:
HANDLE h = CreateFile(L"foobar.txt::$EA", FILE_READ_EA, 0, NULL, OPEN_EXISTING, 0, NULL);
DWORD err = GetLastError();
或者我是否需要使用 AdjustTokenPrivilege 激活一些权限? 我显然是在管理员帐户下运行的。
【问题讨论】:
-
为什么你认为这与任何特权有关?
GetLastError();给你看什么节目,你为什么不把这个贴在这里?文件未找到猜测。如果你想阅读 EA 这不是文件。你需要使用ZwQueryEaFile -
我们无法直接打开文件的匿名 $EA 属性。
ntfs!NtfsCheckValidAttributeAccess明确禁止它,在这种情况下返回STATUS_ACCESS_DENIED。在 NTFS 中一切都是 stream 的事实是一个实现细节,通常不能用于创建/打开调用,除了 $DATA(匿名或命名)和 $INDEX_ALLOCATION(索引类型,例如目录“$I30”文件index -- 或FindFirstVolumeMountPoint打开的 "$Extend\$Reparse" 中的 "$R" 重解析点索引)。 -
@RbMm - 我认为该流将用于系统级代码,过去我必须获得特权才能执行此类操作。这只是一个猜测。至于GetLastError()的返回,是ACCESS_DENIED。
-
@eryksun - 由于 Microsoft 费心记录 $EA 流 docs.microsoft.com/en-us/windows/desktop/FileIO/file-streams 的存在,我认为它对某些人会有一些用处。我只是想看看里面有什么。
-
@Patrick 您可以使用
ZwQueryEaFile读取所有或特定的 EA 属性
标签: windows winapi windows-10 file-permissions ntfs