2011-04-06 10 views
7

मैं अपने आप नेटवर्क से जुड़ा रहा हूँ के आधार पर मेरे प्रॉक्सी पता स्विच करने के लिए एक कार्यक्रम लिख रहा हूँ।LAN सेटिंग्स (प्रॉक्सी कॉन्फ़िगरेशन) बदलने के लिए प्रोग्राम के रूप में

मैं अब तक बात यह है कि मैं नीचे पर प्रकाश डाला है को छोड़कर काम करने के लिए सब कुछ मिल गया है।

LAN Settings Dialog

वहाँ स्वचालित कॉन्फ़िगरेशन स्क्रिप्ट और स्वचालित रूप से कोड में सेटिंग का पता लगाने को बदलने के लिए कोई तरीका है?

समाधान या तो पी/आह्वान रजिस्ट्री संपादन हो सकता है। मुझे बस कुछ काम करने की ज़रूरत है।

उत्तर

14

आप रजिस्ट्री का उपयोग करके प्रॉक्सी सेटिंग्स बदल सकते हैं। नीचे दिए गए लिंक देखें:
http://support.microsoft.com/kb/819961

कुंजी पथ: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings

मान:

"MigrateProxy"=dword:00000001 
"ProxyEnable"=dword:00000001 
"ProxyHttp1.1"=dword:00000000 
"ProxyServer"="http://ProxyServername:80" 
"ProxyOverride"="<local>" 

एक question in SuperUser.com स्वचालित रूप से अक्षम कर यानी प्रॉक्सी विन्यास में सेटिंग का पता लगाने के लिए कैसे के बारे में। अक्षम आईई प्रॉक्सी कॉन्फ़िगरेशन

एक टुकड़ा, Internet Explorer Automatic Configuration Script Definition via Registry से लिया में "अपने आप सेटिंग का पता लगाने"।

स्क्रिप्ट 1: यह Autoconf स्क्रिप्ट सक्षम बनाता है और परिभाषित करता है कि यह क्या है (आदान-प्रदान कर अपनी स्क्रिप्ट वाली http://xxxx)

Windows Registry Editor Version 5.00 

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings] 
"AutoConfigURL"="http://xxx.xxx.xxx.xxx.xxxx" 
"ProxyEnable"=dword:00000000 

स्क्रिप्ट 2: यह स्क्रिप्ट Autoconf स्क्रिप्ट अक्षम करता है और एक प्रॉक्सी सर्वर के लिए सक्षम बनाता अपवाद के साथ।

 
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"="" 
+0

