0

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

  1. 不需要重新启动任何浏览器
  2. 不需要浏览器重新认证

我真的在寻找一个系统级的预认证代理。

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

使用:c++11,Windows 7

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

4

1 回答 1

1

系统级代理设置位于所有用户的\Software\Microsoft\Windows\CurrentVersion\Internet Settingshive in和当前用户的 hive 下的注册表中。有一个官方说明如何通过 REG 文件更改它,您不需要编写任何代码。HKLMHKCU

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

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

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

因此,当您使用完整的 Microsoft 软件堆栈时 - 您仍然不需要编写任何代码 :-) 此外,ISA Firewall Client 使用未记录的 Windows 功能,并且很难编写一些东西来用您自己的“C++11”替换它技能。

于 2014-11-27T23:38:30.190 回答