Невозможно получить профиль подключенной сети в Vista / 7

У меня есть фрагмент кода, реализованный с использованием 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 / детали подключенного профиля, даже если он не сохранен? Заранее спасибо.


person Vivek    schedule 05.07.2011    source источник


Ответы (1)


Если вы регистрируетесь для получения уведомлений до того, как соединение будет инициировано (см. здесь) вы сможете проверить поле strProfileXml в WLAN_CONNECTION_NOTIFICATION_DATA структура при получении уведомления wlan_notification_acm_connection_complete.

person malloc    schedule 10.01.2012
comment
Спасибо за информацию. Но так получилось, что я больше не работаю в этой компании. Поэтому я постараюсь найти кого-нибудь для изучения этого решения, которое вы дали. :) - person Vivek; 27.04.2012