[C++]IEプロキシサーバーのアカウントパスワードを取得する


多くのプログラムでは「ブラウザ設定」のプロキシサーバを使用する必要があり、IE設定のプロキシサーバではアカウントパスワードが必要になる可能性があります.ブラウザが設定したプロキシサーバーのアカウントパスワードをどのようにプログラミングして取得しますか?
InternetQueryOption(NULL, INTERNET_OPTION_PASSWORD, buf, &len)
この方法は私たちの目標を達成できないことが証明された.INTERNET_OPTION_PASWORDは、特定の接続のパスワードを取得するためにのみ使用できます.つまり、接続にパスワードを設定した後、接続のハンドルに基づいてこの接続のパスワードを取得することができます.これは私たちが望んでいる機能ではありません.
では、IE内のプロキシサーバーのアカウントパスワードを取得するにはどうすればいいのでしょうか.肝心なのはコントロールパネル->ユーザー->資格証明マネージャで、IEのプロキシサーバーのアカウントパスワードはすべてここで管理します.
Windows自身がIEエージェントサーバのアカウントパスワードを管理できるインタフェースを持っている以上、システムには必ず対応するAPIがこの機能を実現することができる.
BOOL cred(TCHAR* ip, CString& usr, CString& pwd)
{
	usr.Empty();
	DWORD dwCount = 0;
	PCREDENTIAL * pCredArray = NULL ;
	if( CredEnumerate( NULL, 0, &dwCount, &pCredArray ) )
	{
		for( DWORD dwIndex = 0; dwIndex < dwCount; dwIndex++)
		{
			PCREDENTIAL pCredential = pCredArray[dwIndex];
			CString target = pCredential->TargetName;
			if (target == ip)
			{
				usr = pCredential->UserName;
#ifdef _UNICODE
				pwd = (LPCWSTR)pCredential->CredentialBlob;
#else
				pwd = CW2A((LPCWSTR)pCredential->CredentialBlob);
#endif
				break;
			}
		}

		CredFree( pCredArray );
	}
	return (usr.GetLength() > 0);
}

上記コードは、特定のIPのプロキシサーバのアカウントパスワードを取得することができる.つまり、IEブラウザが設定したプロキシサーバーのアカウントパスワードを取得します.