/// <summary> /// Set the HTTP and/or HTTPS proxy server for current machine /// </summary> /// <param name="hostname"></param> /// <param name="port"></param> /// <param name="protocolType"></param> internal void SetProxy(string hostname, int port, ProxyProtocolType protocolType) { using (var reg = openInternetSettingsKey()) { if (reg == null) { return; } saveOriginalProxyConfiguration(reg); prepareRegistry(reg); string?existingContent = reg.GetValue(regProxyServer) as string; var existingSystemProxyValues = ProxyInfo.GetSystemProxyValues(existingContent); existingSystemProxyValues.RemoveAll(x => (protocolType & x.ProtocolType) != 0); if ((protocolType & ProxyProtocolType.Http) != 0) { existingSystemProxyValues.Add(new HttpSystemProxyValue(hostname, port, ProxyProtocolType.Http)); } if ((protocolType & ProxyProtocolType.Https) != 0) { existingSystemProxyValues.Add(new HttpSystemProxyValue(hostname, port, ProxyProtocolType.Https)); } reg.DeleteValue(regAutoConfigUrl, false); reg.SetValue(regProxyEnable, 1); reg.SetValue(regProxyServer, string.Join(";", existingSystemProxyValues.Select(x => x.ToString()).ToArray())); refresh(); } }
/// <summary> /// Remove the HTTP and/or HTTPS proxy setting from current machine /// </summary> internal void RemoveProxy(ProxyProtocolType protocolType, bool saveOriginalConfig = true) { var reg = Registry.CurrentUser.OpenSubKey(regKeyInternetSettings, true); if (reg != null) { if (saveOriginalConfig) { SaveOriginalProxyConfiguration(reg); } if (reg.GetValue(regProxyServer) != null) { string exisitingContent = reg.GetValue(regProxyServer) as string; var existingSystemProxyValues = ProxyInfo.GetSystemProxyValues(exisitingContent); existingSystemProxyValues.RemoveAll(x => (protocolType & x.ProtocolType) != 0); if (existingSystemProxyValues.Count != 0) { reg.SetValue(regProxyEnable, 1); reg.SetValue(regProxyServer, string.Join(";", existingSystemProxyValues.Select(x => x.ToString()).ToArray())); } else { reg.SetValue(regProxyEnable, 0); reg.SetValue(regProxyServer, string.Empty); } } Refresh(); } }
/// <summary> /// Set the HTTP and/or HTTPS proxy server for current machine /// </summary> /// <param name="hostname"></param> /// <param name="port"></param> /// <param name="protocolType"></param> public void SetProxy(string hostname, int port, ProxyProtocolType protocolType) { var reg = Registry.CurrentUser.OpenSubKey(regKeyInternetSettings, true); if (reg != null) { saveOriginalProxyConfiguration(reg); prepareRegistry(reg); string exisitingContent = reg.GetValue(regProxyServer) as string; var existingSystemProxyValues = ProxyInfo.GetSystemProxyValues(exisitingContent); existingSystemProxyValues.RemoveAll(x => (protocolType & x.ProtocolType) != 0); if ((protocolType & ProxyProtocolType.Http) != 0) { existingSystemProxyValues.Add(new HttpSystemProxyValue { HostName = hostname, ProtocolType = ProxyProtocolType.Http, Port = port }); } if ((protocolType & ProxyProtocolType.Https) != 0) { existingSystemProxyValues.Add(new HttpSystemProxyValue { HostName = hostname, ProtocolType = ProxyProtocolType.Https, Port = port }); } reg.DeleteValue(regAutoConfigUrl, false); reg.SetValue(regProxyEnable, 1); reg.SetValue(regProxyServer, string.Join(";", existingSystemProxyValues.Select(x => x.ToString()).ToArray())); refresh(); } }