Ho un problema in cui è necessario abilitare una scheda che è già stata disabilitata e un ricercatore su WMI NetworkAdapter non restituisce l'oggetto.Come utilizzare C# per abilitare una scheda di rete wireless disabilitata
Posso pensare a un modo possibile per farlo, ma non sono riuscito a farlo funzionare, questo è creare un oggetto ManagementObject usando questo come nome del costruttore. ma questo solo genera eccezioni
{\\.\root\CIMV2:Win32_NetworkAdapter.NetConnectionID='Wireless Network Connection'}
L'altro modo è stato quello di sborsare un netsh e attivare il dispositivo, che è una specie di brutto, o per usare shell32/dll "Enable" a fare lo stesso, ancora una volta, sia passando solo il nome. Sto ottenendo il nome da una scansione del registro su HKLM\SYSTEM\CurrentControlSet\Network
e cercando MediaType = 2 per ottenere una lista di stringhe di dispositivi wireless. Tutto va bene se eseguo l'applicazione mentre l'adattatore è abilitato in quanto posso ottenere networkObject per il dispositivo wireless ma tutto cade se l'applicazione si avvia mentre il dispositivo wireless è disabilitato.
Grazie
Edit:. Questo è il codice che mi piacerebbe lavorare, ma non andare :(
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;
}
}
Grazie per la risposta! Quello che non riesco a fare è abilitare un adattatore che è disabilitato come una ricerca non restituisce nulla per un dispositivo disabilitato. Disabilitare il dispositivo è davvero semplice, ma abilitare un dispositivo per il quale non si può ottenere l'oggetto, è il poco che sto avendo problemi con. Idealmente, questo è quello che sto cercando di far funzionare – pedigree
Bene, se interrogate quell'interfaccia esatta dovrebbe permetterti di implementare nel metodo 'enable'. Non è così, quando ci provo, funziona. – Greg
@Grey - hai disattivato il wireless (in Gestione dispositivi) prima di chiamare? In tal caso, quale OS/.NET stai scegliendo come target? – pedigree