1

我正在尝试使用 C# 以编程方式将 Internet Explorer 的代理设置更改为启用/禁用。这可以在需要代理或不需要代理的网站之间切换。

我的代码:

string key = "Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings";

RegistryKey RegKey = Registry.CurrentUser.OpenSubKey(key, true);
RegKey.SetValue("ProxyEnable", 1);

我提到的用于更新注册表的大多数文章都表明这样做存在风险。

我想知道

  1. 执行上述代码有哪些风险

  2. 我可以采取任何缓解措施来应对风险。例如,为特定键进行注册表备份。

4

2 回答 2

1

注册表是一个由操作系统控制的环境,可能会受到意外更新的影响。我认为主要的风险是无法知道你的数据到底发生了什么(例如:如果 Windows 认为重置或覆盖你的值是个好主意,你就会失去一切)。

此外,就像有人在对另一个答案的评论中所说的那样,无效条目可能会导致数据丢失,尤其是当您的数据超过注册表允许的最大长度时。

如果您需要修改注册表,您可以测试该键是否存在并在覆盖之前跟踪原始值。当然,您需要确保更改密钥不会产生意想不到的效果。

于 2012-12-12T07:37:02.420 回答
1

更改注册表的风险仅仅是您可能会损坏系统。如果您真的想在客户机器上运行它:

  • 阅读您可以找到的有关您更改的注册表项的所有文档
  • 考虑到不同的windows版本和不同的产品版本可能会有不同的注册表项
  • 询问曾经改变过这些价值观的人
  • 确保您的应用程序将具有执行此操作的权限(例如:以管理员身份运行,这不应该用于常规使用。仅在安装程序中)。
  • 确保您可以卸载更改
于 2012-12-12T06:50:30.080 回答