首页 / 知识
关于Windows:用于存储用户可配置应用程序设置的注册表与INI文件
2023-04-11 22:33:00

Registry vs. INI file for storing user configurable application settings我是新来的Windows程序员,我不确定应该将用户可配置的应用程序设置存储在哪里。 我了解有必要为用户提供一种用户友好的方式来更改应用程序设置,例如"编辑" |"更改"。 设置形式或类似形式。 但是,在用户单击表单上的"应用"按钮之后,我应该将值存储在哪里? 将设置存储在Windows注册表中与将其存储在本地INI文件或配置文件或类似文件中的优缺点是什么? 配置文件的优点: 注册表的优点: 如果您只需要一种简单的方法来存储配置信息,我建议您使用INI或XML作为格式的配置文件。我建议仅在您想摆脱使用注册表的某些特定条件时才使用注册表。 杰夫·阿特伍德(Jeff Atwood)撰写了一篇很棒的文章,介绍了Windows的注册表,以及为什么最好改用.INI文件。
在与应用程序相同的目录中使用ini文件,可以通过应用程序对其进行备份。因此,在重新加载操作系统之后,您只需还原应用程序目录,即可按照所需的方式进行配置。 这里有一个类似的问题,涵盖了一些利弊。 我建议不要使用注册表,除非您的应用程序绝对需要它。据我了解,由于设置文件的灵活性,Microsoft试图阻止使用注册表。另外,我不建议使用.ini文件,而是建议使用.Net的某些内置功能来保存用户/应用程序设置。 根据GetPrivateProfileString的文档,您应该使用注册表来存储初始化信息。
但是,这样说来,如果您仍然想使用.ini文件,并使用标准配置文件API(
在注册表中使用INI文件还有另一个好处,我没有提到: 现有的答案涵盖了很多基础,但我想我还要提到另一点。 我使用注册表存储系统范围的设置。即,当两个或更多程序需要完全相同的设置时。换句话说,一个设置由多个程序共享。 在所有其他情况下,我都使用本地配置文件,该文件位于与可执行文件相同的路径中,或者位于配置文件目录中的下一级目录中。其他答案已经涵盖了原因(便携式,可以使用文本编辑器进行编辑等)。 为什么将系统范围的设置放入注册表?好吧,我发现,如果共享设置,但您使用本地配置文件,则最终会重复设置。这可能意味着您最终需要在多个位置更改设置。 例如,说程序A和程序B都指向同一个数据库。您可以为连接字符串设置"系统范围"的注册表设置。如果要指向其他数据库,则可以在一个位置更改连接字符串,这两个程序现在都可以在另一个数据库上运行。 注意-如果两个或多个程序不需要使用相同的值,则以这种方式使用注册表是没有意义的。例如,程序A和程序B都需要一个数据库连接字符串,该字符串可以相同,但不总是相同。例如,我希望程序B现在使用测试数据库,但是程序A应该继续使用生产数据库。 在上面的示例中,您可能有一些本地配置会覆盖系统范围的设置,但对于简单的任务而言,它可能会变得过于复杂。 正如Daniel所指出的,在注册表中存储配置数据使您可以选择使用管理模板。也就是说,您可以定义管理模板,在组策略中使用它,并在网络范围内管理应用程序的配置。根据应用程序的性质,这可能是一大福音。 我同意丹尼尔。如果是大型应用程序,我想我会在注册表中执行操作。如果它是一个小型应用程序,并且您希望它的各个方面可以由用户配置而不需要填写配置表,请快速获取一个INI文件。 我通常这样进行解析(如果.ini文件中的格式为option = value,每行1个,以#开头的注释):
编辑:对不起,我以为您指定了语言。上面的实现在C#中。 注册表针对快速访问和轻松更新进行了优化,这是完成某些特定于Windows的事情(例如与扩展关联)的唯一方法。而且,您可以忽略有关删除单个目录以卸载程序的争论-Windows Vista不允许您修改Program Files目录中的文件,因此您的配置仍然需要放在其他文件夹中。 Windows编程有一个通用指南-按照Microsoft期望的方式进行操作,您的生活会轻松很多。 就是说,我可以看到INI文件的吸引力,并且我不会怪任何人考虑它。
使用注册表的另一个缺点是,如果您在32位和64位应用程序的混合环境中工作,这会很痛苦,因为用于访问注册表的系统调用会随机(*)添加 (*当然不是随机的,但很容易迷路) ini或config文件的一个缺点是,如果用户可以选择安装程序的位置,则可以找到它们。 您的应用程序是随安装程序一起安装的,还是"提取并运行"的?在第一种情况下,请查看此处概述的利弊。但是对于提取和运行,我认为注册表是"不行的",因为人们希望能够简单地删除应用程序文件夹来摆脱程序。 |
最新内容
相关内容
pythonjson是什么文件格式
pythonjson是什么文件格式,培训,情况,数据,文件格式,结构,格式,逗号,包围,层次,外面,python的json是什么呢?是一种轻量级的数据交换格式。完python如何确定文件是否存在
python如何确定文件是否存在,检测,培训,名字,异常,文件,模块,文件夹,语句,操作,方法,python中的os模块os模块中的os.path.exists(path)可以检python如何设置路径
python如何设置路径,培训,工作,路径,模块,以上,更多,内容,改变python的默认路径为当前的工作路径通过os模块来进行python中路径的更改默认python怎么读文件最后几行
python怎么读文件最后几行,培训,代码,情况,异常,时间,位置,文件,指针,需求,开销,处理文件时,一个常见的需求就是读取文件的最后一行。那么这个python如何执行python文件
python如何执行python文件,代码,培训,文件,程序,命令,模式,事半功倍,后缀,文本,以上,用文本编辑器写Python程序,然后保存为后缀为.py的文件,就python怎么打开文件
python怎么打开文件,代码,系统,培训,信息,基础,环境,文件,源文件,目录,命令,一、使用python源文件的几种方法\运行python脚本:a.windows下打python怎么执行.py文件
python怎么执行.py文件,培训,位置,代码,文件,空格,路径,文件名,时候,右侧,单击,要运行一个已经编写好的.py文件,可以单击开始菜单,在“搜索程序python如何打开文件
python如何打开文件,培训,通用,文件,模式,对象,方式,字节,函数,操作,字符串,python中的文件对象:文件对象不仅可以用来访问普通的磁盘文件,而python判断文件是否存在
python判断文件是否存在,检测,培训,异常,名字,文件,模块,文件夹,语句,操作,方法,python在操作文件前,检查文件是否存在也是一个良好的编程习惯python怎么生成xml文件
python怎么生成xml文件,数据,培训,设计,标准,文件,标记,语言,实例,模块,宗旨,用python内置的xml.dom可以对xml文件进行解析处理。什么是xml?Xpython新手必看之文本文件的输入输
python新手必看之文本文件的输入输出,培训,标准,数据,文件,对象,输入输出,新手,模式,功能,内容,Python具有基本的文本文件读写功能。Python的python如何获取用户输入
python如何获取用户输入,培训,字符串,整数,类型,文本,文档,用户,小数点,位数,以上,python整数输入#!/usr/bin/python3usr_ip=input("Enteran