2010-03-05 2 views
0

Dans Win32_DiskDrive. Il y a une propriété Capabilities qui a un type de System.UInt16 []. Je tente d'obtenir les valeurs en utilisant GetProperty et le convertir en chaîne. Mais il continue de lancer une erreur (je ne veux pas le piéger) sur la propriété Capabilities.Propriété WMI Win32_DiskDrive Capabilities - Convertit UInt16 en chaîne

L'erreur était: InvalidCastException

Message: L'objet doit mettre en œuvre IConvertible.

+1

Peut-être un morceau de code peut vous aider? – vpram86

Répondre

1

L'outil WMI Code Creator de Microsoft permet de générer du code C#, Visual Basic .NET et VBScript pour exécuter n'importe quelle requête WMI et énumérer les résultats. Il est également très utile pour explorer les espaces de noms WMI et les classes, c'est donc un outil indispensable pour gérer WMI.

Revenons maintenant à la question. De la syntaxe System.UInt16[] je suppose que vous utilisez C#. Voici un exemple de code C# (généré par WMI code Creator, avec quelques modifications mineures) qui montre comment vous pouvez accéder à des éléments individuels du tableau Capabilities:

ManagementObjectSearcher searcher = 
    new ManagementObjectSearcher("root\\CIMV2", 
    "SELECT * FROM Win32_DiskDrive"); 

foreach (ManagementObject queryObj in searcher.Get()) 
{ 
    if(queryObj["Capabilities"] == null) 
     Console.WriteLine("Capabilities: {0}", queryObj["Capabilities"]); 
    else 
    { 
     UInt16[] arrCapabilities = (UInt16[])(queryObj["Capabilities"]); 
     foreach (UInt16 arrValue in arrCapabilities) 
     { 
      Console.WriteLine("Capabilities: {0}", arrValue); 
     } 
    } 
    Console.WriteLine(); 
} 

Pour convertir une valeur UInt16 à une chaîne, vous pouvez utiliser la ToString méthode, par exemple:

foreach (UInt16 arrValue in arrCapabilities) 
{ 
    Console.WriteLine(arrValue.ToString()); 
} 
+0

ah .. cette partie est utile "foreach (UInt16 arrValue in arrCapabilities)" merci! – jaysonragasa

Questions connexes