2

我正在尝试使用 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;
}

我尝试使用管理员和非管理员权限执行上述程序,但没有运气。欢迎任何帮助。

谢谢, 奥姆基

4

1 回答 1

2

您使用了错误的HINTERNET句柄。来自选项标志文档:

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

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

因此,您必须使用InternetConnect()or HttpOpenRequest()

于 2013-04-11T09:17:20.140 回答