确定 .NET 中网络路径的文件系统

Determine the File System of a Network Path in .NET

对于我的一个项目,我希望利用 Alternate Data Streams,这是 NTFS 文件系统的一项功能,您可以在给定的 link 阅读更多相关信息。由于该功能是 NTFS 独有的,我需要进行初步检查以确保我正在使用的目录正在使用该文件系统。

如果目录在本地驱动器上,我可以使用 System.IO.DriveInfo.DriveFormat 检查文件系统。但是,如果目录是 network/UNC 路径,例如 \Computer\Folder\Subfolder 我不能使用 DriveFormat class.

有什么方法可以找到网络共享的底层文件系统?我一直无法在任何地方找到答案。

如果您查看 kernel32.dll 中的 source of the DriveInfo class's DriveFormat property, you can see it is making a native call to GetVolumeInformationA 以获得实际的驱动器格式。

使用 \Computer\Folder\ 等网络 UNC 路径调用此函数确实会为您提供所需的结果(包括尾部斜线,但不包括子文件夹)。在您自己的代码中使用 dll import and proper error checking 执行相同的模式有点工作,但这是可能的!