So ändern Sie den globalen Windows-Proxy mithilfe von C # .NET mit Soforteffekt

Ich schreibe eine Winform-App (C # .NET), um die globalen Proxy-Einstellungen von Windows (auch bekannt als Internet Explorer) zu ändern.

Ich benutze das.

RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
registry.SetValue("ProxyEnable", 1);
registry.SetValue("ProxyServer", "127.0.0.1:8080");

Aber es verhält sich seltsam. Ich habe dies mit zwei Browsern getestet

Google Chrome:

Wenn ich den Proxy ändere / deaktiviere, während Chrome ausgeführt wird. Chrome verwendet weiterhin den vorherigen Proxy. Die Änderung wirkt sich nicht auf den Prozess aus. Aber als ichEinfach offen Internet Options(inetcpl.cpl) > Connections > LAN Settings. Der bisherige Proxy-Wechsel wird nun berücksichtigt. Als ich sagteEinfach offen Ich meine wirklichEinfach offen. Ich meine, keine anderen Schaltflächen bearbeiten oder anklicken. Ich denke, es ist dann der globale ProxyJa wirklich Sich ändern (durch Lesen aus der Registrierung) und Google Chrome wird sofort wirksam.

Internet Explorer 8:

Bei Internet Explorer ist das viel schlimmer. Nach dem Ändern / Deaktivieren des Proxys mithilfe meiner App, während der IE ausgeführt wird & Auch nach dem Aufrufen von "Internetoptionen (inetcpl.cpl)> Verbindungen> LAN-Einstellungen" wird der ausgeführte IE-Proxy nicht beeinträchtigt. Nicht einmal, wenn ich einen neuen Link in einem neuen Tab öffne. Ich musste IE neu starten, damit diese Änderung übernommen wurde.

Ich möchte, dass jedes Mal, wenn ich die Proxy-Einstellungen in meiner App ändere, alle Browser, die einen globalen Proxy verwenden (unabhängig davon, ob sie ausgeführt werden oder nicht), dies tunsofort die Änderung der Einstellungen übernehmen.

Wie kann ich das erreichen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage