如何列出 Win32 命名空间的内容?

How to list contents of Win32 namespaces?

提问人:n611x007 提问时间:11/14/2012 最后编辑:Communityn611x007 更新时间:8/12/2023 访问量:1984

问:

有没有办法列出 (UNC 路径前缀: ) 和 (UNC 路径前缀: ) 的内容?Win32 Device Namespaces\\.\Win32 File Namespaces\\?\

目标是拥有一个适合作为命令行 (1) 工具的应用程序,该应用程序可以使用 UNC(通用命名约定)来导航它们。是否已经为此编写了工具?我知道 WinObj,但这不是开源和 GUI 工具。

同样,如何在 ?NT namespace

是否有处理这些问题的 Windows API 调用? 更新 2WinApi 不适合于此,NT Native API 是,正如 Hans PassantRoger Lipscombe 在评论中指出的那样。

更新 1如果它们未由 winapi 公开,WinObj 如何列出它们?

编号: http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#paths


(1):Win32 控制台

Windows WinAPI 路径 命名空间 nt-native-api

评论

2赞 Hans Passant 11/14/2012
它是本机操作系统实现详细信息,不通过 winapi 公开。可以使用 SysInternals 的 WinObj 来探索它,至少有助于了解那里几乎没有兴趣。
3赞 Roger Lipscombe 1/10/2013
WinObj 可能使用未记录的 NT API 调用。NT API 不是 Win32 API。
1赞 0xC0000022L 10/28/2018
@n611x007 ObjectManagerBrowserWinObjEx64(也使用 KMD)和 ntobjx 是三个开源解决方案,它们很好地展示了如何做到这一点。

答:

0赞 DJm00n 8/12/2023 #1

如评论中所述,例如,您可以查看 WinObjEx64 代码。只需查看那里的 ListObjectDirectoryTree 代码即可。

NtOpenDirectoryObject、NtQueryDirectoryObject、NtOpenSymbolicLinkObject 和 NtQuerySymbolicLinkObject 是有助于枚举 NT 对象的主要 API。

此外,这篇旧文章还介绍了如何使用对象管理器接口 API:https://www.drdobbs.com/using-nts-undocumented-object-manager-in/184416468