应用程序设置

     2023-02-25     79

关键词:

【中文标题】应用程序设置【英文标题】:Application Settings 【发布时间】:2010-09-17 12:47:10 【问题描述】:

什么是存储的相当标准的方法,主要用于 Windows,但也很容易转移到其他平台。

基本上我想要 4 组设置:

全局设置,影响所有用户,并且可以在机器之间移动 全局系统设置,影响所有用户,但特定于该系统(例如该系统的默认设置,例如图形选项) 用户设置,在系统之间移动的用户设置(例如音量) 用户系统设置,特定于该系统的用户设置(例如依赖于硬件的图形选项)

每个级别都会覆盖上一个级别,允许“全局设置”在很大程度上是应用程序的默认设置,用户设置存储用户选择的选项。 前两个基本上是没有用户设置的默认设置(例如对于新用户)。

我考虑过实现一组功能,然后我可以为不同的系统实现这些功能(可能是通过 ini 文件),但这是最好的方法吗?

(c++)

namespace config

    void Init(const std::string &AppName);
    //updates config for keys/sections that don't exist (ie don't overwrite changes by advanced users by rewriting the entire file)
    void Defaults          (std::map<std::string,std::map<std::string,std::string> > &Map);
    void SystemDefaults    (std::map<std::string,std::map<std::string,std::string> > &Map);

    void Set               (const std::string &Section, const std::string &Key, const std::string &Value);
    void SetSystem         (const std::string &Section, const std::string &Key, const std::string &Value);

    void SetUser           (const std::string &Section, const std::string &Key, const std::string &Value);
    void SetUserSystem     (const std::string &Section, const std::string &Key, const std::string &Value);

    std::string GetValue   (const std::string &Section, const std::string &Key);

我知道 windows 有一组用于此类设置的目录,但这些目录是否适合我的需要?

编辑:我宁愿使用文件(ini 或 xml),而不是使用 windows 注册表。但是,将这些配置文件放在每个操作系统下的最佳位置在哪里?

在 Vista 下我找到了这些,它们似乎适合我的群体,但是旧的 windows 版本(我需要支持 win2000、XP 等)呢,mac/linux 是否有自己的类似文件夹?

全局设置 - \Users\Default\Appdata\Roaming 全局系统设置 - \Users\Default\Appdata\Local 用户设置 - \Users\\AppData\Roaming 用户系统设置 - \Users\\AppData\Local

【问题讨论】:

【参考方案1】:

如果你是 boost 用户,你可以看看 program options 库,它支持使用配置文件以及环境变量和(当然)命令行选项。

它被设计成可移植的,因此可以减轻您跨平台的烦恼。

【讨论】:

【参考方案2】:

另见Where should cross-platform apps keep their data?

【讨论】:

【参考方案3】:

有(至少)三个合理的选择:

注册表:由于可移植性和相对不透明性,这是我最不喜欢的。

环境变量:我建议使用一个(仅一个)指向保存材料的位置 - “安装目录”或类似的。

文件:用户主目录(或其子目录)和项目/产品目录都适合存放东西。

您可能希望使用简单的关键字=值范例和基本规则,以便您的变量 - 设置 - 可以很容易地被一种以上的代码读取。例如,我通常对属性文件使用 Java 范例并使用匹配行为 C 代码,因此我的两个代码行都可以轻松读取设置。

【讨论】:

