先说明下思路:
大家都知道浏览器internet设置中有个可以手动设置代理服务器的选项。
那么,怎么去利用这个选项来通过程序设置呢?
很简单,操作系统中几乎所有东西都与注册表有关,具体位置在:
HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings
大家可以自行查看下,再结合程序,您应该就秒懂了吧!
1、InternetUtil.java工具类
/**
* TODO 使用Internet代理服务器工具类
*/
public class InternetUtil
{
/** 获取系统配置句柄 */
private static final Properties prop = System.getProperties();
/** 注册表中Internet表项位置 */
private static final String Internet = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";
/** 初始化代理 from Internet Settings */
public static void initProxy(String ip)
{
/**
* 相关知识
*
ProxyEnable意思即是是否启用代理服务器,dword:00000001表示开启,dword:00000000表示失效
ProxyServer是代理服务器的地址和端口
ProxyOverride是指不使用代理服务器的IP段,或者域名段,可以用*代表任意长字符串
*/
try
{
// 注册表表项值
RegistryKey registryKey = Registry.openSubkey(Registry.HKEY_CURRENT_USER, Internet, RegistryKey.ACCESS_ALL);//RegistryKey.ACCESS_READ:该参数设置 操作注册表的权限
// 注册表表项键
RegistryValue registryValue = registryKey.getValue("ProxyEnable");
System.out.println(((RegDWordValue)registryValue).getData());
boolean proxyEnable = ((RegDWordValue) registryValue).getData() != 0; // 代理设置是否开启
// System.out.println("IE 是否启用了代理设置: " + proxyEnable);
if (proxyEnable == true) // 开启了Internet代理
{
registryValue = registryKey.getValue("ProxyServer");
String proxyServer = new String(registryValue.getByteData());
//ProxyUtil.initProxy(proxyServer); z
System.out.println("使用IE代理服务器.");
System.out.println(proxyServer);
registryValue.setByteData(ip.getBytes());
registryKey.setValue(registryValue);//重新设置代理
}
else
System.out.println("没有开启");
}
catch (Exception e)
{
System.out.println("ERROR:操作Windows注册表失败.");
e.printStackTrace();
}
}
}
2、test.java测试类
public class test {
public static void main(String arg[]) throws IOException, Exception{
InternetUtil.initProxy("211.162.39.98:80");//参数为代理服务器地址
Runtime.getRuntime().exec("C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE");//启动IE
Thread.sleep(500);
Runtime.getRuntime().exec("TASKKILL /F /IM iexplore.exe /T");//关闭IE
/*visit();*/
}
以上程序需要ICE_JNIRegistry.dll文件和registry.jar包
需要的请留言。