C# WMI ManagementException

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mobstaa
  • Registratie: Juli 2010
  • Niet online
Hallo Tweakers,

Ik ben een applicatie aan het programmeren, deze applicatie zou via gebruik van een WMI Query, alle com poorten moeten retourneren, die functie werkt, verder word er ook gekeken via een if statement of er een USB naar Serieel zit aangesloten op een van deze com poorten.

Als ik de usb naar serieel kabel in mijn pc heb zitten en ik start mijn applicatie dan gebeurt er niks. Wanneer ik de kabel eruit laat, start de applicatie op, maar springt hij in de foreach meteen naar de Catch met de foutmelding: "Not supported". Na deze melding weg te klikken kan ik gewoon gebruik maken van de applicatie, alleen is de vraag, waarom krijg ik deze foutmelding?

De gedetailleerde error is: System.Management.ManagementException {"Not supported "}

foto:
Afbeeldingslocatie: http://img90.imageshack.us/img90/4306/geterror.png

Hieronder de code die ik gebruik:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
try
            {
                //create path and query and fill it.
                ManagementScope scope = new ManagementScope("root\\WMI");
                SelectQuery query = new SelectQuery("SELECT * FROM MSSERIAL_PortName");

                //create an object searcher and fill it with the path and the query provided above.
                ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

                    foreach (ManagementObject queryObj in searcher.Get())
                    {
                        //adding information about the USB ports to the log
                        txtLog.Text += "---------------------------------------------" + Environment.NewLine;
                        txtLog.Text += "MSSerial_PortName instance" + Environment.NewLine;
                        txtLog.Text += "---------------------------------------------" + Environment.NewLine;
                        txtLog.Text += "InstanceName: " + queryObj["InstanceName"] + Environment.NewLine;

                        txtLog.Text += "---------------------------------------------" + Environment.NewLine;
                        txtLog.Text += "MSSerial_PortName instance" + Environment.NewLine;
                        txtLog.Text += "---------------------------------------------" + Environment.NewLine;
                        txtLog.Text += "PortName: " + queryObj["PortName"] + Environment.NewLine;

                        //If the serial port's instance name contains USB 
                        //it must be a USB to serial device
                        if (queryObj["InstanceName"].ToString().Contains("USB"))
                        {
                            //add text to the log
                            txtLog.Text += "\n" + queryObj["PortName"] + " is a USB to SERIAL adapter/converter" + Environment.NewLine;

                            if (!lbSerialUSB.Items.Contains(queryObj["PortName"]))
                            {
                                this.lbSerialUSB.Items.Add(queryObj["PortName"].ToString());
                            }
                        }
                    }
                }     
            //error message
            catch(ManagementException e)
            {
                MessageBox.Show(e.Message, "Error");
            }

[ Voor 1% gewijzigd door RobIII op 31-01-2013 16:20 . Reden: Afbeelding gefixed. ]

Nefit EnviLine 7400I AW 7 | Nefit HR 300 liter boiler | Nefit 50 liter buffervat | Nefit Moduline 1010H thermostaat | Buderus pomp | Home Assistant | BBQKees | Itho HRU 300R | Tibber


Acties:
  • 0 Henk 'm!

  • sopsop
  • Registratie: Januari 2002
  • Laatst online: 12-09 14:36

sopsop

[v] [;,,;] [v]

Je foto kan ik niet zien (waarschijnlijk door de proxy hier), dus ik weet niet wat voor info daar instaat, maar waar gaat het precies fout en staat er nog meer info in de exception?

Verder zie ik de foutmelding via Google wel regelmatig terugkomen met een rechtenkwestie. Probeer je app (of je VS-omgeving) eens als administrator te draaien.

Acties:
  • 0 Henk 'm!

  • mobstaa
  • Registratie: Juli 2010
  • Niet online
Na via locals nog even gezocht te hebben, zie ik dat de InnerException null is.

Wanneer ik de volgende code erbij zet:
code:
1
2
3
4
5
6
//create an object searcher and fill it with the path and the query provided above.
ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query);

ManagementObjectCollection test = searcher.Get();

foreach (ManagementObject queryObj in searcher.Get())


Dus de middelste regel heb ik even voor een test toegevoegd, als ik dan een breakpoint zet voor het net bij gevoegde regeltje code zie ik bij de .Count functie een exception die luidt:

' test.Count' threw an exception of type 'System.Management.ManagementException'

Wanneer ik dan het "Count menu" open klik(op het plusje klik) staat er bij Base: {"Not supported "} en bij ErrorCode: NotSupported.

Verder krijg ik totaal geen uitleg over wat er mis is, ik heb het programma al geprobeerd uit te voeren als administrator, wat niks helpt.

Nefit EnviLine 7400I AW 7 | Nefit HR 300 liter boiler | Nefit 50 liter buffervat | Nefit Moduline 1010H thermostaat | Buderus pomp | Home Assistant | BBQKees | Itho HRU 300R | Tibber


Acties:
  • 0 Henk 'm!

  • martennis
  • Registratie: Juli 2005
  • Laatst online: 07-07 10:36
Ik ben totaal niet thuis in WMI, maar ik willde toch even reageren.

Misschien heb je hier iets aan: http://www.daniweb.com/so...y-cant-get-where-to-work#

Paar dingen waar ik op zou testen:
- De scope.Connect() wordt aangeroepen na het meegeven aan de ObjectSearcher. Misschien dat je ObjectSearcher daardoor niet goed ge-init wordt.
- Probeer eens een prefix-slash: ManagementScope scope = new ManagementScope(@"\root\WMI");
- of probeer eens ManagementScope scope = new ManagementScope(@"\\.\root\WMI");

Ben benieuwd :)

Acties:
  • 0 Henk 'm!

  • mobstaa
  • Registratie: Juli 2010
  • Niet online
Jammer, die prefixen hielpen niet, en die website bied mij ook geen antwoord, maar in ieders geval bedankt voor je hulp! Iemand anders misschien nog een verklaring of oplossing voor dit probleem?

EDIT:

Ik heb mijn programma nu op meerdere pc's geprobeerd, het vreemde is dat het programma wel gewoon goed werkt op alle andere pc's, via Visual Studio 2012, en per slot van mijn rekening is de PC waarop ik programmeer helemaal kaal, behalve Windows en Visual Studio 2012(bij wijze van).

Dit Topic kan van mij dicht, omdat de error niks meer heeft te maken met c#.

[ Voor 72% gewijzigd door mobstaa op 05-02-2013 11:01 ]

Nefit EnviLine 7400I AW 7 | Nefit HR 300 liter boiler | Nefit 50 liter buffervat | Nefit Moduline 1010H thermostaat | Buderus pomp | Home Assistant | BBQKees | Itho HRU 300R | Tibber