文件是我的首选方式,因为同样的东西可以在所有平台上工作,而且工作量很小。主要问题是文件应该在哪里,以及如何提供一个干净的界面(例如微软没有'似乎不希望应用程序使用应用程序自己的目录中的文件...id 对 %username%.ini 感到满意)。

为啥我的 iOS 应用程序强制设置设置包

】为啥我的iOS应用程序强制设置设置包【英文标题】:WhyismyiOSappforcingaSettingsBundle为什么我的iOS应用程序强制设置设置包【发布时间】:2015-03-2216:50:07【问题描述】:我不明白为什么当我调试我的应用程序时它总是有一个设置包... 查看详情

如何根据设置类自动组织应用程序设置和构建 GUI?

】如何根据设置类自动组织应用程序设置和构建GUI?【英文标题】:howtoorganizeapplicationsettingsandbuildGUIautomaticallybasedonsettingsclass?【发布时间】:2012-12-1218:41:08【问题描述】:我的c++应用程序一直在增长,现在我面临着十几个应用... 查看详情

当它设置为 ApplicationPoolIdentity 时,如何设置 IIS 应用程序池标识用户区域设置

】当它设置为ApplicationPoolIdentity时,如何设置IIS应用程序池标识用户区域设置【英文标题】:HowdoyousettheIISApplicationPoolIdentityUserLocalewhenit\'ssettoApplicationPoolIdentity【发布时间】:2015-05-2118:59:27【问题描述】:澄清标题。当您在IIS中... 查看详情

在设置应用中打开应用的通知设置

...通知并希望稍后再打开通知,我如何使用NSURL打开IOS设置应用程序到我的应用程序的通知页面,他们可以在其中选择允许通知?【问题讨论】:UIApplication.shared.openURL(URL(st 查看详情

应用程序设置保存在哪里?

】应用程序设置保存在哪里?【英文标题】:Whereareapplicationsettingssaved?【发布时间】:2013-06-1903:23:19【问题描述】:我正在尝试存储一些持久性应用程序数据,因此我通过R键单击它,选择属性,然后选择设置选项卡并手动输入... 查看详情

持久化应用程序设置 [重复]

】持久化应用程序设置[重复]【英文标题】:PersistingApplicationSettings[duplicate]【发布时间】:2013-05-0708:19:51【问题描述】:问题很简单:我使用C#.Net4.0开发了一个WinForms应用程序。我想实现一个表单,用户可以在其中设置应用程序... 查看详情

你如何在 Django 中为每个应用程序设置不同的设置?

】你如何在Django中为每个应用程序设置不同的设置?【英文标题】:HowdoyouhavedifferentsettingsperappinDjango?【发布时间】:2016-06-1821:57:19【问题描述】:如何在Django中为每个应用设置不同的设置?例如,我有2个应用程序:internal_apiext... 查看详情

使用 Django 为每个应用程序设置不同的设置

】使用Django为每个应用程序设置不同的设置【英文标题】:DifferentsettingsforeachapplicationwithDjango【发布时间】:2011-07-2114:01:47【问题描述】:如何为每个应用程序使用不同的设置?例如:http://www.mysite.com/app1使用app1文件夹的settings.... 查看详情

使用 Django 为每个应用程序设置不同的设置

】使用Django为每个应用程序设置不同的设置【英文标题】:DifferentsettingsforeachapplicationwithDjango【发布时间】:2011-07-2114:01:47【问题描述】:如何为每个应用程序使用不同的设置?例如:http://www.mysite.com/app1使用app1文件夹的settings.... 查看详情

如何在 iOS 8.0+ 中以编程方式打开设备设置应用程序而不是应用程序设置

】如何在iOS8.0+中以编程方式打开设备设置应用程序而不是应用程序设置【英文标题】:HowtoopendevicesettingsappnottheappsettingsprogrammaticallyiniOS8.0+【发布时间】:2015-09-2208:29:50【问题描述】:我正在开发一个应用程序,我需要在按钮客... 查看详情

设置linux设置开机自启动应用程序

参考技术A1.新建文件:2.新建文件:输入以下内容:3.加权限4.允许开机自启5.手动启动服务6.检查服务状态7.查看日志 查看详情

如何在 Android 默认设置中添加应用程序设置(首选项)?

】如何在Android默认设置中添加应用程序设置(首选项)?【英文标题】:HowtoaddAppSettings(Prefrences)inAndroiddefaultSettings?【发布时间】:2012-07-2610:58:24【问题描述】:我正在开发一个应用程序,我正在使用res/xml/settings.xml来满足我的... 查看详情

在 iOS 8 中打开设备设置而不是应用程序设置

】在iOS8中打开设备设置而不是应用程序设置【英文标题】:OpenDeviceSettingsiniOS8andnotappsettings【发布时间】:2015-08-0323:54:54【问题描述】:我的应用程序中有一个Facebook登录按钮,当设备上没有帐户时,我会显示一条警报,要求用... 查看详情

如何动态加载单独的应用程序设置文件并与当前设置合并?

】如何动态加载单独的应用程序设置文件并与当前设置合并?【英文标题】:HowtoloadaseparateApplicationSettingsfiledynamicallyandmergewithcurrentsettings?【发布时间】:2011-01-2406:16:27【问题描述】:存在与readingsettingsfromaseparateconfigfile和其他... 查看详情

如何动态加载单独的应用程序设置文件并与当前设置合并?

】如何动态加载单独的应用程序设置文件并与当前设置合并?【英文标题】:HowtoloadaseparateApplicationSettingsfiledynamicallyandmergewithcurrentsettings?【发布时间】:2011-01-2406:16:27【问题描述】:存在与readingsettingsfromaseparateconfigfile和其他... 查看详情

在应用程序中存储 iPhone 应用程序设置

】在应用程序中存储iPhone应用程序设置【英文标题】:StoringiPhoneapplicationsettingsinapp【发布时间】:2011-01-1418:12:28【问题描述】:我的iPhone应用几乎没有用户可能会经常更改的设置。我想知道是否有任何建议的方式来处理这些设... 查看详情

应用程序关闭时设置警报

】应用程序关闭时设置警报【英文标题】:Settingsalarmswhileappisclosed【发布时间】:2014-04-1720:58:14【问题描述】:如何在不强制用户打开应用的情况下设置本地通知。我需要我的应用程序为日出和日落设置本地通知,但我不想要求... 查看详情

在应用程序之间共享设置

】在应用程序之间共享设置【英文标题】:Sharingsettingsbetweenapplications【发布时间】:2011-03-2300:05:55【问题描述】:我有多个.NET程序集,它们都需要共享通用用户设置,例如首选项、用户名等。一个是WPF应用程序,另一个是控制... 查看详情