8
votes

Comment modifier les paramètres LAN (configuration proxy) Programmatiquement

J'écris un programme pour commuter automatiquement mon adresse proxy en fonction du réseau que je suis connecté à.

J'ai jusqu'à présent obtenu tout pour travailler sauf la partie que j'ai soulignée ci-dessous.

Dialogue des paramètres LAN

Y a-t-il un moyen de modifier le script de configuration automatique et les paramètres de détection automatique dans le code?

La solution peut être une modification du registre P / invoke. J'ai juste besoin de quelque chose qui fonctionne.


0 commentaires

5 Réponses :


19
votes

Vous pouvez modifier les paramètres de proxy à l'aide du registre. Voir le lien suivant:
http://support.microsoft.com/kb/819961

Chemin de clé: HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Paramètres Internet CODE> P>

Valeurs: strong> P>

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings]
"ProxyEnable"=dword:00000001
"ProxyOverride"="proxyexceptionname:portnumber;anotherexceptionname:port
"ProxyServer"="ftp=MyFTPProxy:Port;http=MYHTTPPROXY:PORT;https=MYHTTPSPROXY:PORT
"AutoConfigURL"=""


1 commentaires

Merci pour les informations sur le autoconfigurl . C'était une chose que je cherchais. J'ai trouvé comment désactiver / activer l'autre case à cocher ( détecter automatiquement les paramètres ) en lisant Commentaire d'Andrew Swan à la question SuperUserSer.com que vous avez liée . Il dit fondamentalement à soustraire 8 de la neuvième octet de HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Paramètres Internet \ Connections | DefaultConnectionsSETTES Pour désactiver l'option.



8
votes

J'ai fouillé pour cela. Mais comme je ne pouvais pas trouver, j'avais écrit l'extrait de code ci-dessous qui fonctionne à cet effet.

    /// <summary>
    /// Checks or unchecks the IE Options Connection setting of "Automatically detect Proxy"
    /// </summary>
    /// <param name="set">Provide 'true' if you want to check the 'Automatically detect Proxy' check box. To uncheck, pass 'false'</param>
    public void IEAutoDetectProxy(bool set)
    {
        // Setting Proxy information for IE Settings.
        RegistryKey RegKey = Registry.CurrentUser.OpenSubKey(@"Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\Connections", true);
        byte[] defConnection = (byte[])RegKey.GetValue("DefaultConnectionSettings");
        byte[] savedLegacySetting = (byte[])RegKey.GetValue("SavedLegacySettings");
        if (set)
        {
            defConnection[8] = Convert.ToByte(9);
            savedLegacySetting[8] = Convert.ToByte(9);
        }
        else
        {
            defConnection[8] = Convert.ToByte(1);
            savedLegacySetting[8] = Convert.ToByte(1);
        }
        RegKey.SetValue("DefaultConnectionSettings", defConnection);
        RegKey.SetValue("SavedLegacySettings", savedLegacySetting);
    }


1 commentaires

Grande aide. Merci de sauver mon temps.



1
votes

meilleur que http://support.microsoft.com/kb/819961 , via. Fichier REG, nous devrions faire référence à http://support.microsoft.com/kb/226473 "< un href = "http://support.microsoft.com/kb/2226473" rel = "nofollow"> Comment interroger et définir des paramètres de proxy sous Internet Explorer ", utilisez INTERNETSETOPTION ().

comme http://blogs.msdn.com/b/ieinternals/archive/2013/10/11/web-proxy-configuration-and-ie11-changes.aspx a déclaré: "Plutôt que de tenter de" poquer " Le registre directement, la manière appropriée de mettre à jour le paramètre proxy consiste à utiliser l'API INTERNETSETOPTION. "


1 commentaires

Il semble nécessiter un certain nombre de p / invoquer. Je vais essayer et voir comment ça se passe. Merci.



-2
votes

Vous avez juste besoin de modifier la valeur: xxx

voir Ce lien .


0 commentaires

2
votes

Je réponds parce que je ne suis pas autorisé à commenter les réponses. Je tiens à signaler une différence entre la manipulation de Registry VS à l'aide d'InternetSetOptionAPI. Si vous ragez directement du registre pour modifier les paramètres de proxy, les navigateurs comme Chrome dépend de la configuration du proxy Wininet ne permettent pas de collecter immédiatement les nouveaux paramètres, mais si vous modifiez à l'aide d'InternetSetOptionAPI, les nouveaux paramètres seront utilisés immédiatement. C'est mon expérience. Je ne suis pas allé dans les détails pour savoir ce qui peut être fait pour ramasser les paramètres après la manipulation du registre.

Edit: Afin de rafraîchir les paramètres de proxy Wininet, vous pouvez effectuer un simple identifiant d'API d'interneSetoption comme suit xxx

source: Définir par programme paramètres de proxy de navigateur dans C #


2 commentaires

C'est plus facile et en fait plus simple de modifier les paramètres de proxy via le registre Windows. Vous pouvez savoir comment je l'ai fait ici dans un programme que j'ai écrit qui modifie automatiquement les paramètres de proxy en fonction du réseau configuration. La chose essentielle à retenir d'invoquer le interneSetoption Méthode après avoir apporté les modifications requises pour notifier d'autres programmes de modification.


Vous avez raison Alex, je viens de vérifier votre code dans le lien ci-dessus, j'ai déjà fini de combiner les réponses de ce poste ainsi que celui que j'ai mentionné dans ma réponse pour obtenir le résultat souhaité. Merci.