WinInet::InternetSetOption(...) 总是返回 0 并且 GetLastError() 返回 12018
Posted
技术标签:
【中文标题】WinInet::InternetSetOption(...) 总是返回 0 并且 GetLastError() 返回 12018【英文标题】:WinInet::InternetSetOption(...) always returns 0 and GetLastError() returns 12018 【发布时间】:2013-04-11 08:35:55 【问题描述】:我正在尝试使用 InternetSetOption(...) 方法设置代理的用户名和密码。但是,它始终返回零,并且 Last error 设置为 12018。 下面是我的代码 sn-p。
#include "stdafx.h"
#include <Wininet.h>
int _tmain(int argc, _TCHAR* argv[])
HINTERNET _session = ::InternetOpen(_T("TestProgram"),
INTERNET_OPEN_TYPE_PRECONFIG,
NULL, NULL, NULL);
LPCTSTR proxyUserName = L"username";
LPCTSTR proxyPassword = L"userpassword";
BOOL b = ::InternetSetOption(_session,INTERNET_OPTION_PROXY_USERNAME ,(LPVOID)proxyUserName,wcslen(proxyUserName)+1 );
printf(" InternetSetOption returns - %d\n",b);
printf(" InternetSetOption GetLastError - %d\n",GetLastError());
b = ::InternetSetOption(_session,INTERNET_OPTION_PROXY_PASSWORD,(LPVOID)proxyPassword,wcslen(proxyPassword) +1 );
printf(" InternetSetOption returns - %d\n",b);
printf(" InternetSetOption GetLastError - %d\n",GetLastError());
getchar();
return 0;
我尝试以管理员和非管理员权限执行上述程序,但没有运气。 欢迎任何帮助。
谢谢, 呸呸呸
【问题讨论】:
【参考方案1】:您使用了不正确的HINTERNET
句柄。
来自Option Flags 文档:
INTERNET_OPTION_PROXY_USERNAME 这个选项可以在句柄上设置 由 InternetConnect 或 HttpOpenRequest 返回。
INTERNET_OPTION_PROXY_PASSWORD 这个选项可以在句柄上设置 由 InternetConnect 或 HttpOpenRequest 返回。
因此,您必须使用InternetConnect()
或HttpOpenRequest()
。
【讨论】:
以上是关于WinInet::InternetSetOption(...) 总是返回 0 并且 GetLastError() 返回 12018的主要内容,如果未能解决你的问题,请参考以下文章