怎样在程序中设置“internet选项”中的“http代理设置”?

主  题:  怎样在程序中设置“internet选项”中的“http代理设置”?
作  者:  HarryPatton (天外飞仙)  
等  级:
信 誉 值:  100
所属论坛:  .NET技术 C#
问题点数:  100
回复次数:  12
发表时间:  2003-09-26 16:37:33

我需要在程序中自动设置或者关闭“internet选项”中的“http代理设置”,请问该怎么做?



回复人: changezhong(小刀) ( 二级(初级)) 信誉:100 2003-09-26 19:31:00 得分:0

gz
帮你up

回复人: saucer(思归) ( 五星(高级)) 信誉:325 2003-09-27 05:46:00 得分:0

change the registry, here is some C++ code:

Change Internet Proxy settings
http://www.codeproject.com/internet/changeproxy1.asp

Toggle Internet Proxy settings - an alternate approach
http://www.codeproject.com/internet/changeproxy2.asp

回复人: xamcsdn2(知了) ( 三级(初级)) 信誉:100 2003-09-27 09:02:00 得分:0

你可以在C#中调用系统的SHELL命令 cmd /k netsh -f tt.txt

tt.txt,假设是你的网络配置文件,由SHELL 命令 cmd /k netsh -c interface dump > tt.txt 生成

回复人: HarryPatton(天外飞仙) ( 一级(初级)) 信誉:100 2003-09-27 10:15:00 得分:0

有没有更加简单的方法啊??

to xamcsdn2(知了) :可否给一个tt.txt的例子啊:)

回复人: gujunyan(ivy) ( 一星(中级)) 信誉:99 2003-09-27 10:23:00 得分:0

System.Net.GlobalProxySelection.Select

回复人: HarryPatton(天外飞仙) ( 一级(初级)) 信誉:100 2003-09-27 10:41:00 得分:0

to gujunyan(ivy):这种方法不能更改internet选项的代理设置。因为我的http请求是从ie而不是.net的WebRequest发出的,所以这种方法不能满足我的要求啊。

回复人: xamcsdn2(知了) ( 三级(初级)) 信誉:100 2003-09-27 13:56:00 得分:0

tt.txt可以自己生成。

在CMD窗口下输入
netsh -c interface dump > c:\tt.txt

#========================
# 接口配置
#========================
pushd interface

reset all


popd
# 接口配置结束



# ---------------------------------- 
# 接口 IP 配置         
# ---------------------------------- 
pushd interface ip


# "本地连接" 的接口 IP  配置

set address name = "本地连接" source = static addr = 202.168.0.224 mask = 255.255.255.0
set address name = "本地连接" gateway = 192.168.0.1 gwmetric = 1
set dns name = "本地连接" source = static addr = 202.135.0.1
set wins name = "本地连接" source = static addr = none


popd
# 接口 IP 配置结束

回复人: HarryPatton(天外飞仙) ( 一级(初级)) 信誉:100 2003-09-27 16:12:00 得分:0

to xamcsdn2(知了):
无法得到代理服务的信息

回复人: xamcsdn2(知了) ( 三级(初级)) 信誉:100 2003-09-28 09:27:00 得分:0

不好意思,我弄错了,我再看看。

回复人: yehanyu(幸福需要争取,努力中!) ( 四级(中级)) 信誉:100 2003-09-28 09:42:00 得分:0

up

回复人: HarryPatton(天外飞仙) ( 一级(初级)) 信誉:100 2003-09-28 10:40:00 得分:0

问题已解决,谢谢大家帮助:
以下是c#代码

//申明windows api
[DllImport(@"wininet",
    SetLastError=true,
    CharSet=CharSet.Auto,
    EntryPoint="InternetSetOption",
    CallingConvention=CallingConvention.StdCall)]
public static extern bool InternetSetOption
(
    int hInternet,
    int dmOption,
    IntPtr lpBuffer,
    int dwBufferLength
);

public static void SetProxy()
{
   //打开注册表
   RegistryKey regKey = Registry.CurrentUser;
   string SubKeyPath = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings";
   RegistryKey optionKey = regKey.OpenSubKey(SubKeyPath,true);
   //更改健值,设置代理,
   optionKey.SetValue("ProxyEnable",1);
   optionKey.SetValue("ProxyServer","192.168.1.85:80");

   //激活代理设置
   InternetSetOption(0,39,IntPtr.Zero,0);
   InternetSetOption(0,37,IntPtr.Zero,0);
}

回复人: HarryPatton(天外飞仙) ( 一级(初级)) 信誉:100 2003-09-28 10:42:00 得分:0

问题已解决,谢谢大家帮助:
以下是c#代码

//申明windows api
[DllImport(@"wininet",
    SetLastError=true,
    CharSet=CharSet.Auto,
    EntryPoint="InternetSetOption",
    CallingConvention=CallingConvention.StdCall)]
public static extern bool InternetSetOption
(
    int hInternet,
    int dmOption,
    IntPtr lpBuffer,
    int dwBufferLength
);

public static void SetProxy()
{
   //打开注册表
   RegistryKey regKey = Registry.CurrentUser;
   string SubKeyPath = @"Software\Microsoft\Windows\CurrentVersion\Internet Settings";
   RegistryKey optionKey = regKey.OpenSubKey(SubKeyPath,true);
   //更改健值,设置代理,
   optionKey.SetValue("ProxyEnable",1);
   optionKey.SetValue("ProxyServer","192.168.1.85:80");

   //激活代理设置
   InternetSetOption(0,39,IntPtr.Zero,0);
   InternetSetOption(0,37,IntPtr.Zero,0);
}
Contributors: FHL