WinInet :: InternetSetOption(…)总是返回0,GetLastError()返回12018

我正在尝试使用InternetSetOption(…)方法设置用户名和密码代理。 但是,它总是返回零,最后错误设置为12018.下面是我的代码片段。

#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; } 

我试图用pipe理员和非pipe理员权限执行上述程序,但没有运气。 任何帮助是受欢迎的。

谢谢,笨蛋

Solutions Collecting From Web of "WinInet :: InternetSetOption(…)总是返回0,GetLastError()返回12018"

您使用了不正确的HINTERNET句柄。 从选项标志文档:

INTERNET_OPTION_PROXY_USERNAME可以在InternetConnect或HttpOpenRequest返回的句柄上设置此选项。

INTERNET_OPTION_PROXY_PASSWORD可以在InternetConnect或HttpOpenRequest返回的句柄上设置此选项。

所以,你必须使用InternetConnect()HttpOpenRequest()