1

我正在创建一个能够自动连接到无线网络的程序。为此,我使用了一个名为 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: Element not found。但是,如果库正确位于 system32 中,为什么会抛出此错误?为什么只在 Windows XP 中而不在 Vista 中?

非常感谢大家

编辑:我检查了两个文件版本,Vista 和 XP,我发现它们是不同的(XP:5.1,Vista:6.0)但我已经将 Vista 的版本复制到 XP,我仍然有同样的问题

4

2 回答 2

1

解决了

问题在于,当网络是 adhoc 网络时,Windows XP 会在名称中添加“-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 回答