Programmgesteuertes Erkennen von Systemproxyeinstellungen unter Windows XP mit Python

Ich entwickle eine kritische Anwendung, die von einem multinationalen Unternehmen verwendet wird. Benutzer in Büros auf der ganzen Welt müssen in der Lage sein, diese Anwendung zu installieren.

Die Anwendung ist eigentlich ein Plugin für Excel und wir haben ein automatisches Installationsprogramm, das auf Setuptools 'easy_install basiert und sicherstellt, dass alle Abhängigkeiten eines Projekts automatisch installiert oder aktualisiert werden, wenn ein Benutzer sein Excel einschaltet. Das alles funktioniert sehr elegant, da die Benutzer selten über die gesamte Installation Bescheid wissen, die vollständig im Hintergrund stattfindet.

Leider erweitern und eröffnen wir neue Büros, die alle unterschiedliche Proxy-Einstellungen haben. Diese Einstellungen scheinen sich von Tag zu Tag zu ändern, sodass wir nicht mit den ausgelagerten Sicherheitsleuten mithalten können, die Dinge ändern, ohne es uns zu sagen. Es ist scheiße, aber wir müssen es einfach umgehen.

Ich möchte die systemweiten Proxy-Einstellungen auf den Windows-Workstations, die unsere Benutzer ausführen, programmgesteuert erkennen:

Jeder in der Organisation führt Windows XP und Internet Explorer aus. Ich habe überprüft, dass jeder unsere Inhalte problemlos vom Internet Explorer herunterladen kann, egal wo auf der Welt sie sich befinden.

Ich muss also nur herausfinden, welche Proxy-Einstellungen der IE verwendet, und Setuptools veranlassen, diese Einstellungen zu verwenden. Theoretisch sollten alle diese Informationen in der Registrierung sein. Aber gibt es einen besseren Weg, sie zu finden, der sich garantiert nicht ändert, wenn Benutzer den IE aktualisieren? Gibt es beispielsweise einen Windows-API-Aufruf, mit dem ich die Proxy-Einstellungen ermitteln kann?

In Summe:

Wir verwenden Python 2.4.4 unter Windows XPWir müssen die Proxy-Einstellungen des Internet Explorers erkennen (z. B. Host, Port und Proxy-Typ)Ich werde diese Informationen verwenden, um easy_install dynamisch neu zu konfigurieren, damit es die Ei-Dateien über den Proxy herunterladen kann.

UPDATE0:

Ich habe ein wichtiges Detail vergessen: Jede Site hat eine "pac" -Datei für die automatische Konfiguration.

In Windows \ CurrentVersion \ InternetSettings \ AutoConfigURL befindet sich ein Schlüssel, der auf ein HTTP-Dokument auf einem lokalen Server verweist, das eine Javascript-Datei enthält.

Das pac-Skript ist im Grunde eine Reihe verschachtelter if-Anweisungen, die URLs mit einem regulären Ausdruck vergleichen und schließlich den Hostnamen des ausgewählten Proxy-Servers zurückgeben. Das Skript ist eine einzige Javascript-Funktion namens FindProxyForURL (URL, Host)

Die Herausforderung besteht daher darin, für jeden Server herauszufinden, welcher Proxy verwendet werden soll. Die einzige zu 100% garantierte Möglichkeit, dies zu tun, besteht darin, die pac-Datei nachzuschlagen und die Javascript-Funktion von Python aus aufzurufen.

Irgendwelche Vorschläge? Gibt es eine elegantere Möglichkeit, dies zu tun?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage