在 Windows 上的 C++ 中设置系统代理和身份验证

Set system proxy && authentication in C++ on Windows

本文关键字:系统 代理 身份验证 设置 Windows 上的 C++      更新时间:2023-10-16

没有办法在C++使用身份验证凭据设置 Windows 系统代理,以便它会立即影响所有正在运行的程序(浏览器等),但是:

  1. 无需重新启动任何浏览器
  2. 不需要浏览器重新身份验证

我真的在寻找系统级预身份验证代理。

感谢您的任何帮助。如果有什么不清楚的地方,请提出任何问题。

使用: c++11, 视窗 7

编辑1:我需要以编程方式设置,所以请不要建议任何手动操作。
编辑2:部分可接受的是一种如何在没有预身份验证的情况下以编程方式设置代理但仍保留1的方法。 要求(不需要重新启动任何浏览器)

系统级代理设置位于注册表中的"HKLM SoftwareMicrosoftWindowsCurrentVersionInternet Settings配置单元"下,适用于所有用户,HKCU配置单元(适用于当前用户)。有一个官方说明如何通过REG文件更改它,你不需要编写任何代码。

但主要问题是:任何应用程序都可能有自己的代理设置,其中它 1) 可以首选系统级设置,但允许用户覆盖它,2) 根本不使用系统设置。

在企业环境中,此问题解决的方式如下:

  1. Internet 网关不允许直接访问外部网络,代理服务器以外的任何计算机(Microsoft ISA/Forefront Web 代理)
  2. 注册表中的代理设置通过组策略强制到所有计算机
  3. 如果用户需要运行无法使用系统范围代理设置的应用程序 - 则需要安装 ISA 防火墙客户端,该客户端拦截所有流量并在 ISA 代理上对其进行身份验证。

因此,当您使用完整的Microsoft软件堆栈时 - 您仍然不需要编写任何代码:-)此外,ISA 防火墙客户端使用未记录的 Windows 功能,很难编写一些内容来用您自己的"C++11"技能替换它。