none
WMI Problem RRS feed

  • Frage

  •  Hi,

    Ich benötige für mein Programm einige Hardware Informationen des Rechners.

    Ich nutze dazu die Klasse ManagementObjectSearcher.

    Es funktioniert, aber manche Werte lösen eine Ausnahme aus "Nicht gefunden!".

    z.B. bei Win32_Processor:

      name = managementObject["Name"].ToString();                //FUNKTIONIERT

      brand = managementObject["Manufacturer"].ToString();    //FUNKTIONIERT NICHT

    Ich habe keine Ahnung was ich falsch mache. Ich nutze Windows 8.



    Samstag, 20. April 2013 15:33

Antworten

  • Hallo, ich habe das eben mal getestet und ich kann die Daten Problemlos abfragen.
                SelectQuery query = new SelectQuery("Win32_Processor");
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
                foreach (ManagementObject mo in searcher.Get())
                    Console.WriteLine(mo["Manufacturer"].ToString());
                Console.ReadKey();
    Poste mal deinen Completten Code der versucht die Infos auszulesen. Welche .NET Version benutzt du denn? Funktioniert dein Programm denn auf einem anderen PC mit dem selben OS?

    <Code:13/> - Koopakiller [kuːpakɪllɐ]
    Webseite | Code Beispiele | Facebook | Snippets
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
    Einen Konverter zwischen C# und VB.NET Code gibt es hier.

    • Als Antwort markiert milxan Samstag, 20. April 2013 16:10
    Samstag, 20. April 2013 15:59
    Moderator

Alle Antworten

  • Hallo, ich habe das eben mal getestet und ich kann die Daten Problemlos abfragen.
                SelectQuery query = new SelectQuery("Win32_Processor");
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
                foreach (ManagementObject mo in searcher.Get())
                    Console.WriteLine(mo["Manufacturer"].ToString());
                Console.ReadKey();
    Poste mal deinen Completten Code der versucht die Infos auszulesen. Welche .NET Version benutzt du denn? Funktioniert dein Programm denn auf einem anderen PC mit dem selben OS?

    <Code:13/> - Koopakiller [kuːpakɪllɐ]
    Webseite | Code Beispiele | Facebook | Snippets
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
    Einen Konverter zwischen C# und VB.NET Code gibt es hier.

    • Als Antwort markiert milxan Samstag, 20. April 2013 16:10
    Samstag, 20. April 2013 15:59
    Moderator
  • Danke!

    Dein code funktioniert bei mir auch.

    Ich weiß nicht warum der folgende code bei mir dieße Probleme verursachte:

    ManagementObjectSearcher searcher = 
    new ManagementObjectSearcher("Select Name from Win32_Processor");
    
    foreach(ManagementObject mo in searcher.Get())
     Console.WriteLine(mo["Manufacturer"].ToString());

    Aber deiner funktioniert ja jetzt ;D.

    Danke noch mal.

    Samstag, 20. April 2013 16:10
  • Das Problem lag an deinem Abfragequery:
    Select Name from Win32_Processor
    Name gibt an das Name abgerufen wird, du hättest Manufacturer auch noch mit angeben müssen:
    Select Name, Manufacturer from Win32_Processor
    Dann sind auch beide verfügbar.

    <Code:13/> - Koopakiller [kuːpakɪllɐ]
    Webseite | Code Beispiele | Facebook | Snippets
    Wenn die Frage beantwortet ist, dann markiert die hilfreichsten Beiträge als Antwort und bewertet die Beiträge. Danke.
    Einen Konverter zwischen C# und VB.NET Code gibt es hier.

    Samstag, 20. April 2013 16:16
    Moderator