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
);
Сначала вам нужно создать профиль, элемент не найден, говорит, что профиль, к которому вы пытаетесь подключиться, недоступен.