Ich habe ein Problem, bei dem ich eine Karte aktivieren muss, die bereits deaktiviert wurde, und ein Sucher auf WMI NetworkAdapter gibt das Objekt nicht zurück.Verwendung von C# zum Aktivieren einer deaktivierten drahtlosen Netzwerkkarte
Ich kann mir eine Möglichkeit vorstellen, dies zu tun, aber ich konnte es nicht zum Laufen bringen, das heißt, ein ManagementObject zu erstellen, das dies als Konstruktornamen verwendet. aber dies führt nur Ausnahmen
{\\.\root\CIMV2:Win32_NetworkAdapter.NetConnectionID='Wireless Network Connection'}
Der andere Weg, um eine netsh und ermöglicht es das Gerät, zu Shell war, die Art von hässlich ist, oder shell32/dll „Enable“ verwenden, um das gleiche, wieder zu tun, die beide nur den Namen übergeben. Ich habe den Namen von einem Registry-Scan auf HKLM\SYSTEM\CurrentControlSet\Network
erhalten und nach MediaType = 2 gesucht, um eine String-Liste von Wireless-Geräten zu erhalten. Alles ist gut, wenn ich die Anwendung ausführen, während der Adapter aktiviert ist, wie ich das NetworkObject für das drahtlose Gerät abrufen kann, aber es fällt alles um, wenn die Anwendung gestartet wird, während das drahtlose Gerät deaktiviert ist.
Dank
Edit:. Dies ist der Code, den ich lieben würde, aber nicht gehen :(im Wesentlichen #, um die WMI und Win32_NetworkAdapter
Klasse zu nutzen, wird unter Verwendung von C
using System;
using System.Management;
class Sample
{
public static int Main(string[] args)
{
ManagementObject mObj = new ManagementObject("\\\\.\\root\\CIMV2:Win32_NetworkAdapter.NetConnectionID=\"Wireless Network Connection\"");
mObj.InvokeMethod("Enable", null);
return 0;
}
}
Danke für die Antwort! Was ich nicht tun kann, ist, einen Adapter zu aktivieren, der deaktiviert ist, da eine Suche für ein deaktiviertes Gerät nichts zurückgibt. Das Gerät zu deaktivieren ist wirklich einfach, aber ein Gerät zu aktivieren, für das man das Objekt nicht bekommen kann, ist das, mit dem ich Probleme habe. Idealerweise ist dies, was ich versuche zu arbeiten – pedigree
Nun, wenn Sie diese genaue Schnittstelle abfragen, sollte es Ihnen ermöglichen, in der 'enable' Methode zu implementieren. Tut es nicht, wenn ich es versuche - es funktioniert. – Greg
@Grey - Haben Sie Ihre drahtlose Verbindung (im Gerätemanager) vor dem Anruf deaktiviert? Wenn ja, auf welches OS/.NET zielen Sie? – pedigree