Pregunta

¿Alguien sabe una manera de averiguar programáticamente qué disco físico contiene una partición determinada? Manualmente, puedo encontrar esta información usando Inicio - & Gt; Ejecutar - & Gt; diskmgmt.msc, donde puedo ver que (en mi computadora) que particiona C: y D: están en el disco 1, E: & amp; F: en el disco 0.

Esto es para optimizar algunas operaciones de procesamiento de archivos al hacerlas en paralelo si los archivos están en diferentes discos físicos.

¿Fue útil?

Solución

Puede obtener esta información utilizando WMI desde System.Management namespace consultando clase Win32_DiskDrive .

Aquí hay información básica sobre WMI en .NET.

Otros consejos

Además de la respuesta de Arul, aquí hay un enlace que muestra cómo obtener el disco < - > asociación de partición usando WMI desde un script VBS: Tareas de WMI: discos y sistemas de archivos - > vea el último ejemplo en la página.

Editar: Aún mejor, aquí hay un buen artículo en WMI usando C #, que también describe las relaciones exactas entre las clases de WMI necesarias para obtener la unidad de disco (por ejemplo, \\\\.\\PHYSICALDRIVE0) que contiene un disco lógico (por ejemplo, C:)

vea 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

ver Clase: CIM_BasedOn - no enumerar la partición oculta, CIM_DiskPartition -todos, pero no ver la etiqueta del disco, CIM_StorageExtent - GUID, etiqueta, partición (ocultar también)

¿Está seguro de que la partición está asociada con un solo disco? Podría dividirse / dividirse / etc. en varios discos físicos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top