VB.Net - wlanapi.dll WlanSetProfileEapXmlUserData

Мы пытаемся создать приложение для наших пользователей BYOD, чтобы они могли легко подключаться к нашей сети 802.1x.

Я нашел следующий код в Интернете:

Imports System.Runtime.InteropServices


Module Module1

    Private _stringToHex As Object

    Private Property Ret As UInteger

    Private Property StringToHex(profileName As String) As Object
        Get
            Return _stringToHex
        End Get
        Set(value As Object)
            _stringToHex = value
        End Set
    End Property

    Private Property handle As IntPtr

    Private Property Guid As Guid

    <DllImport("Wlanapi", EntryPoint:="WlanSetProfileEapXmlUserData")> _
    Public Function WlanSetProfileEapXmlUserData(<[In]()> ByVal hClientHandle As IntPtr, _
                                                        <[In](), MarshalAs(UnmanagedType.LPStruct)> ByVal interfaceGuid As Guid, _
                                                        <[In](), MarshalAs(UnmanagedType.LPWStr)> ByVal strProfileName As String, _
                                                        <[In]()> ByVal flags As ULong, _
                                                        <[In](), MarshalAs(UnmanagedType.LPWStr)> ByVal profileXml As String, _
                                                        <[In]()> ByVal pReserved As IntPtr) As UInteger
    End Function


    Sub Main()


        Dim profileName As String = "ISL"

        Dim AuthXml As String = String.Format("<?xml version=""1.0"" ?>" & _
                                                    "<EapHostUserCredentials xmlns=""http://www.microsoft.com/provisioning/EapHostUserCredentials"" xmlns:eapCommon=""http://www.microsoft.com/provisioning/EapCommon"" xmlns:baseEap=""http://www.microsoft.com/provisioning/BaseEapMethodUserCredentials"">" & _
                                                        "<EapMethod>" & _
                                                            "<eapCommon:Type>25</eapCommon:Type>" & _
                                                            "<eapCommon:AuthorId>0</eapCommon:AuthorId>" & _
                                                        "</EapMethod>" & _
                                                        "<Credentials xmlns:eapUser=""http://www.microsoft.com/provisioning/EapUserPropertiesV1"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:baseEap=""http://www.microsoft.com/provisioning/BaseEapUserPropertiesV1"" xmlns:MsPeap=""http://www.microsoft.com/provisioning/MsPeapUserPropertiesV1"" xmlns:MsChapV2=""http://www.microsoft.com/provisioning/MsChapV2UserPropertiesV1"">" & _
                                                            "<baseEap:Eap>" & _
                                                                "<baseEap:Type>25</baseEap:Type>" & _
                                                                "<MsPeap:EapType>" & _
                                                                    "<MsPeap:RoutingIdentity>username</MsPeap:RoutingIdentity>" & _
                                                                    "<baseEap:Eap>" & _
                                                                        "<baseEap:Type>26</baseEap:Type>" & _
                                                                            "<MsChapV2:EapType>" & _
                                                                                "<MsChapV2:Username>USERNAME</MsChapV2:Username>" & _
                                                                                "<MsChapV2:Password>PASSWORD</MsChapV2:Password>" & _
                                                                                "<MsChapV2:LogonDomain>DOMAIN</MsChapV2:LogonDomain>" & _
                                                                            "</MsChapV2:EapType>" & _
                                                                        "</baseEap:Eap>" & _
                                                                "</MsPeap:EapType>" & _
                                                            "</baseEap:Eap>" & _
                                                        "</Credentials>" & _
                                                    "</EapHostUserCredentials>", profileName, StringToHex(profileName))

        Ret = WlanSetProfileEapXmlUserData(handle, Guid, profileName, Convert.ToUInt64(&H1), AuthXml, IntPtr.Zero)
    End Sub




End Module

Это дает мне следующую ошибку: "Дополнительная информация: вызов функции PInvoke 'test_wlan_conf! Test_wlan_conf.Module1::WlanSetProfileEapXmlUserData' разбалансировал стек. Вероятно, это связано с тем, что управляемая подпись PInvoke не соответствует неуправляемой целевой подписи. Проверьте, что соглашение о вызовах и параметры подписи PInvoke соответствуют целевой неуправляемой подписи."

С моими почти несуществующими навыками.net, я признаю, что это будет действительно трудно решить. Любая помощь будет высоко ценится!

1 ответ

Решил сам, используя AutoIT UDF с их форумов. UDF вызывает wlanapi.dll и позволяет использовать его функции для настройки доступа к WLAN, профилей и т. Д.

Шаги для Windows 7:

  1. создать exe из AutoIT UDF, изменить, чтобы иметь возможность передавать аргументы CLI (имя пользователя / пароль)
  2. импортировать ранее созданный профиль, используя netsh
  3. добавить кредиты, используя ранее созданный exe
  4. Готово

Шаги для Windows 8:

  1. создать exe из AutoIT UDF, изменить, чтобы иметь возможность передавать аргументы CLI (имя пользователя / пароль)
  2. импортировать ранее созданный профиль, используя netsh
  3. добавить кредиты, используя ранее созданный exe
  4. используйте netsh для подключения к SSID (W8 не подключается автоматически...)
  5. Готово

Надеюсь это поможет

Другие вопросы по тегам