using c # comment puis-je extraire des informations sur les disques durs présents sur la machine locale

StackOverflow https://stackoverflow.com/questions/232979

  •  04-07-2019
  •  | 
  •  

Question

Je souhaite obtenir des données telles que Taille / Capacité, Numéro de série, Numéro de modèle, Secteur des têtes, Fabricant et éventuellement des données SMART.

Était-ce utile?

La solution

Vous pouvez utiliser les appels WMI pour accéder aux informations sur les disques durs.

// Nécessite l'utilisation de System.Management; & amp; Référence System.Management.dll

ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\""); 
disk.Get(); 
Console.WriteLine("Logical Disk Size = " + disk["Size"] + " bytes"); 
Console.WriteLine("Logical Disk FreeSpace = " + disk["FreeSpace"] + "bytes");

Autres conseils

Vous devez utiliser l'espace de noms System.Management :

System.Management.ManagementObjectSearcher ms =
    new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject mo in ms.Get())
{
    System.Console.Write(mo["Model");
}

Pour plus d'informations sur les membres de la classe Win32_DiskDrive, consultez:

http://msdn.microsoft.com/ en-us / library / aa394132 (VS.85) .aspx

Le moyen le plus simple consiste à utiliser WMI pour obtenir les informations requises. Consultez la documentation de Win32___DiskDrive dans MSDN, qui contient diverses propriétés de lecteur standard. Vous pouvez également essayer d'utiliser la classe WMI MSStorageDriver_ATAPISmartData, pour laquelle je ne trouve aucun document pour le moment, mais qui devrait contenir toutes les données SMART que vous recherchez. Voici un exemple de code de base pour énumérer tous les lecteurs et obtenir leurs propriétés:

ManagementClass driveClass = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection drives = driveClass.GetInstances();
foreach (ManagementObject drive in drives) 
{ 
    foreach (PropertyData property in drive.Properties)
    {
        Console.WriteLine("Property: {0}, Value: {1}", property.Name, property.Value);        
    }
    Console.WriteLine();
}

Vous pouvez utiliser WMI pour obtenir la plupart des informations souhaitées. une introduction à WMI ici .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top