У меня есть фрагмент кода, реализованный с использованием Managed Native WiFi. Он используется для получения сведений о профиле подключенной сети для отображения на экране.
// Start the wireless configuration service if it is stopped
startservice();
WlanClient client = new WlanClient();
bHasWiFi = false;
string strConnectionStatus = Constants.BlankString;
// Enumerate all interfaces
foreach (WlanClient.WlanInterface wlanIface in client.Interfaces)
{
bHasWiFi = true;
strConnectionStatus = wlanIface.InterfaceState.ToString();
// Check whether disconnected
if (strConnectionStatus == Constants.Disconnected)
{
IsConnected = false;
continue; //iterate to next interface if any
}
else
{
string strProfileName = wlanIface.CurrentConnection.profileName.ToString();
ErrorLog.WriteLogMsg("Connected Profile : " + strProfileName);
strDefaultNetwork = wlanIface.CurrentConnection.wlanAssociationAttributes.dot11BssType.ToString();
ErrorLog.WriteLogMsg("Connected Network Type : " + strDefaultNetwork);
if (strProfileName.Length != 0)
{
// Obtain Profile XML
string strXmlProfile = wlanIface.GetProfileXml(strProfileName);
// Read channel information if OS not Windows XP
if(strCurOS != Constants.WindowsXP)
intChannel = wlanIface.Channel;
// Extract profile information
GetNetworkProfileXML(ref IsConnected, ref strDefaultAuth, ref strDefaultSSID, ref strDefaultEnc, ref strDefaultKey, wlanIface, ref strXmlProfile);
// Process and store the profile data
GetDatfromProfiles(strDefaultNetwork, strDefaultAuth, strDefaultSSID, strDefaultEnc, strDefaultKey, strCurOS, intChannel);
}
else
{
ErrorLog.WriteLogMsg("Blank profile name");
IsConnected = false; // Set error flag
}
break;
}
}
// Error cases
if (!IsConnected || !bHasWiFi)
{
if (!bHasWiFi)
throw new Exception("Unable to enumerate the wireless interfaces");
else if (!IsConnected)
throw new Exception("WiFi is not configured or is disconnected");
}
}
Всякий раз, когда этот код выполняется в Vista / Windows 7 и сеть подключается без сохранения профилей, метод GetProfileXMl выдает ошибку.
01:18:12 Метод: ThrowIfError
01:18:12 Сообщение журнала: элемент не найден
01:18:12 Stack Trace: в NativeWifi.Wlan.ThrowIfError (Int32 win32ErrorCode) в NativeWifi.WlanClient.WlanInterface.GetProfileXml (String profileName)
Было замечено, что в Vista и Windows 7 профили не сохраняются во время подключения для инфраструктуры, если пользователь не выбирает «Подключаться автоматически». Кроме того, специальные профили никогда не сохраняются, поскольку эта опция не предоставляется пользователю во время подключения.
Кто-нибудь знает, как читать XML / детали подключенного профиля, даже если он не сохранен? Заранее спасибо.