Proxy Einstellung des IE auslesen ?



  • Ich möchte bei mir den Proxyserver des IE auslesen und als Basis für die Einbstellungen in meinem Programm verwenden. Das Problem dabei ist, das ich auf diversen Rechnern verschiedene Dinge dazu gefunden habe.

    Auf einem Rechner (Windows 2000) ist der Server in der Registry hinterlegt, dort klapp das auslesen wunderbar. Auf einem anderen Rechner (Ebenfalls Windows 2000) war bis kurz zuvor kein Proxyserver angegeben. Ich habe dann den IE gestartet dort die Einstellungen getroffen und siehe da > in der Registry sind an der selben Stelle keine Einstellungen zu finden, der Schlüssel ist leer. Starte ich nun den IE stehen dort aber die korrekten Einstellungen drinn.

    Hat wer von euch Ahnung wo der IE sowas ablegen könnte ? Firefox liest den ja auch bei der Installation aus, also muss es ja einen oder mehrere verbindliche Orte geben

    PS der einzige Unterschied der mir einfällt ist folgender: Auf dem Rechner mit der "erfolgreichen" Registry" ist der IE5.5 installiert auf dem mit dem leeren Schlüssel der IE6.



  • Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL/CLX (Borland C++ Builder) in das Forum Rund um die Programmierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Edit: WinINet war etwas der falsche Tip. Aber es läuft auf das selbe hinaus: Dafür würde ich nicht in der Registry suchen sondern Funktionen aus dem Platform SDK benützen.

    MfG SideWinder



  • Hmm aus deiner Antwort werde ich nicht schlau...

    Die Anwendung die ich schreibe wird im BCB5 programmiert und soll unter Win95/98/Me/2000/Xp laufen. Dort soll sie die aktuellen Proxyeinstellungen des IE auslesen (evtl. auch Firefox) und diese in einem String oder AnsiString zurückgeben...



  • Firefox:

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Net;
    using System.Net.Sockets;
    using System.Xml;
    using System.Threading;
    using System.Text;
    using System.IO;
    using Microsoft.Win32;
    using System.Diagnostics;
    
    namespace Network.Helper
    {
        /// <summary>
        /// Ermittelt die Proxy Einstellungen von Mozilla Firefox
        /// </summary>
        class MozillaFirefoxProxySettings
        {
            /// <summary>
            /// Adresse des eingestellten Proxyservers.
            /// </summary>
            public static string IP
            {
                get
                {
                    try
                    {
                        string data = read_key("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "AppData");
                        string[] files = System.IO.Directory.GetDirectories(data + "\\Mozilla\\Firefox\\Profiles");
    
                        bool foundProxyName = false;
    
                        foreach (string profile in files)
                        {
                            StreamReader reader = File.OpenText(profile + "\\prefs.js"); // open file
                            for (int i = 0; -1 != reader.Peek(); i++) // read file
                            {
                                string line = reader.ReadLine();
    
                                // search XXX in user_pref("network.proxy.http", "XXX");
                                if (line.StartsWith("user_pref(\"network.proxy.http\", \""))
                                {
                                    line = line.Remove(0, "user_pref(\"network.proxy.http\", \"".Length);
    
                                    line = line.Substring(0, line.Length - 3);
                                    return line;
                                }
                            }
                            reader.Close();
                        }
    
                        throw new Exception("CouldNotFindSettings");
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.ToString() + " StackTrace: " + ex.StackTrace);
                        throw ex;
                    }
                }
            }
    
            /// <summary>
            /// Port des eingestellten Proxyservers.
            /// </summary>
            public static int Port
            {
                get
                {
                    try
                    {
                        string data = read_key("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders", "AppData");
                        string[] files = System.IO.Directory.GetDirectories(data + "\\Mozilla\\Firefox\\Profiles");
    
                        bool foundProxyName = false;
    
                        foreach (string profile in files)
                        {
                            StreamReader reader = File.OpenText(profile + "\\prefs.js"); // open file
                            for (int i = 0; -1 != reader.Peek(); i++) // read file
                            {
                                string line = reader.ReadLine();
    
                                // search YYY in user_pref("network.proxy.http_port", YYY);
                                if (line.StartsWith("user_pref(\"network.proxy.http_port\", "))
                                {
                                    line = line.Remove(0, "user_pref(\"network.proxy.http_port\", ".Length);
    
                                    return int.Parse(line.Substring(0, line.Length - 2));
                                }
                            }
                            reader.Close();
                        }
    
                        throw new Exception("CouldNotFindSettings");
                    }
                    catch (Exception ex)
                    {
                        Debug.WriteLine(ex.ToString() + " StackTrace: " + ex.StackTrace);
                        throw ex;
                    }
                }
            }
    
            /// <summary>
            /// Zum Auslesen von Werten aus der Registrierung.
            /// </summary>
            /// <param name="subKey">Sub Key.</param>
            /// <param name="keyName">Key Name.</param>
            /// <returns>Schluesselwert als String oder wenn nicht gefunden "fault".</returns>
            static private string read_key(string subKey, string keyName)
            {
                try
                {
                    RegistryKey key = Registry.CurrentUser.OpenSubKey(subKey, true);
                    string asdasd = ((string)key.GetValue(keyName, keyName));
                    return asdasd;
                }
                catch
                {
                    return "fault";
                }
            }
        }
    }
    

    IE:

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Net;
    using System.Net.Sockets;
    using System.Xml;
    using System.Threading;
    using System.Text;
    using System.IO;
    using Microsoft.Win32;
    using System.Windows.Forms;
    using Network;
    
    namespace Network.Helper
    {
        /// <summary>
        /// Hilfsklasse zum Auslesen der IE Einstellungen
        /// Proxy Adresse + Proxy Port
        /// </summary>
        public class IESettings
        {
            /// <summary>
            /// ermittelt ob Proxy Einstellungen verfuegbar falls wenn nicht true 
            /// falls ja
            /// </summary>
            /// <returns></returns>
            public static bool isProxySettingsAvailable()
            {
                //// Aus IE Einstellungen Proxy Server ermitteln
                RegistryKey currentUser = Registry.CurrentUser;
                RegistryKey InternetSettings = null;
    
                InternetSettings = currentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true);
    
                if (InternetSettings == null)
                    return false;
    
                string str = (string)InternetSettings.GetValue("ProxyServer", string.Empty);
                InternetSettings.Close();
    
                if (str == null || str.Equals(""))	// In den IE Einstellungen wurde kein Proxy gesetzt
                    return false;
    
                int pos = str.IndexOf(":");
    
                if (pos == -1)			// kein Doppelpunkt xpecto.rambo:2323
                    return false;
    
                if (pos == str.Length - 1) // kein Port angegeben
                    return false;
    
                return true;
            }
    
            /// <summary>
            /// Adresse des Proxyservers.
            /// </summary>
            public static string ProxyName
            {
                get
                {
                    //// Aus IE Einstellungen Proxy Server ermitteln
                    RegistryKey currentUser = Registry.CurrentUser;
                    RegistryKey InternetSettings;
    
                    InternetSettings = currentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true);
                    string str = (string)InternetSettings.GetValue("ProxyServer", string.Empty);
                    InternetSettings.Close();
    
                    int Port;
                    string ServerName;
    
                    int i = 0;
                    while (str[i] != ':')
                    {
                        i++;
                    }
    
                    ServerName = str.Substring(0, i);
                    Port = int.Parse(str.Substring(i + 1));
    
                    return ServerName;
                }
            }
    
            /// <summary>
            /// Port des Proxyservers.
            /// </summary>
            public static int ProxyPort
            {
                get
                {
                    //// Aus IE Einstellungen Proxy Server ermitteln
                    RegistryKey currentUser = Registry.CurrentUser;
                    RegistryKey InternetSettings;
    
                    InternetSettings = currentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Internet Settings", true);
                    string str = (string)InternetSettings.GetValue("ProxyServer", string.Empty);
                    InternetSettings.Close();
    
                    int Port;
                    string ServerName;
    
                    int i = 0;
                    while (str[i] != ':')
                    {
                        i++;
                    }
    
                    ServerName = str.Substring(0, i);
                    Port = int.Parse(str.Substring(i + 1));
    
                    return Port;
                }
            }
        }
    }
    


  • Das sieht gut aus, ichwerd das am WE ausprobieren.... habt vielen Dank.


Anmelden zum Antworten