79595319

Date: 2025-04-27 18:00:33
Score: 0.5
Natty:
Report link

As @Remy Lebeau suggested in the comments, you should use `INTERNET_OPTION_PER_CONNECTION_OPTION`. The full solution might look like this:

#include <windows.h>
#include <wininet.h>
#include <iostream>

#pragma comment(lib, "wininet.lib")

int main() {
    INTERNET_PER_CONN_OPTION_LIST optionList;
    INTERNET_PER_CONN_OPTION options[3];
    unsigned long size = sizeof(optionList);

    optionList.dwSize = sizeof(optionList);
    optionList.pszConnection = NULL;
    optionList.dwOptionCount = 3;
    optionList.pOptions = options;

    options[0].dwOption = INTERNET_PER_CONN_FLAGS;
    options[1].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
    options[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;

    if (!InternetQueryOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &optionList, &size)) {
        std::cout << "InternetQueryOption failed. Error: " << GetLastError() << std::endl;
        return 1;
    }

    std::cout << "Flags: " << optionList.pOptions[0].Value.dwValue << std::endl;

    if (optionList.pOptions[1].Value.pszValue)
        std::wcout << L"Proxy Server: " << optionList.pOptions[1].Value.pszValue << std::endl;

    if (optionList.pOptions[2].Value.pszValue)
        std::wcout << L"Proxy Bypass: " << optionList.pOptions[2].Value.pszValue << std::endl;

    if (optionList.pOptions[1].Value.pszValue)
        GlobalFree(optionList.pOptions[1].Value.pszValue);
    if (optionList.pOptions[2].Value.pszValue)
        GlobalFree(optionList.pOptions[2].Value.pszValue);

    return 0;
}
Reasons:
  • Long answer (-1):
  • Has code block (-0.5):
  • User mentioned (1): @Remy
  • Self-answer (0.5):
  • Low reputation (0.5):
Posted by: Joe J