インターネットエクスプローラーで私はプロキシサーバーを設定できます。 Internet Explorerにアクセスすると、プロキシの資格情報が表示され、必要に応じて保存されます。 IEの新しいインスタンスが資格情報を取得します。IEのプロキシサーバーの資格情報を使用するようにWinINetに指示する方法
資格情報は、資格情報マネージャーに一般資格情報として保存されていることがわかります。名前は、Microsoft_WinInet_ [proxyserver:port]/[proxyserver.acme.com]のような命名規則に従います。
私のアプリはWinINetを使用しています。現在InternetSetOption経由でINTERNET_OPTION_PROXY_USERNAMEとINTERNET_OPTION_PROXY_PASSWORDを使用して資格情報を設定しています。
代わりに、WinINetに現在のユーザーのIE(またはCredentials Manager)資格情報を使用するように伝えたいとします。それは資格証明書を得ることに成功した場合
retry:
BOOL fRet = ::HttpSendRequest(hRequest, NULL, 0, NULL, 0);
DWORD dwError = ::GetLastError();
DWORD statusCode(0);
DWORD statusLen = sizeof(DWORD);
DWORD headerIndex = 0;
::HttpQueryInfo(hRequest, HTTP_QUERY_FLAG_NUMBER | HTTP_QUERY_STATUS_CODE,
&statusCode, &statusLen, &headerIndex);
if (statusCode == HTTP_STATUS_PROXY_AUTH_REQ)
{
DWORD dwFlags = FLAGS_ERROR_UI_FILTER_FOR_ERRORS |
FLAGS_ERROR_UI_FLAGS_CHANGE_OPTIONS |
FLAGS_ERROR_UI_FLAGS_GENERATE_DATA;
DWORD res =::InternetErrorDlg(GetDesktopWindow(), hRequest,
ERROR_INTERNET_INCORRECT_PASSWORD, dwFlags, NULL);
if (res == ERROR_INTERNET_FORCE_RETRY)
goto retry;
else
return false;
}
InternetErrorDlg(CMから、あるいはユーザに促すことで)ERROR_INTERNET_FORCE_RETRYを返します。そうは次のようにWinINetの資格情報マネージャの資格情報を使用して持っている