如何在 C# 中找到保存给定分区的磁盘?

发布于 2024-07-08 10:08:09 字数 208 浏览 12 评论 0原文

有谁知道如何以编程方式找出哪个物理磁盘保存给定分区? 我可以手动找到此信息,使用 Start->Run->diskmgmt.msc ,我可以在其中看到(在我的计算机上)分区 C: 和 D: 位于磁盘 1 上,E: 位于磁盘 1 上,E: 位于磁盘 1 上。 F:在磁盘 0 上。

这是为了优化一些文件处理操作,如果文件位于不同的物理磁盘上,则可以并行执行这些操作。

Does anyone know a way to find out programatically which physical disk holds a given partition?
Manually, I can find this info using Start->Run->diskmgmt.msc , where I can see that (on my computer) that partitions C: and D: are on disk 1, E: & F: on disk 0.

This is for optimizing some file crunching operations by doing them in parallel if the files are on different physical disks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜宝宝 2024-07-15 10:08:10

您可以通过查询 Win32_DiskDrive 类。

这里有关 .NET 中 WMI 的基本信息。

You can obtain this information using WMI from System.Management namespace by quering Win32_DiskDrive class.

Here's basic info about WMI in .NET.

唠甜嗑 2024-07-15 10:08:10

除了 Arul 的答案之外,这里还有一个链接,显示如何使用 VBS 脚本中的 WMI 获取磁盘<->分区关联:WMI 任务:磁盘和文件系统
-> 请参阅页面上的最后一个示例。

编辑:更好的是,这是一篇好文章 在使用 C# 的 WMI 上,它恰好也描述了获取持有逻辑磁盘(例如 \\\\.\\PHYSICALDRIVE0 )所需的 WMI 类之间的确切关系<代码>C:)

In addition to Arul's answer, here's a link that shows how to geth the disk<->partition association using WMI from a VBS script: WMI Tasks: Disks and File Systems
-> see the last example on the page.

Edit: Even better, here's a good article on WMI using C#, which just happens to also describe the exact relationships between the WMI classes needed to get the disk drive (e.g. \\\\.\\PHYSICALDRIVE0 ) that holds a logical disk (e.g. C:)

稚然 2024-07-15 10:08:10

参见 HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices

wmic path CIM_BasedOn get * > wmic-path-CIM_BasedOn-get.txt
wmic path CIM_DiskPartition get * > wmic-path-CIM_DiskPartition-get.txt
wmic path CIM_StorageExtent get * > wmic-path-CIM_StorageExtent-get.txt

参见类:CIM_BasedOn - 非枚举隐藏分区,CIM_DiskPartition -all,但看不到磁盘标签,CIM_StorageExtent - GUID、标签、分区(也隐藏)

see HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices

wmic path CIM_BasedOn get * > wmic-path-CIM_BasedOn-get.txt
wmic path CIM_DiskPartition get * > wmic-path-CIM_DiskPartition-get.txt
wmic path CIM_StorageExtent get * > wmic-path-CIM_StorageExtent-get.txt

see Class: CIM_BasedOn - non enumerate hiden partition, CIM_DiskPartition -all, but not see disk label, CIM_StorageExtent - GUID, label, partition(hide too)

蓝海似她心 2024-07-15 10:08:10

您确定该分区仅与一个磁盘关联吗? 它可以跨多个物理磁盘进行条带化/跨度化等。

Are you sure the partition is associated with only one disk? It could be striped/spanned/etc across multiple physical disks.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文