0

ワイヤレス ネットワークに自動的に接続できるプログラムを作成しています。そのために、ライブラリ「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 メソッドを呼び出そうとすると、結果は常に同じで、接続されません。

あなたが提供できるアイデアをいただければ幸いです。

4

1 に答える 1

0

プロファイルが無効である理由を示す WlanReasonCode 出力パラメーターがあります。それは何か助けになりますか?

どのマシンからプロファイルを取得しましたか? IIRC XP は、後のプラットフォームでサポートされるプロファイルのサブセットのみをサポートします。

ああ、XP で IBSS (アドホック) ネットワークに WlanConnect できるかどうかはわかりません。

于 2012-01-10T07:09:45.693 に答える