【问题标题】:What permissions/privileges are needed to access foobar.txt::$EA访问 foobar.txt::$EA 需要哪些权限/特权
【发布时间】: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


【解决方案1】:

我从上面的 cmets 和进一步阅读的理解是 $EA 流根本无法从用户模式访问。

【讨论】:

    猜你喜欢
    • 2019-08-23
    • 2017-11-16
    • 2011-08-14
    • 2014-08-28
    • 2022-10-06
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多