如何以编程方式打开 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;
我需要一个代码来打开或关闭 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;