如何以编程方式打开/关闭 Windows 代理
Posted
技术标签:
【中文标题】如何以编程方式打开/关闭 Windows 代理【英文标题】:How to turn Windows Proxy On/Off programmatically 【发布时间】:2021-01-03 06:07:41 【问题描述】:我需要一个代码来打开或关闭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代码可以做到这一点?
【问题讨论】:
【参考方案1】:打开 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;
【讨论】:
谢谢。options[0].Value.dwValue = PROXY_TYPE_DIRECT;
用于关闭。而L"192.168.49.1:9099"
可以用来设置端口。但我仍然有问题。开启proxy时不想更改默认值?以上是关于如何以编程方式打开/关闭 Windows 代理的主要内容,如果未能解决你的问题,请参考以下文章
windows11 技巧win11如何关闭你要以何方式打开此文件
如何以编程方式在 Windows 8 和 Windows 10 桌面登录屏幕上显示状态栏? [关闭]