启用旁路代理服务器并通知IE进行更改

时间:2018-12-07 14:32:55

标签: c internet-explorer winapi

我试图基于此example from Microsoft使用Internet Explorer选项API设置 LAN设置

我能够设置代理地址和异常,但是我想启用Bypass proxy server for local addresses复选框,并通知Internet Explorer进行更改,因此我不必关闭它并再次打开它。

我想我需要使用INTERNET_PER_CONN_OPTION结构中的另一个选项,但不知道我应该使用什么。

enter image description here

这是我的代码:

#include <Windows.h>
#include <wininet.h>
#include <wchar.h>

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

int wmain(int argc, wchar_t * argv[])
{
    INTERNET_PER_CONN_OPTION_LIST connList;
    DWORD bufSize = sizeof(connList);

    connList.dwSize = sizeof(connList);
    connList.pszConnection = NULL; 
    connList.dwOptionCount = 3;
    connList.pOptions = (INTERNET_PER_CONN_OPTION*)malloc(sizeof(INTERNET_PER_CONN_OPTION) * 3);

    if (connList.pOptions == NULL)
    {
        fwprintf(stderr, L"Memory allocation failed.\n");
        return 1;

    }

    connList.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
    connList.pOptions[0].Value.dwValue = PROXY_TYPE_DIRECT |
        PROXY_TYPE_PROXY;

    connList.pOptions[1].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
    connList.pOptions[1].Value.pszValue = L"https://internal.com.co:80";

    connList.pOptions[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
    connList.pOptions[2].Value.pszValue = L"local";

    BOOL internetOption;

    internetOption = InternetSetOptionW(NULL,
        INTERNET_OPTION_PER_CONNECTION_OPTION,
        &connList,
        bufSize);

    if (internetOption != TRUE)
    {
        fwprintf(stderr, L"Faile to set the option with code: %u\n", GetLastError());
        return 1;
    }

    free(connList.pOptions);

    wprintf(L"Done!\n");

    return 0;
}

你能帮我吗?

1 个答案:

答案 0 :(得分:1)

将包含<local><符号的字符串>添加到例外列表,例如<local>;*.microsoft.com