如何以编程方式打开 Windows 代理 On/Off

How to turn Windows Proxy On/Off programmatically

我需要一个代码来打开或关闭 Windows Proxy。我试过了:

WINHTTP_PROXY_INFO proxyInfo;
proxyInfo.dwAccessType = WINHTTP_ACCESS_TYPE_NO_PROXY;
proxyInfo.lpszProxy = new WCHAR[25]  { 0 };
proxyInfo.lpszProxyBypass = new WCHAR[25]  { 0 };
WinHttpSetDefaultProxyConfiguration(&proxyInfo)

但即使有管理员权限也不会关闭代理。

是否有可以做到这一点的 winapi 代码?

开启Windows代理,

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

#pragma comment(lib,"Wininet.lib")
void main()
{
    INTERNET_PER_CONN_OPTION options[2];
    INTERNET_PER_CONN_OPTION_LIST list{};
    list.dwSize = sizeof(list);
    list.dwOptionCount = 1;
    list.pOptions = options;
    options[0].dwOption = INTERNET_PER_CONN_FLAGS_UI;

    // Query the current value
    DWORD listSize = sizeof(list);
    InternetQueryOption(nullptr, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, &listSize);
    options[0].Value.dwValue |= PROXY_TYPE_PROXY; 
    list.dwOptionCount = 2;
    options[1].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
    WCHAR proxy[] = L"192.3.3.6";
    options[1].Value.pszValue = proxy;

    InternetSetOption(nullptr, INTERNET_OPTION_PER_CONNECTION_OPTION, &list, sizeof(list));
    InternetSetOption(nullptr, INTERNET_OPTION_SETTINGS_CHANGED, nullptr, 0);
}

关闭 Windows 代理,

修改这一行:

options[0].Value.dwValue |= PROXY_TYPE_DIRECT;