Selon la description de classe Win32_DiskDrive
, les propriétés SerialNumber
et FirmwareRevision
ne sont pas disponibles sur Windows Server 2003, Windows XP, Windows 2000 et Windows NT 4.0. C'est pourquoi vous obtenez une exception en essayant d'accéder à l'un d'entre eux.
Vous souhaiterez peut-être enrouler le code qui accède à ces propriétés dans une instruction try...catch
; quelque chose comme ceci:
try
{
lblSerial.Text = "Serial: " + moDisk["SerialNumber"].ToString();
}
catch (ManagementException ex)
{
lblSerial.Text = "Serial: N/A";
}
Edit: Pour obtenir le numéro de série, vous pouvez essayer la propriété Win32_PhysicalMedia.SerialNumber
. Quelque chose comme ceci devrait fonctionner:
ManagementObjectSearcher mosRefs = new ManagementObjectSearcher
("REFERENCES OF {Win32_DiskDrive.DeviceID='" + moDisk["DeviceID"].ToString() + "'} WHERE ResultClass=Win32_DiskDrivePhysicalMedia");
foreach (ManagementObject moRef in mosRefs.Get())
{
ManagementObject moMedia = new ManagementObject(moRef["Antecedent"].ToString());
lblSerial.Text = "Serial: " + moMedia["SerialNumber"].ToString();
}
Quand vous dites 'ça ne marche pas', de quelle façon? Compiler les erreurs? Messages d'erreur d'exécution? Nous avons besoin de beaucoup plus de détails que cela pour pouvoir aider. –