最近使用C# WebBrowser开发了一个客户端用来做图形展示,由于项目中引用了中央气象台天气信息的网页,出现了脚本加载不了的问题,费了九牛二虎之力才找出解决方法:添加信任站点。参考网上资料写了一个工具类,现把代码贴出来以供参考。
在IE 工具栏->Internet选项->安全->可信站点->站点 里做添加/删除操作实际上是在操作注册表HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap路径下Domains和Ranges两个节点,如果是普通url,如:http://flash.weather.com.cn,生成的节点如下:

如果是普通IP地址,如:http://10.120.1.1,生成的节点如下:

针对这两种信任站点的不同操作方式需要分别进行处理,代码如下:
using Microsoft.Win32;
/// <summary>
/// 添加/删除 信任站点
/// </summary>
public class OperateTrustSite {
//在注册表添加信任站点
public static void addTrustSite(string url)
{
RegistryKey currentUser = Registry.CurrentUser;//HKEY_CURRENT_USER
string[] parts = url.Split(new char[] { '/' });//将URL拆分,提取协议和url地址
string protocol = parts[0].Substring(0, parts[0].Length - 1);//采用的协议:http/https
///////////判断是普通URL还是IP,普通URL在Domains节点下操作,IP在Ranges节点下操作////////////////
if (isIP(parts[2]))
{
string domainsKeyLocation = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\\ZoneMap\\Ranges";
RegistryKey ranges = currentUser.OpenSubKey(domainsKeyLocation, true);
bool has = false;//标识IP是否已经添加
List<string> numbers = new List<string>();//用来存放Range编号
//循环所有的range节点,如果要添加的IP已经存在则不操作,否则添加
foreach (string u in ranges.GetSubKeyNames())
{
numbers.Add(u.Substring("Range".Length));//截取Range1后面的数字1
RegistryKey range = ranges.OpenSubKey(u, true);//以可写的权限打开子节点
//如果该IP地址已经存在
&

本文介绍了如何使用C#来操作注册表,以便在Internet Explorer的信任站点区域添加或删除网址。代码示例展示了针对普通URL和IP地址在`HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap`下的`Domains`和`Ranges`节点的操作。通过判断URL类型并执行相应操作,实现了对信任站点的管理。
最低0.47元/天 解锁文章
1889

被折叠的 条评论
为什么被折叠?



