Moin Moin,
sitze hier gerade daran die Namen der Netzwerkkarten auslesen zu wollen. Habe hier Visual C# 2008 Express Edition. PC Namen auslesen klappt auch alles wunderbar, doch die Namen der Netzwerkkarten stellt sich nicht als so einfach raus.
Hätte da jemand eine Idee wie ich das am bewerkstelligen könnte? Bin über jede Idee dankbar 😉
MfG
Khobi
Hallo khobi,
Stichwort WMI. Wurde auch schon hier im Forum desöfteren diskutiert (Forumssuche nach WMI).
Danke für das Stichwort, damit kam ich jetzt schon ein Stück weiter 😃
Mein Code:
string query = "SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionID IS NOT null";
ManagementObjectSearcher sucher = new ManagementObjectSearcher(query);
string s = "";
foreach (ManagementObject m in sucher.Get())
{
// NetConnectionID Name der Karte wie in der Systemsteuerung
s = m["NetConnectionID"] + "\n";
this.cbxlanadapter.Items.Add(s);
}
Frage die ich nun habe ist, welche Spalten es in der Win43_NetworkAdapter gibt? Da jemand einen Tipp wie ich das finden kann? Hab schon gegoogelt, aber leider ohne ein richtiges Ergebnis.
Hallo khobi,
Ich glaube kaum das du gesucht hast. Wenn ich es in Google Suche ist es gleich der erste Treffer!
Diese Liste hab ich gefunden gehabt, nur ich hatte da kein "IPEnabled" gefunden gehabt und dachte dann, es sei evtl. nicht die, die ich suche.
Oder gehört IPEnabled da annen für sich garnicht rein?
Hallo khobi,
IPEnabled gehört zu Win32_NetworkAdapterConfiguration. Siehe auch WMI Referenz: http://msdn.microsoft.com/en-us/library/aa394572.aspx
Mist, da lag der Fehler...
Dank dir!!
annen für sich garnicht
Sorry, den kann ich mir nicht verkneifen: es heißt "an und für sich" und "gar nicht" wird gar nicht zusammen geschrieben. Manchmal kann ich meinen Rotstift einfach nicht zurück halten...
Tipp:
Der Generator hat alles was man braucht und man muss dann nicht immer mühsam die WMI-Referenz nachschlagen.
Wenn Du PowerShell installiert hast und alle verfügbaren WMI-Klassen haben möchtest kannst Du dies folgendermassen rausfinden:
get-wmiobject -query "Select * from meta_class"
Wenn Du dann noch mit der String Pipe nach Network filterst:
get-wmiobject -query "Select * from meta_class" | Select-string "Network"
hast Du folgende Klassen in Deiner Ergebnismenge die in Frage kommen.
cimv2:Win32_TSNetworkAdapterSettingError
cimv2:Win32_NetworkClient
cimv2:Win32_NetworkProtocol
cimv2:CIM_NetworkAdapter
cimv2:Win32_NetworkAdapter
cimv2:Win32_NetworkConnection
cimv2:Win32_PerfRawData_Tcpip_NetworkInterface
cimv2:Win32_PerfFormattedData_Tcpip_NetworkInterface
cimv2:Win32_SystemNetworkConnections
cimv2:Win32_TSNetworkAdapterSetting
cimv2:Win32_TSNetworkAdapterListSetting
cimv2:Win32_NetworkLoginProfile
cimv2:Win32_NetworkAdapterConfiguration
cimv2:Win32_NetworkAdapterSetting
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt
Habe mich letzten Tage mal weiter reingefuchst in die WMI.
Auch wenn es manchmal nicht so rüber kommt aber Google bei Problemen erstmal ne gute Zeit lang und probiere rum.
Doch ich stoße auf ein Problem, aus dem ich nicht schlau werde.
Compiler macht erst keinen Fehler doch wenn ich folgende Zeit ausführen lasse:
ManagementClass objMC = new ManagementClass("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Description = '"+ NetworkCard + "'")
Während der Laufzeit bekomme ich daraus dann: "Invalid parameter"
Bei den Abfragen die ich vorher hatte ging das alles ohne Probleme. Synthax ist bei den anderen die gleiche.
Würde mich freuen, einen Wink mit dem Zaunpfahl für mein Problem zu bekommen 😉
Problem hab ich gelöst. 😃
Jetzt habe ich kein direktes Problem, sondern eher eines zum Verständnis.
Wenn ich den AdapterType auslese, bekomme ich bei normalen Lan-Verbindungen als Ergebnis "Ethernet 802.3". soweit so gut. Doch wenn ich das bei einer WLAN-Verbindung mache bekomme ich das gleicht wieder raus. Sollte da aber nicht "wireless" heraus kommen?
Ach man, stehe seit Stunden aufn Schlauch.
Folgendes, kann keine Änderung der IP, Gateway oder Subnetmaske vollziehen. Während der Laufzeit kommen keine Fehler. Und auch die Variablen werden richtig gefüllt. Hier der Code:
ManagementObjectSearcher objMC = new ManagementObjectSearcher("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE Description = '" + NetworkCard + "'");
ManagementObjectCollection objMOC = objMC.Get();
foreach (ManagementObject objMO in objMOC)
{
ManagementBaseObject objNewIP = null;
ManagementBaseObject objSetIP = null;
ManagementBaseObject objNewGate = null;
objNewIP = objMO.GetMethodParameters("EnableStatic");
objNewGate = objMO.GetMethodParameters("SetGateways");
objNewGate["DefaultIPGateway"] = new string[] { gateway };
objNewGate["GatewayCostMetric"] = new int[] { 1 };
objNewIP["IPAddress"] = new string[] { ipaddresse };
objSetIP = objMO.InvokeMethod("EnableStatic", objNewIP, null);
objNewIP["SubnetMask"] = new string[] { subnetmaske };
objSetIP = objMO.InvokeMethod("SetGateways", objNewGate, null);
jemand eine Idee?