1

ワイヤレスネットワークに自動的に接続できるプログラムを作成しています。そのために、ライブラリ「wlanapi.dll」を使用するManagedWifiというライブラリを使用しています。Windows Vistaでコードを使用しようとすると、すべて問題ありませんが、WindowsXPで使用すると失敗します。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:Elementnotfoundをスローします。しかし、ライブラリがsystem32に正しく配置されている場合、なぜこのエラーがスローされるのでしょうか。そして、なぜWindows XPだけで、Vistaではないのですか?

みなさん、ありがとうございました

編集: VistaとXPの両方のファイルバージョンを確認しましたが、それらが異なることを確認しました(XP:5.1、Vista:6.0)が、VistaのバージョンをXPにコピーしましたが、それでも同じ問題が発生します

4

2 に答える 2

1

解決しました

問題は、ネットワークがアドホックネットワークである場合、WindowsXPが名前に「-adhoc」接尾辞を追加することです。接続しようとしたところ、「xxx」ネットワークが見つかりませんでした

于 2011-11-30T08:56:22.457 に答える
0

使用:

[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
    ); 

最初にプロファイルを作成する必要があります。要素が見つかりません。接続しようとしているプロファイルが利用できないと表示されます。

于 2021-09-14T08:00:10.073 に答える