在程序中动态的配置ie代理,我用了如下方法:
public static void SetProxy()
{
//打开注册表

RegistryKey regKey = Registry.CurrentUser;
string SubKeyPath = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings";
//Microsoft\
RegistryKey optionKey = regKey.OpenSubKey(SubKeyPath,true);
//更改健值,设置代理,ProxyServer
optionKey.SetValue("ProxyEnable",1);
optionKey.SetValue("ProxyServer","127.1.0.22:80"); //激活代理设置
InternetSetOption(0,39,IntPtr.Zero,0);
InternetSetOption(0,37,IntPtr.Zero,0);
}这样仅能改变ie的局域网设置的代理选项,现在还要也能改变拨号的代理,不知怎么做,请高手指点.

解决方案 »

  1.   

    没有做过这个
    可以参考http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/internetdial.asp
    http://www.windowsdevcenter.com/pub/a/oreilly/windows/news/dialup_0600.htmlhttp://www.developerfusion.co.uk/forums/thread/94059/#94059http://webdesign.ittoolbox.com/groups/technical-functional/csharp-l/562475#
      

  2.   

    http://jonnyyu.cnblogs.com/archive/2004/02/14/1247.aspx
      

  3.   

    http://msdn.microsoft.com/workshop/networking/moniker/reference/functions/urlmksetsessionoption.asp<DllImport("urlmon.dll", CharSet:=CharSet.Ansi)> _
    Private Shared Function UrlMkSetSessionOption(ByVal dwOption As Integer, ByVal pBuffer As String, _
    ByVal dwBufferLength As Integer, ByVal dwReserved As Integer) As Integer
    End Function<DllImport("urlmon.dll", CharSet:=CharSet.Ansi)> _
    Private Shared Function UrlMkGetSessionOption(ByVal dwOption As Integer, ByVal pBuffer As StringBuilder, ByVal dwBufferLength As Integer, _
    ByRef pdwBufferLength As Integer, ByVal dwReserved As Integer) As Integer
    End Function
      

  4.   

    这个如何,有点象Fiddler:
    http://www.mentalis.org/soft/projects/proxy/
      

  5.   

    用InternetSetOption就可以实现,不用读注册表,代码太长了,发不了.internal static extern bool InternetSetOption(IntPtr hInternet,int dwOption, IntPtr lpBuffer, int dwBufferLength);
    大概是这样的
    1. 发送 INTERNET_OPTION_PER_CONNECTION_OPTION 到 InternetSetOption
    2. 发送 INTERNET_OPTION_SETTINGS_CHANGED 到 InternetSetOption
    3. 发送 INTERNET_OPTION_REFRESH 到 InternetSetOption在1中至少构造两个INTERNET_PER_CONN_OPTION[] options = new INTERNET_PER_CONN_OPTION[2];
    options[0] = new INTERNET_PER_CONN_OPTION();
    options[0].dwOption = Wininet.INTERNET_PER_CONN_FLAGS;
    options[0].Value.dwValue = Wininet.PROXY_TYPE_DIRECT | Wininet.PROXY_TYPE_PROXY; options[1] = new INTERNET_PER_CONN_OPTION();
    options[1].dwOption = Wininet.INTERNET_PER_CONN_PROXY_SERVER;
    options[1].Value.pszValue = Marshal.StringToHGlobalAnsi(proxySever);打字好累,自己先试试吧,不行留油箱.
      

  6.   

    Optione(找个工作太难了)  我给你留言了,邮箱[email protected]
      

  7.   

    源代码已发出,中文yahoo发送的,应该不会丢掉的,请查收.
      

  8.   

    Optione(找个工作太难了) 给的源码收到,先谢谢,但解决不了我的问题,实现效果和我的是一样的,都能改局域网的那个代理,但他的不改注册表,比我的好,谢谢先,另有100分送,这个问题继续
      

  9.   

    你要使 "高级"->"对所有协议使用相同的代理" 选中,只需options[0].Value.dwValue = Wininet.PROXY_TYPE_DIRECT | Wininet.PROXY_TYPE_PROXY | Wininet.PROXY_TYPE_AUTO_PROXY_URL;其中options[2]就不使用了,以前的也不用这个选项吧
      

  10.   

    有个源文件:http://jonnyyu.cnblogs.com/archive/2004/02/14/1247.aspx