22 July 2007 .NET, Windows, Wlan Robert Muehsig

Wer schon immer mal seinen eigenen W-Lan Scanner oder ein eigenes Verwaltungsprogramm für seine W-Lan Einstellungen schreiben will, für den ist der nachfolgende Text bestimmt interessant.

Wer Signalstärke oder SSIDs scannen will, der kann sich wunderbar mit WMI auseinander setzen. Über WMI kann man auf allerhand Hardware- und PC-Eigenschaften zugreifen. Mit .NET ist es auch leicht durch den Namespace System.Management möglich WMI anzusprechen.

W-Lan Eigenschaften wie das setzen der Authentifizierung kann jedoch nicht über WMI gesetzt werden. Um solche Details zu setzen muss erstmal eine Grundvoraussetzung gesetzt sein: Windows muss für die Verwaltung der W-Lan Einstellung verantwortlich sein. Sobald angenommen das Intel-Wireless-Lan-Tool läuft, geht mein folgender Weg nicht.

Mit Windows XP SP 2 kam eine W-Lan API hinzu: Die Wireless-Zero-Configuration (WZC). Diese ist für C/C++ Programmierer gedacht und ist daher für einen “normalen” .NET Entwickler erstmal äußerst hässlich. Da es außerdem auch bei dieser API zu Problemen kam, bietet MS einen Aufsatz für XP für diese API an: Die Wireless Lan API - welche aber auch als Native Wifi API bezeichnet wird - unter Vista hat es allerdings mehr funktionen. Das Update kann direkt von MS runtergeladen werden, erfordert aber eine WGA Prüfung.

Diese Native Wifi API (Vista) oder Wireless Lan API (XP SP2) sind allerdings auch eher für C/C++ Programmierer gedacht. Abhilfe schafft dieser Wrapper: Managed Wifi API

Mit dieser ist es leicht möglich Profileinstellungen zu setzen oder sich mit einem bestimmten W-Lan zu verbinden etc.

Tipp: W-Lan Profile können als XML importiert und exportiert werden. Da das XML doch recht doof aufgebaut ist, kann man es unter Vista einfach mit dem “netsh”-Befehl erstellen. Unter Vista gibt es direkt einen W-Lan Kontext. Ein weiterer Tipp: Als ich das W-Lan XML Profil mit der Klasse XmlDocument geladen habe funktionierte es unter Vista ohne Probleme. Unter XP (mit der managed API) kam der Fehler, dass das XML Dokument ungültig ist. Abhilfe schaffte es, die XML Datei einfach über einen Textreader einzulesen.


Written by Robert Muehsig

Software Developer - from Dresden, Germany, now living & working in Switzerland. Microsoft MVP & Web Geek.
Other Projects: KnowYourStack.com | ExpensiveMeeting | EinKofferVollerReisen.de

If you like the content and want to support me you could buy me a beer or a coffee via Litecoin or Bitcoin - thanks for reading!