WlanConnect из wlanapi.dll в Windows XP не работает

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

[DllImport("wlanapi.dll")]
    public static extern int WlanConnect(
        [In] IntPtr clientHandle,
        [In, MarshalAs(UnmanagedType.LPStruct)] Guid interfaceGuid,
        [In] ref WlanConnectionParameters connectionParameters,
        IntPtr pReserved);

Выдает ошибку System.ComponentModel.Win32Exception: элемент не найден. Но если библиотека правильно расположена в system32, почему она выдает эту ошибку? И почему только в Windows XP, а не в Vista?

Большое спасибо всем

РЕДАКТИРОВАТЬ: Я проверил версии файлов Boith, Vista и XP, и я видел, что они отличаются (XP: 5.1, Vista: 6.0), но я скопировал версию Vista в XP, и у меня все еще есть та же проблема

2 ответа

Решение

решаемая

Проблема заключается в том, что Windows XP, когда сеть является ad-hoc-сетью, добавляет к имени суффикс "-adhoc". Когда я пытался подключиться к нему, он не нашел сеть "ххх"

С использованием :

      [DllImport("wlanapi.dll")]
    internal static extern int WlanSetProfile(
        [In] IntPtr hClientHandle,
        [In, MarshalAs(UnmanagedType.LPStruct)] Guid interfaceGuid,
        [In] WlanProfileFlags dwFlags,
        [In, MarshalAs(UnmanagedType.LPWStr)] string strProfileXml,
        [In, MarshalAs(UnmanagedType.LPWStr)] string strAllUserProfileSecurity,
        [In] bool bOverwrite,
        [In, Out] IntPtr pReserved,
        [Out] out WlanReasonCode dwReasonCode
    ); 

Сначала вам нужно создать профиль, элемент не найден, говорит, что профиль, к которому вы пытаетесь подключиться, недоступен.

Другие вопросы по тегам