WlanSetProfile из wlanapi.dll в Windows XP не работает - PullRequest
0 голосов
/ 01 декабря 2011

Я создаю программу, которая сможет автоматически подключаться к беспроводной сети.Для этого я использую библиотеку ManagedWifi, которая использует библиотеку «wlanapi.dll».Когда я пытаюсь использовать код в Windows Vista, все в порядке, но когда я использую его в Windows XP, он не работает.Я проверил, что на нем установлен Service Pack 3, а wlanapi.dll находится в Windows / system32.Проблема в том, что ManagedWifi вызывает этот метод:

[DllImport("wlanapi.dll")]
        public static extern int WlanSetProfile(
            [In] IntPtr clientHandle,
            [In, MarshalAs(UnmanagedType.LPStruct)] Guid interfaceGuid,
            [In] WlanProfileFlags flags,
            [In, MarshalAs(UnmanagedType.LPWStr)] string profileXml,
            [In, Optional, MarshalAs(UnmanagedType.LPWStr)] string allUserProfileSecurity,
            [In] bool overwrite,
            [In] IntPtr pReserved,
            [Out] out WlanReasonCode reasonCode);

Описание этого метода можно посмотреть здесь .Я получаю следующую ошибку: 1206 (ERROR_BAD_PROFILE).Как вы можете видеть на этой странице это известная ошибка, и единственное, что мне нужно сделать, это загрузить и установить исправление.Ну, я сделал это, и ошибка все еще там.Профиль правильный, потому что я получаю его из звонка на WlanGetProfile

Я просто хочу подключиться к сети, используя WlanConnect , но, как вы можете видеть вСтраница функции: Windows XP с SP3 и API-интерфейс беспроводной локальной сети для Windows XP с SP2 : WlanConnect можно использовать только для подключения к сетям в списке предпочтительных сетей.Чтобы добавить сеть в список предпочтительных сетей, вызовите WlanSetProfile.

Я действительно в отчаянии, я боролся с этой ошибкой несколько дней, и мне нужно пройти через нее ...

И, если я попытаюсь вызвать метод WlanConnect без вызова SetProfile, результат всегда один и тот же: он не подключается.

Буду признателен за любую идею, которую вы можете предоставить.

1 Ответ

0 голосов
/ 10 января 2012

Есть параметр WlanReasonCode out, который должен сообщить вам, почему профиль недействителен.Это какая-то помощь?

С какой машины вы получили профиль?IIRC XP поддерживает только подмножество профилей, поддерживаемых на более поздних платформах.

О, и я не знаю, сможете ли вы WlanConnect подключиться к сети IBSS (ad-hoc) на XP.

...