使用 WinAPI 的应用程序设置
Posted
技术标签:
【中文标题】使用 WinAPI 的应用程序设置【英文标题】:Application settings with WinAPI 【发布时间】:2010-06-19 16:46:03 【问题描述】:是否有任何标准方法可以在 WinAPI 中处理应用程序设置?我目前正在做的是这样的:
if(!ReadKey(some_setting))
WriteKey(some_setting, some_setting_setting_default_value)
当设置对话框初始化时。然后我将小部件状态设置为从注册表中读取的相应值。问题是,如果应用程序是第一次运行,则无法按照上述代码模式读取默认设置。还需要一个ReadKey()
才能将刚刚写入的默认设置读入我程序中的设置变量。这对我来说看起来有点笨拙。所以问题基本上是:
同样,这应该是纯 Win32,不允许 MFC。
为什么要做这个作业?这是关于是否有既定的做事惯例的问题,而不是要求为我做我的工作的问题。现在我最好从那里删除“大学项目”这个词。
【问题讨论】:
【参考方案1】:您可以避免将硬编码的默认值写入注册表,并将注册表留空,除非它包含非默认值:
string ReadRegistry(
const string& some_setting,
const string& some_setting_default_value
)
//try to read user-specified setting from registry
string rc;
if (ReadKey(some_setting, rc))
return rc;
//else return hard-coded default value, not from registry
return some_setting_default_value;
或者,您可以在安装程序时(在程序运行之前和尝试读取注册表之前)将所有默认值写入注册表。
在 Win32 中是否有任何标准方式来处理设置?
没有。
有没有办法在安装过程中设置默认应用程序设置
是的,安装程序可以写入注册表。
【讨论】:
所以我猜最常用的应用程序设置方法是在安装过程中写入默认值? @Semen Semenych - 我想这可能是一种常见的方式;并且两个小缺点是: a) 如果注册表中缺少值(例如,被最终用户删除),则健壮性较差(比使用硬编码的默认值); b) 不太容易知道注册表中的值(如果它是默认值)是由安装程序创建的,还是由最终用户明确选择/编写的。以上是关于使用 WinAPI 的应用程序设置的主要内容,如果未能解决你的问题,请参考以下文章