我正在使用Managed WiFi API和示例代码:
string profileName = "Cheesecake"; // this is also the SSID
string mac = "52544131303235572D454137443638";
string key = "hello";
string profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><MSM><security><authEncryption><authentication>open</authentication><encryption>WEP</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>networkKey</keyType><protected>false</protected><keyMaterial>{2}</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>", profileName, mac, key);
wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml, true );
wlanIface.Connect( Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName );
我更新了代码以使用我的SSID和密钥,但我不知道应该如何获取MAC地址。
答案 0 :(得分:3)
PhysicalAddress类应该可以帮到你。 MSDN文章中甚至还有一个代码示例,它从计算机上的网络接口中提取MAC地址。
http://msdn.microsoft.com/en-us/library/system.net.networkinformation.physicaladdress.aspx
希望这有帮助。
答案 1 :(得分:0)
C#有一个很棒的API SimpleWifi ,可以在下面使用:
string ssid = "abc wifi network";
AccessPoint selectedAP = null;
bool isApFound = false;
foreach (AccessPoint ap in accessPoints)
{
if (ap.Name.Equals(ssid, StringComparison.InvariantCultureIgnoreCase))
{
selectedAP = ap;
isApFound = true;
break;
}
}
if(!isApFound)
{
MessageBox.Show("SSID: " + ssid + " not found in range.");
return;
}
// Auth
AuthRequest authRequest = new AuthRequest(selectedAP);
bool overwrite = true;
if (authRequest.IsPasswordRequired)
{
if (selectedAP.HasProfile)
// If there already is a stored profile for the network, we can either use it or overwrite it with a new password.
{
var confirmResult = MessageBox.Show("A network profile already exist, do you want to use it ?", "Confirm Yes ?", MessageBoxButtons.YesNo);
if (confirmResult == DialogResult.Yes)
{
overwrite = false;
}
}
if (overwrite)
{
if (authRequest.IsUsernameRequired)
{
authRequest.Username = Microsoft.VisualBasic.Interaction.InputBox("Please enter Wifi username", "Wifi Username", "", -1, -1);
}
authRequest.Password = PasswordPrompt(selectedAP);
if (authRequest.IsDomainSupported)
{
authRequest.Domain = Microsoft.VisualBasic.Interaction.InputBox("Please enter Wifi domain", "Wifi Domain", "", -1, -1);
}
}
}
selectedAP.ConnectAsync(authRequest, overwrite, OnConnectedComplete);