windows - WinInet::InternetSetOption(...) 始终返回 0,GetLastError() 返回 12018

标签 windows visual-c++ wininet

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

相关文章:

windows - 说你不应该写入 Program Files 区域的指南在哪里?

c++ - 编译器选择不使用 REP MOVSB 指令进行字节数组移动

windows - “openssl”未被识别为内部或外部命令

c++ - 释放从 char* 创建的 _bstr_t

c++ - 带字符的全局变量

delphi - WinInet 能否返回正在使用的 TLS

windows - WinInet 与 WinHttp(服务或类似服务的进程)

php - C++ WinInet 只发出 1 个请求

c++ - Windows 打印处理器可以强制假脱机数据类型吗

c++ - Rust 找不到 Microsoft C++ 构建工具