首页 > 编程知识 正文

微软sdl模型的中文全称为软件,ini文件怎么安装

时间:2023-05-05 21:17:09 阅读:18608 作者:3759

0 .注册表和ini的优劣之处ini文件的最大好处是无污染

注册表最大的好处是保密!

总之,(1)注册表以二进制格式注册数据,INI文件以简单的文本格式注册数据。

)注册表支持子密钥,每个类的子密钥都有自己的“键值”; INI文件支持设置节和节的行参数。

)3)注册可以包含子密钥,但INI文件不支持嵌套节。

) Registry击键还可以包含可执行代码,但在INI文件中设置条目是一个简单的字符串。

)5)同一台计算机上有多个用户,Registry可以保存每个用户的特性,但不能保存在INI文件中。

在功能上,注册表与. INI文件相比,主要具有以下三个特征:

)1)注册表可以跟踪硬件、某些操作系统参数、APP应用程序和设备驱动程序的配置。 这将使某些配置更改(如“控制面板”选项)立即生效,而无需重新启动系统。

)2)注册表中注册的部分硬件数据可用于支持Windows98即插即用特性。 Windows98检测到计算机上的各种设备后,将相关数据保存到注册表中。 通常在安装时进行此测试,但在Windows98启动或原始配置发生更改时也进行测试。 安装新硬件时,Windows98会检查注册表以确定正在使用哪些资源。 这样可以避免新设备和旧设备之间的资源冲突。

(3)通过注册表,管理员和用户可以在网络上检查系统的配置和设置,实现远程管理。

注册表优势软件占用内存:

注册表并不是一次全部加载到内存中,有些注册表仅在使用时才加载到内存中。

机密性:

据微软推荐,使用注册表还不错。 因为可以加上他的安全策略来保护注册表,所以也保证了你程序相关数据的机密性。 使用ini文件必须自己决定加密算法

注册表主要是为了解决ini文件难以支持三维表的问题,并允许多个系统共享数据。

写入注册表劣势注册表的数据过多不会消耗内存,但会降低WINDOWS的速度!

注册表写得太多,垃圾太多,数据庞大的话搜索速度就会变慢!

注册表容易留下垃圾,越大越大。 -卸载程序时,无法完全卸载,留下痕迹

如果ini文件的优势不涉及复杂的多用户,我个人认为使用ini比较好。

卸载软件时不留痕迹

容易阅读,容易复制

1. QT帮助文档概述QSettings类提供了持久的跨平台APP应用程序设置。

通常,用户希望APP应用程序记住该设置(窗口大小、位置等)的所有会话。 这些信息通常存储在Windows系统注册表、操作系统x和iOS属性列表文件中。 在Unix系统上,如果没有标准,许多APP应用程序(包括kde APP应用程序)都会使用INI文本文件。

QSettings围绕这些抽象技术,使APP应用程序设置能够便携式地存储和恢复。 它还支持自定义存储格式。

QSettings API基于QVariant,可以存储许多基本类型,包括QString、QRect和QImage。

如果需要不持久性的内存结构,请考虑改用QMapQString、QVariant

2. QSettings类型的操作注册表和ini文件QSettings是读取qt提供的配置文件的类,在windows平台上读取、读取和写入ini文件

要使用3http://www.Sina.com/:3360 format区分http://www.Sina.com/:3360 format,请使用两种: QSettings:3360本机格式- -可以在windows平台上读写windows注册表. http://www.Sina.com/:3360 ini格式--ini格式的配置文件

在Unix/X11平台上,这两种格式的效果相同。

【备注】:在windows平台上,QSettings默认值访问注册表。 示例:

//main.CPPqapplicationapp(argc,argv ); app.setapplicationname(appname ); app.setorganizationname('Organ ); //写入-最终,注册表 HKEY _ current _ usersoftwareorganappnamelanguage中的{ QSettings settings; settings.Begingroup('Language ); if(strlocal.isempty () ) settings.remov

e(QLatin1String("currentLanguage")); elsesettings.setValue(QLatin1String("currentLanguage"), strLocal); settings.endGroup(); }// 读取 - 从注册表 HKEY_CURRENT_USERSoftwareOrganAppNameLanguage 中读取{ QSettings settings; settings.beginGroup(QLatin1String("Language")); QString str_lan = settings.value(QLatin1String("currentLanguage")).toString(); settingsTranslation.endGroup();}

 

3. 用法

当创建一个QSettings对象时,必须通过指定公司或组织名称以及产品名称,例如:公司名称为:MySoft,产品名为:Star Runner,那么可以用下列方式来构造QSettings对象:

QSettings settings("MySoft", "Star Runner");

QSettings对象既可以创建在栈上,也可以创建在堆(即使用new)上,构建和销毁也非常快。

如果你的应用程序在很多地方使用QSettings,则可以使用QCoreApplication::setOrganizationName() 和 QCoreApplication::setApplicationName()来指定组织名和应用名,然后使用默认的QSettings构造函数:

