[Avertissement: ceci est un problème spécifique de Windows 7 pour autant que je peux dire]C++/WinInet Modification des paramètres proxy Windows 7
J'ai un bloc de code qui modifie les paramètres de proxy dans le Registre Windows, procède ensuite à appeler l'API WinInet ce qui suit:
InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
InternetSetOption(NULL, INTERNET_OPTION_REFRESH , NULL, 0);
Ceci est tout à fait bien dans XP et Vista, mais dans quelque chose de Windows 7 a apparemment changé, et pour une raison quelconque les clés de registre précédentes se réinjecté en le faisant ne pas fonctionner comme prévu. Si je commente ces deux lignes de code, les valeurs de registre s'en tiennent, mais évidemment IE et d'autres applications s'appuyant sur ces informations de proxy n'ont aucune idée que la configuration a changé.
Y a-t-il une meilleure façon de gérer la notification au système que les options ont changé et doivent être rechargées? J'ai cherché pendant des jours sur ce problème, les compilateurs commutés, etc., et rien de ce que je fais ne fonctionne comme je le ferais dans Windows 7.
Bingo-- piquer directement sur le registre n'est pas supporté. Un point: Vous devez définir l'option INTERNET_OPTION_PROXY_SETTINGS_CHANGED au lieu de INTERNET_OPTION_REFRESH pour un fonctionnement correct. Vous devez également OU PROXY_TYPE_DIRECT même si vous avez un serveur proxy fixe (par exemple, utilisez proxyType | = PROXY_TYPE_PROXY au lieu de ce que vous avez) - votre commentaire "désactive tout serveur proxy" est incorrect. Vous ne devriez probablement pas effacer aveuglément la liste de contournement comme ça ... – EricLaw
MSDN sur "Définition et récupération des options Internet": http://msdn.microsoft.com/en-us/library/windows/desktop/aa385384(v= vs.85) .aspx et quelques anciens KB: http://support.microsoft.com/kb/226473/fr –