代码之家  ›  专栏  ›  技术社区  ›  Ian manuel aldana

我应该使用注册表还是平面文件来保存程序的状态?

  •  3
  • Ian manuel aldana  · 技术社区  · 16 年前

    我们有很多产品正在注册中保存它们的“状态”。

    保存计划状态的最佳实践是什么?将程序状态保存为注册表项或将程序状态保存为XML等平面文件有哪些优点/缺点?

    谢谢

    8 回复  |  直到 16 年前
        1
  •  3
  •   Frank    16 年前

    一个明显的问题是,将这些状态存储在一个普通文件中,使用户可以更轻松地手动备份/恢复状态。

        2
  •  2
  •   Diego Pereyra    16 年前

    还考虑注册表有一些对于系统中的每个用户都是特殊的密钥。

    我认为注册表是存储用户特定信息的最佳选择,这些信息可以轻易丢弃和恢复(例如,用于登录的最后一个用户名)。其他数据应保存在可备份的设置文件中。

        3
  •  0
  •   slugster Joey Cai    16 年前

    多年来,程序员将应用程序设置存储在配置文件中。然后时代变了,多年来他们一直使用注册表——很多人使用得很糟糕,当Vista及其UAC出现时,它引发了问题。

    如今,尤其是在美国。Net世界,Windows开发人员又开始将内容存储在配置文件中。我个人认为这是最好的方法,如果你需要将你的应用程序移动到另一台机器上,或者重新安装你的操作系统,你所要做的就是保存你的配置文件以保留你的设置。

    不过,您可能仍希望将一些内容存储在注册表中,例如(加密的)许可信息。其他方面,配置文件都很好。不过,一定要注意UAC和文件虚拟化,这样你就不会在未来遇到麻烦。

        4
  •  0
  •   p.marino    16 年前

    就我个人而言,我会选择平面文件。

    (我假设“注册表”是指windows注册表?)

    平面文件允许您(甚至用户)检查并最终手动修改这些值。 根据您的情况,修复mis等可能会对您的调试有所帮助。

    除非你想让数据“不透明”,因此“很难找到/操纵”,否则注册中心提供的好处很少。也许更快,但是如果你有很多状态需要保存,最好使用嵌入式数据库而不是平面文件。

        5
  •  0
  •   Mawg says reinstate Monica    16 年前

    我曾经遵循雷蒙德的教义。我的程序使用了。INI文件。然后我尽职尽责地切换到注册表,用户开始抱怨。所以,我逆势而上,又回到了过去。INI文件。

    有些人想编辑它们(好/坏?)。有些人想备份它们,或者转移到新机器上。有些人不想在重新安装windows时丢失它们。

    作为一个用户,我有多个分区。Windows/程序/数据/交换(以及其他一些)。没有节目继续 c:\program files ,它们都进入程序分区。没有我能控制的数据进入 c:\user data ,所有这些都会进入数据分区(使用tweakui power toy或regedit更改默认值(但并非所有程序都表现良好,并读取注册表中的路径,有些程序只是硬编码)。

    一句话——当Windows的内裤变成扇形时,我会进行一次全面的重新检查(大约每三个月一次),并格式化C:驱动器。

    通过格式化windows分区,我得到了一个干净的安装。我的数据和程序是安全的,尽管我可能需要重新安装一些程序,这就是为什么我尽可能使用便携式版本。

    在我看来,注册表是Windows上有史以来最大的罪恶——单点故障。

    我的建议?本地存储的配置文件。INI,如果不允许用户编辑、序列化或二进制格式。

    或者,你可以提供一个选择。。。

        6
  •  0
  •   MauriceL    16 年前

    我个人喜欢平面文件,无论是INI文件还是XML文件,对我来说都没有区别。然而,在我的工作中,由于与部署相关的问题,我们有客户更喜欢注册表。这取决于你的客户群是谁,以及让你的产品工作的人喜欢什么。

        7
  •  0
  •   Eric    16 年前

    我总是使用常规文件,因为它更容易开发=)

    简单io vs我不记得如何读/写注册表
    用于备份/开发的简单文件复制/粘贴与导出/导入密钥用于测试的多个配置版本

    请注意,所有这些优势还转化为部署策略和配置的通用客户端使用

        8
  •  0
  •   Michael Stum    16 年前

    这取决于部署的工作量有多大。我的大多数应用程序都是XCopy可部署的,也就是说,它们不需要安装程序,只需复制/解压缩即可。所以我用。ini文件(使用 my own INI File Parser 像net没有内置的)

    但是,如果您的应用程序需要集中管理(例如,使用Windows组策略),或者您有一个“繁重”的安装程序,则注册表是首选。这是因为通常安装到C:\Program文件的应用程序,以及普通用户没有对此目录的写入权限。当然,也有其他选择(%APPDATA%或当应用程序是Silverlight应用程序时必须使用的独立存储),但您也可以“顺其自然”。

    当然,如果你的应用程序应该在Mono上运行,你可以排除注册表,应该使用平面文件。

    推荐文章