QCoreApplication::setOrganizationName("MySoft");QCoreApplication::setOrganizationDomain("mysoft.com");QCoreApplication::setApplicationName("Star Runner");...QSettings settings;

QSettings可以存储一系列设置。每个设置包括指定设置名称(键)的一个字符串和一个与该键关联的QVariant存储数据。使用setValue()可以实现一个设置。例如:

settings.setValue("酷酷的枫叶/wrapMargin", 68);

如果存在相同的设置键,现有的值将被新值覆盖。为了提高效率,这些变化可能不会被立即保存到永久存储(可以随时调用sync()来提交更改)。

可以使用value()得到一个设置的值:

int margin = settings.value("酷酷的枫叶/wrapMargin").toInt();

如果没有指定键对应的设置,QSettings将会返回一个空QVariant(可转换为整数0)。这时,我们可以通过另一个参数来指定默认值:

int margin = settings.value("酷酷的枫叶/wrapMargin", 80).toInt();

void QSettings::beginGroup(const QString & prefix)

为当前组附加前缀。

当前组会自动追加到指定QSettings所有键。此外,查询功能,如childGroups()、childKeys()、allKeys() 也是基于组的。默认情况下,不存在组设置。

组是有用的,以避免输入同样的设置路径。例如:

settings.beginGroup("mainwindow");settings.setValue("size", win->size());settings.setValue("fullScreen", win->isFullScreen());settings.endGroup();settings.beginGroup("outputpanel");settings.setValue("visible", panel->isVisible());settings.endGroup();

这将生成三个设置值:

mainwindow/sizemainwindow/fullScreenoutputpanel/visible4.重点说明

设置中的键可以包含任何Unicode字符。Windows注册表和INI文件使用对键不区分大小写,而在OS X和iOS的CFPreferences API使用区分大小写。为了避免可移植性问题,需要遵循这些简单的规则:

在相同情况下使用相同的键。例如:代码中的一个位置使用”text fonts”,不要在别的地方使用”Text Fonts”。避免键名相同除了这种情况,例如:有一个名为”MainWindow”的键,不要试图用”mainwindow”保存另一个键。不要使用斜线(’/’和’’)作为键名,反斜杠字符用于分隔子键(见下文)。在Windows中,’’被QSettings转换为’/’,这使得它们相同。

可以使用’ / ‘字符作为分隔符形成分层键,类似于Unix文件路径。例如:

settings.setValue("mainwindow/size", win->size());settings.setValue("mainwindow/fullScreen", win->isFullScreen());settings.setValue("outputpanel/visible", panel->isVisible()); 5. 同时从多个线程或进程访问QSettings

QSettings是可重入的,意味着可以同时在不同的线程中使用不同的QSettings对象,这保证QSettings对象操作同一磁盘上的文件(或在系统注册表中的相同条目)。如果通过QSettings对象修改了一个设置,那么对于操作在同一位置和存在相同的进程的其他QSettings对象来说,更改会立即可见。

QSettings可以由不同的进程(其可以是应用程序同时运行的不同实例或完全不同的应用程序)安全地使用-在相同的系统位置上进行读写,它使用劝告式文件锁和智能合并算法以确保数据的完整性,需要注意的是sync()由其他进程所做的更改。

 

访问INI和.plist文件

有时候,想在一个特定的文件或注册表路径中访问存储设置。在所有平台上,如果想直接读取INI文件,可以使QSettings构造函数的第一个参数为文件名,第二个参数为QSettings::IniFormat。例如:

QSettings settings("/home/petra/misc/myapp.ini", QSettings::IniFormat);

然后,就可以对文件进行读写设置。
在OS X和iOS中,可以通过指定第二个参数为QSettings::NativeFormat访问属性列表的.plist文件。例如:

QSettings settings("/Users/petra/misc/myapp.plist", QSettings::NativeFormat);

访问Windows注册表

在Windows中,QSettings可以在系统注册表访问由QSettings写入的设置(或设置支持的格式,如字符串数据)。通过使用一个注册表路径和QSettings::NativeFormat来构建一个QSettings对象。例如:

QSettings settings("HKEY_CURRENT_USER\Software\Microsoft\Office", QSettings::NativeFormat);

所有出现在指定的路径下的注册表条目,可以通过QSettings对象像往常一样进行读写(使用斜杠而不是反斜杠)。例如:

settings.setValue("11.0/Outlook/Security/DontTrustInstalledFiles", 0);

注意,反斜线字符,如前所述,使用QSettings分割为子项。这样一来,不能读写包含斜线或反斜线Windows注册表项,如果需要的话,应该使用Windows API。

访问Windows上常见的注册表设置

在Windows上,有可能存在一个键既有值又存在子键。其默认值是通过使用”Default”或”.” 来代替子键。

settings.setValue("HKEY_CURRENT_USER\MySoft\Star Runner\Galaxy", "Milkyway");settings.setValue("HKEY_CURRENT_USER\MySoft\Star Runner\Galaxy\Sun", "OurStar");settings.value("HKEY_CURRENT_USER\MySoft\Star Runner\Galaxy\Default"); // returns "Milkyway"

 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。