私はこれに数日間取り組んできました、そしてこれは私の頭をやっています:
このアプリケーションは、.NET Compact Framework 2.0を使用して構築されており、WindowsMobile5および6デバイスで実行されます。Wireless Zero Config関数(ここで説明:msdn.microsoft.com/en-us/library/ms894771.aspx)、特にアプリケーションから呼び出したWZCSetInterface関数を使用して、デバイスのWLAN接続をプログラムで設定できます。これは、WEPおよびWPA-PSK接続で正常に機能します。
WPA2ネットワークのサポートを追加する最近の取り組みで、コードを変更することにしました。WZCSetInterfaceを呼び出す前に正しいレジストリ設定を設定することにより、802.1x認証に証明書を使用するWPA2のサポートを正常に追加しました。ここで、PEAP(MS-CHAPv2)認証を使用してWPA2に対して同じことを行います。Windows Mobileでこのような接続を手動で作成する場合、ユーザーはドメイン/ユーザー/パスワードの詳細を入力するように求められます。私たちのアプリケーションでは、これらの詳細をローカルに保存し、ユーザーの介入なしにすべてプログラムでこれを実行したいと考えています。
そのため、証明書認証と同じルートをたどり、WZCSetInterfaceを呼び出す前に正しいレジストリエントリを設定することを考えました。
設定するレジストリ設定は次のとおりです。\HKCU\ Comm \ EAP \ Config \ [ssid name]
- Enable8021x = 1(DWORD)
- LastAuthSuccessful = 1(DWORD)
- EapTypeId = 25(DWORD)
- Identity = "domain \ username"(文字列)
- パスワード=
CryptProtectData関数を使用して暗号化されたパスワードを含むバイナリブロブ(ここで説明:msdn.microsoft.com/en-us/library/ms938309.aspx)
しかし、これらの設定が設定されていて、正しいパラメーターを使用してWZCSetInterfaceを呼び出すと、ドメイン/ユーザー名/パスワードを要求する[ユーザーログオン]ダイアログが表示されます。
パスワードダイアログが表示されないようにし、レジストリに保存されている設定にすぐに接続するには、私が何をする必要があるかを誰かが知っていますか?