'AutoConfigUrl' पर जानकारी के लिए धन्यवाद। वह एक चीज थी जिसे मैं ढूंढ रहा था। मैंने पाया कि अन्य चेक बॉक्स को अक्षम/सक्षम करने के लिए कैसे करें (* स्वचालित रूप से सेटिंग्स का पता लगाएं *) [एंड्रयू स्वान की सुपरयूसर डॉट कॉम से जुड़ी टिप्पणी] [http://superuser.com/questions/79703/disable-automatically -detect-सेटिंग-इन-यानी-प्रॉक्सी-विन्यास/79,718 # टिप्पणी-217,210)। यह मूल रूप से विकल्प को अक्षम करने के लिए 'HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet सेटिंग्स \ Connections | DefaultConnectionSettings' के नौवें बाइट से 8 घटाता है। –

7

मैंने इसके लिए सभी खोज की। लेकिन जैसा कि मुझे नहीं मिला, मैंने नीचे दिए गए कोड स्निपेट को लिखा था जो इस उद्देश्य के लिए काम करता है।

/// <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

http://support.microsoft.com/kb/819961 तुलना में बेहतर है, .REG फ़ाइल के माध्यम से, हम) उल्लेख करना चाहिए http://support.microsoft.com/kb/226473 "How to programmatically query and set proxy settings under Internet Explorer", InternetSetOption का उपयोग करें (।

http://blogs.msdn.com/b/ieinternals/archive/2013/10/11/web-proxy-configuration-and-ie11-changes.aspx के रूप में कहा: "रजिस्ट्री को सीधे" पोक "करने का प्रयास करने के बजाय, प्रॉक्सी सेटिंग को अपडेट करने का सही तरीका इंटरनेटसेटऑप एपीआई का उपयोग करना है।"

+0

ऐसा लगता है कि कुछ पी/आमंत्रण की आवश्यकता है। मैं इसे आज़माउंगा और देख सकता हूं कि यह कैसा चल रहा है। धन्यवाद। –

-1

तुम बस मूल्य को संशोधित की जरूरत है:

Registry Key : HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ 
DWORD AutoDetect = 0 or 1 

this link देखें।

0

मैं क्योंकि मैं जवाब पर टिप्पणी करने की अनुमति नहीं कर रहा हूँ का जवाब दे रहा हूँ। मैं InternetSetOptionAPI का उपयोग कर रजिस्ट्री बनाम रजिस्ट्री में हेरफेर करने के बीच एक अंतर इंगित करना चाहता हूं। यदि आप सीधे प्रॉक्सी सेटिंग्स को बदलने के लिए रजिस्ट्री को पोक करते हैं तो WinInet प्रॉक्सी कॉन्फ़िगरेशन पर निर्भर क्रोम जैसे ब्राउज़र तुरंत नई सेटिंग्स नहीं लेते हैं, लेकिन यदि आप InternetSetOptionAPI का उपयोग करके बदलते हैं तो नई सेटिंग्स तुरंत उपयोग की जाएंगी। यह मेरा अनुभव है।रजिस्ट्री में हेरफेर करने के बाद सेटिंग्स को पिकअप करने के लिए क्या किया जा सकता है, यह जानने के लिए मैं विवरण में नहीं गया था।

संपादित करें: आदेश WinInet प्रॉक्सी सेटिंग्स को ताज़ा करने के आप एक सरल InternetSetOption की PInvoke एपीआई के रूप में इस प्रकार है

internal class InternetSetOptionApi 
{ 
    [DllImport("wininet.dll")] 
    public static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int dwBufferLength); 
    public const int INTERNET_OPTION_SETTINGS_CHANGED = 39; 
    public const int INTERNET_OPTION_REFRESH = 37; 

    public static void RefreshWinInetProxySettings() 
    { 
     // These lines implement the Interface in the beginning of program 
     // They cause the OS to refresh the settings, causing IP to realy update 
     InternetSetOption(IntPtr.Zero, INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0); 
     InternetSetOption(IntPtr.Zero, INTERNET_OPTION_REFRESH, IntPtr.Zero, 0); 
    } 
} 

स्रोत कर सकते हैं: Programmatically Set Browser Proxy Settings in C#

+1

यह आसान है और वास्तव में * सरल * विंडोज रजिस्ट्री के माध्यम से प्रॉक्सी सेटिंग्स को बदलने के लिए। आप यह पता लगा सकते हैं कि मैंने यह कैसे किया [यहां मैंने जो प्रोग्राम लिखा था] (https://git.io/vKLsq) जो नेटवर्क कॉन्फ़िगरेशन के आधार पर स्वचालित रूप से प्रॉक्सी सेटिंग्स को बदलता है। ['InternetSetOption'] (http://www.pinvoke.net/default.aspx/wininet/internetsetoption.html) विधि [आवश्यक परिवर्तन करने के बाद] को आमंत्रित करने के लिए याद रखना आवश्यक बात है (https://git.io/vKLsV) परिवर्तन के अन्य कार्यक्रमों को सूचित करने के लिए। –

+0

आप ठीक हैं एलेक्स, मैंने अभी उपरोक्त लिंक में अपना कोड चेक किया है, वांछित परिणाम प्राप्त करने के लिए मैंने पहले ही इस पोस्ट के उत्तरों को जोड़कर जवाब दिया है। धन्यवाद। – Rajeesh

संबंधित मुद्दे