我正在尝试使用 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;
}
我尝试使用管理员和非管理员权限执行上述程序,但没有成功。 欢迎任何帮助。
谢谢, 欧姆奇
最佳答案
您使用了不正确的HINTERNET
句柄。
来自 Option Flags文档:
INTERNET_OPTION_PROXY_USERNAME This option can be set on the handle returned by InternetConnect or HttpOpenRequest.
INTERNET_OPTION_PROXY_PASSWORD This option can be set on the handle returned by InternetConnect or HttpOpenRequest.
因此,您必须使用 InternetConnect()
或 HttpOpenRequest()
。
关于windows - WinInet::InternetSetOption(...) 始终返回 0,GetLastError() 返回 12018,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15944176/