代码之家  ›  专栏  ›  技术社区  ›  lkessler

有没有理由不使用Windows注册表进行程序设置?

  •  4
  • lkessler  · 技术社区  · 16 年前

    对我来说,这是一件很简单的事情。我的程序设置进入Windows注册表。毕竟,这就是它的目的,不是吗?

    但是一些程序员在使用注册表时仍然犹豫不决。他们说,随着它的增长,你的电脑会变慢。或者他们说它被损坏了,导致你的电脑故障。

    因此,他们编写自己的配置文件,或者可能使用微软从几个操作系统前就开始贬值的ini文件。

    据我所知,在早期的Windows操作系统中发生的注册表问题大部分是在Windows XP中解决的。很多公司都在做注册表清理工作,这可能是为了掩盖“注册表膨胀”和“孤立条目”仍然很糟糕的谣言。

    所以我问,今天有没有什么理由不使用Windows注册表来存储我的程序配置设置?

    6 回复  |  直到 15 年前
        1
  •  9
  •   Valentin Rocher    16 年前
    • 如果用户不允许注册表访问,你就完蛋了。
    • 如果用户重新安装Windows,并且想要迁移他的设置,那么这比简单的文件要复杂得多。
    • 使用配置文件意味着你的应用是可移植的
    • 用户手动更改设置要简单得多
    • 当你想将你的应用程序移植到其他操作系统时,你要如何处理你的注册表设置?
        2
  •  3
  •   Alexander Gessler    16 年前

    Windows注册表膨胀。你真的想促成这场混乱吗?

    对我来说,快速安装、迁移和移动应用程序是提高工作效率的关键。如果我需要处理数百个可能的注册表项,我就不能。如果在我的用户文件夹中有一个简单的.ini或.cfg或.xml文件(如果是可移植的应用程序,甚至是应用程序目录),迁移就很容易。

    经常听到的参数pro注册表:易于编写和读取(假设您使用的是纯winapi)。真正地?我认为 RegXXX 函数系列相当冗长…函数调用和键入太多,只存储少量信息。所以你总是把注册表打包走……现在将这项工作与一个简单的文本配置文件进行比较,也许只是 key=value -喜欢。

        3
  •  2
  •   Priyank Bolia    16 年前

    这取决于,当您有需要由多个程序读取的小条目时,注册表是正常的,因为数据库有锁定问题,配置文件是基于应用程序的。

    当用户不允许注册表访问时,就会出现问题,市场上有很多软件,当任何人试图修改注册表时,都会弹出一个窗口,用户可以取消或允许用户访问。这些程序在反病毒程序中太常见了。

        4
  •  2
  •   Carl Smotricz    16 年前

    将您的设置放入注册表意味着,如果您的用户想将您的程序及其设置移动到另一台计算机,他就不能备份,同上。这些设置在一个神秘的隐形地方。我觉得这是对用户的一种敌对态度。

    我写过很多中小型的节目, 总是 用过 .ini 文件。一个精通技术的用户可以使用一个编辑器来编辑这个文件,他可以检查其中的设置,他可以通过电子邮件将其发送给技术支持人员,他可以做大量的事情,这些事情对于注册表条目来说是非常困难的。

    我的程序并不能使电脑慢下来。

        5
  •  2
  •   Jon Ward    16 年前

    我个人不喜欢任何类型的二进制配置。我更喜欢文本文件格式,它可以轻松地复制、编辑、区分和合并,并与历史一起置于变更控制之下。

    最后一个是不使用注册表的最大原因-我可以将配置文件粘贴到SVN(或类似的)中,并对文本文件提供完全支持,而不必将其视为blob。

        6
  •  0
  •   Dentoid    16 年前

    我不太赞成或反对使用注册表,但我想指出一些事情…这里的许多答案都表明注册表访问可能会受到某些用户的限制。我想配置文件也是这样。

    对于注册表,您需要向“当前用户”写入,以相当确定是否具有访问权限(在许多情况下,应该这样做)。如果您希望“保证”访问而无需询问问题,那么配置文件也应该放在基于用户的区域(例如appdata/local)。据我所知,将配置文件放在“全局”区域中与注册表中一样,可能会产生访问问题。