我正在尝试以编程方式在 Internet Explorer 中配置一些选项,例如:
- 允许 ActiveX 过滤
- 允许脚本
- ETC..
它们都存储在注册表中,因此我可以轻松地对其进行编辑。
public void EditKey(String keyPath, String keyName, Int32 newValue)
{
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(keyPath, true))
{
if (key != null)
key.SetValue(keyName, newValue, RegistryValueKind.DWord);
}
}
这是我的问题:
我需要在 Internet Explorer 的工具 -> 兼容性视图设置中添加一个网站。
经过一番研究,我看到这个网站列表存储在:
HKEY_CURRENT_USER \ Software \ Microsoft \ Internet Explorer \ BrowserEmulation \ ClearableListData \ UserFilter.
问题是这个密钥是一个二进制密钥,所以它有点难,首先解码那里的内容并编辑它
我看到每个存储的网站之间都有一个分隔符:
您清楚地看到网站:123.com 和 456.com 在列表中。我需要在该列表中添加一个网站,但这里有一个事实,即分隔符似乎是随机更改的。
我用我想要的网站构建了一个预定义的分隔符,所以它看起来像这样:
private void ReadBinaryKey()
{
byte[] newWebsite = new byte []
{
0x0C,0x00,0x00,0x00,0xA8,0x82,0x8F,0x0D,
0xC1,0x57,0xCE,0x01,0x01,0x00,0x00,0x00,
0x08,0x00,0x32,0x00,0x30,0x00,0x32,0x00,
0x30,0x00,0x2E,0x00,0x6E,0x00,0x65,0x00,
0x74,0x00
};
using (RegistryKey key = Registry.CurrentUser.OpenSubKey(PATH_CVS, true))
{
if (key != null)
{
var value = (byte[])key.GetValue("UserFilter");
// need to set my value here key.SetValue("UserFilter", newWebSite)
}
}
}
我没有尝试过,因为我已经知道它根本不起作用。问题是随机分隔符。还有其他方法可以满足我的需求吗?任何帮助将不胜感激。
谢谢。