ワイヤレス ネットワークに自動的に接続できるプログラムを作成しています。そのために、ライブラリ「wlanapi.dll」を使用する ManagedWifi というライブラリを使用しています。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 with SP3 and Wireless LAN API for Windows XP with SP2 : WlanConnect を使用してのみ、優先ネットワーク リストのネットワークに接続できます。ネットワークを優先ネットワーク リストに追加するには、WlanSetProfile を呼び出します。
私は本当に絶望的です、私は数日このエラーと戦ってきました、そして私はそれを経験する必要があります...
また、SetProfile を呼び出さずに WlanConnect メソッドを呼び出そうとすると、結果は常に同じで、接続されません。
あなたが提供できるアイデアをいただければ幸いです。