2010-11-30 2 views
32

Ich versuche, einige WMI in meinem Windows-Form zu schreiben und die Managementobject ist Givin mir dieManagementobject Klasse zeigt sich nicht in System.Management Namespace

„Der Typ oder Namespace-Name‚Managementobject‘konnte nicht gefunden werden“

Fehler

Hier ist meine un-complete code:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.IO; 
using System.Threading; 
using System.Security.Policy; 
using System.Management; 
using System.Management.Instrumentation; 


namespace ConsoleApplication2 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 


      ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"C:\""); 

Antwort

0

Stellen Sie sicher, Ihr Projekt wird gegen die .NET 4 Framework Client Profile kompilieren nicht eingerichtet.

Weitere Informationen finden Sie unter Namespace not recognized (even though it is there).

+0

Ich schaute in den Link und überprüfe mein Zielframework. Es ist .NET 3.5 – Drew

18

Haben Sie einen Verweis auf die System.Management-Assembly hinzugefügt?

6

Sie müssen einen Verweis auf System.Management.dll zu Ihrem Projekt hinzufügen.

Sie können System.Management.Instrumentation anzeigen, ohne einen Verweis auf System.Management.dll hinzuzufügen, da es in einer anderen Bibliothek enthalten ist (System.Core.dll, die automatisch als Referenz enthalten ist), auf die Sie jedoch nicht zugreifen können die anderen Typen, die in diesem Namespace enthalten sind, ohne explizit einen Verweis auf die System.Management.dll-Bibliothek hinzuzufügen.

87

Klicken Sie mit der rechten Maustaste auf Verweise auf der rechten Seite, und fügen Sie System.Management manuell hinzu. Obwohl ich es in die using-Anweisung aufgenommen habe, musste ich das noch tun. Sobald ich es getan habe, hat alles gut funktioniert.

+7

Warum nimmt Visual Studio die Referenz nicht automatisch auf, wenn wir es direkt mit 'System.Management; :( –

+0

Das ist das richtige Verhalten. Das Seltsame ist, dass es 'System.Management' erkennt, auch wenn seine Referenz nicht hinzugefügt wird! – Javid

1

Ich denke, das Problem ist, gibt es kein WMI-Objekt für . Versuchen Sie zu ersetzen:

ManagementObject disk = new ManagementObject("Win32_LogicalDisk.DeviceID=\"C:\""); 

mit:

ManagementObject disk = new ManagementObject("Win32_LogicalDisk"); 

und dann durch jedes Feld zu Schritt:

foreach (ManagementObject o in disk.Get()){ 
    //Do what ever you need here.... For example: 
    Console.WriteLine(o.ToString()); 
} 
8

im Projektmappen-Explorer mit der rechten auf Verweise und klicken Sie dann auf Verweis hinzufügen .. und unter Framework sollten Sie das Framework System.Management aktivieren.

Verwandte Themen