Laden...

W-Lan (Wifi) Einstellungen ändern

Erstellt von Reman vor 16 Jahren Letzter Beitrag vor 15 Jahren 5.794 Views
R
Reman Themenstarter:in
115 Beiträge seit 2006
vor 16 Jahren
W-Lan (Wifi) Einstellungen ändern

Für ein Projekt soll ich ein kleines Programm schreiben, dass bestimmte WLan Einstellung (SSID, Verschlüsselung, Authentifizierung etc.) per Klick einstellt, das ganze soll dann auf Windows XP benutzt werden.

WMI (root\wmi) hab ich schon probiert, allerdings gibt er mir dort max. zugriff auf die IP oder das dies per DHCP gezogen werden soll.
Über das MSNdis_80211_* Klassen hat man auch Zugriff z.B. welche WLans in der nähe sind, allerdings weiß ich nicht, wie ich Werte setzen kann - in einem Forum wurde gesagt, die Werte sind readonly.

Schwierig ist es leider, weil auch die W-Lan Authentifizierung über EAP laufen soll (keine Ahnung was das ist) und auch verschiedene andere Einstellungen gemacht werden müssen.
Die Einstellungen kann man alle in Windows XP über diesen Drahtlosnetzwerkassistent einstellen (Authentifizierung über EAP etc.).

Leider hab ich noch keine Möglichkeit gefunden diese über .NET / WMI oder einer anderen API zu setzen.
Für Vista gibt es eine WLan API. MS hat auch eine WLan API für Win XP, allerdings muss man die erst nachinstallieren und das würde ich vorerst vermeiden wollen.

Schonmal irgendwas in der Richtung gehört? Mir wäre schon geholfen, wenn ich wüste wie ich erstmal die SSID, den Verschlüsselungstyp etc. setzen kann, den Rest bekommt man dann bestimmt auch gesetzt.

Vielen Dank für eure Hilfe

S
8.746 Beiträge seit 2005
vor 16 Jahren

Stichwort ist WZC (Wireless Zero Configuration). Im Rahmen von OpenNetCF gibts auch einen managed Wrapper.

R
Reman Themenstarter:in
115 Beiträge seit 2006
vor 16 Jahren

Ist WZC dasselbe wie die Wireless LAN API for Windows XP?

Funktioniert die API eigentlich nur, wenn Windows für die Verwaltung der Drahtlosennetzwerke verantwortlich ist? Bei den Centrinos ist ja meist das Intel Tool aktiv - dann wäre die API deaktiviert, oder?

Grüße,
Robert

S
8.746 Beiträge seit 2005
vor 16 Jahren

Nein. Das Ding ist meines Wissens ein Aufsatz auf WZC.

R
Reman Themenstarter:in
115 Beiträge seit 2006
vor 16 Jahren
Problemlösung

Nach etlichen Tagen rumschlagen mit dem ganzen Thema hab ich die Lösung gefunden, die ich sogar sehr schön mit managed Code umsetzen konnte.

Ich werd hier nochmal schnell meine Ergebnisse präsentieren falls jemand ein ähnliches Problem nochmal hat:

Mit .NET (System.Management) kann man wunderbar auf WMI zugreifen. WMI gibt einen sehr viele Hardware und Treiber Informationen über den gesamten PC. Mein W-Lan Problem konnte ich da allerdings nicht lösen, da über WMI nur der Zugriff auf Eigenschaften wie Signalstärke, SSID etc. möglich war (was aber auch recht interessant ist - man kann sich somit seinen eigenen WLan Scanner schnell basteln).

Die zweite Variante war über den netsh Befehl, der ist in Vista stark erweitert, man kann Wlan Profile exportieren und importieren. Auf XP läuft das leider nicht.

Auf XP (mit SP2) muss man die Wireless Lan API nachinstallieren (ist ein kostenloses Update, was aber eine WGA Prüfung durchführt). Diese API ist ein Aufsatz auf die WZC. Beide APIs sind allerdings eher für C++ Programmierer gedacht - MS bietet keine managed Variante an. Dort ist es ebenfalls möglich, Wlan Profile zu setzen, umliegene Wlans zu finden und sich mit den zu verbinden.
Allerdings gibt es eine feine Managed Wifi API auf Codeplex:
http://www.codeplex.com/managedwifi
Es stellt ein Wrapper für die Wireless Lan (oder Native Wifi) API zur Verfügung. Profile kann man als XML exportieren oder importieren.

Das wäre es eigentlich. Wer sein eigenen kleinen WLan Finder basteln will, kann das entweder mit WMI versuchen, wird aber spätestens sobald er sich mit dem Wlan Verbinden will mit der Native Wifi (Vista) / Wireless Lan API (XP) rumschlagen müssen. Oder man nimmt die managed Wifi API - geht auf beiden Systemen (XP hat allerdings Einschränkungen).

E
87 Beiträge seit 2004
vor 16 Jahren

Könntest du bitte ein wenig Code posten um z.B. deinen genannten WLan Scanner zu bauen! Ich bräuchte Infos über die Signalstärke, Anzahl der Roamings,..!

Wäre sehr nett! DANKE

R
Reman Themenstarter:in
115 Beiträge seit 2006
vor 16 Jahren

Ich hab leider keinen wirklichen Code zu dem WLan Scanner selbst geschrieben - das geht aber mit WMI, oder mit den oben genannten APIs (die managed API ist selbsterklärend - die Klasse die man verwenden sollte ist "WlanClient" und nicht "Wlan" - steht aber mehr oder weniger auf der Codeplex Seite).
Auf Codeproject.com und bei der Suchmaschine deines Vertrauens könntest du auch mal nach "wifi" (wlan ist wohl eher im deutschen Raum) und "wmi" suchen. Oder wie gesagt mit den beiden APIs - die managed API ist zu empfehlen 😉

Mit WMI hab ich hier noch einen Link:
Das PDF dient zur Orientierung, den Rest kannst du dir ja mal selber anschauen-
http://neg9.org/toorcon/toorcon2004_cd/Schmoo%20Group/

T
223 Beiträge seit 2006
vor 15 Jahren

Hallo,

Hat mittlerweile jemand es geschafft, sich mit der ManagedWiFi API zu verbinden? Anscheindend bekomme ich keinen passenden string für die Verbindung geschrieben. Er meldet immer, dass er den Pfad nicht finden kann...

string profileXml = string.Format("<?xml version=\"1.0\" encoding=\"US-ASCII\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"> <name>MyWlan </name> <SSIDConfig> <SSID> <name>MyWlan </name> </SSID> </SSIDConfig> <connectionType>ESS </connectionType> <connectionMode>auto </connectionMode> <autoSwitch>true </autoSwitch> <MSM> <security> <authEncryption> <authentication>WPAPSK </authentication> <encryption>TKIP </encryption> <useOneX>false </useOneX> </authEncryption> <sharedKey> <keyType>passPhrase </keyType> <protected>false </protected> <keyMaterial>MyPass </keyMaterial> </sharedKey> </security> </MSM> </WLANProfile>");


// das wirft den Fehler
Wlan.ThrowIfError(
						Wlan.WlanSetProfile(client.clientHandle, info.interfaceGuid, flags, profileXml, null, overwrite, IntPtr.Zero, out reasonCode));

Gruß Thomas