在C#中存储应用程序设置

10

在C#中,存储应用程序设置(例如用户名和密码、数据库位置等)的最佳实践是什么?

提示:我是 .net 和 C# 的新手。

7个回答

12

应用程序广泛适用的应用程序配置设置(非用户特定)应放置在 app.config(桌面应用程序)或 web.config(Web 应用程序)中。

对于 web.config 文件中的某些部分进行加密非常简单,可以参考这个超级简单的示例

如果您需要存储用户特定设置(如应用程序设置等)或与应用程序配置无关的应用程序广泛设置,则可以使用设置文件,如此处所述:

C# 中的用户设置


它不是自动安全的,但是你可以在.NET中加密配置文件及其部分。请查看我的答案,我提供了一些相关链接。 - Adam Houldsworth
这些数据安全吗?我的意思是,我在使用 .NET Framework 2 的应用程序中遇到过应用程序设置丢失的情况... 一两次... - Hassan Faghihi

7
我不确定这个功能是在哪个版本的.net/Visual Studio中引入的,但您可以右键单击项目,选择“添加新项”,然后从“添加新项”窗口中选择“设置文件”。这将为您的项目提供一个(默认命名为)Settings.settings文件,您可以在其中配置要公开的所有设置。
您可以将创建的设置定义为“应用程序”或“用户”,这意味着您可以使用这个单一界面来控制全局和用户设置。在使用Visual Studio提供的编辑器在Settings.settings文件中创建了一个设置后,您可以像这样在代码中访问它:
// Get a Setting value
var valueOfSetting1 = Settings1.Default.Setting1;

// Modify and save a Setting value
Settings1.Default.Setting1 = "New Value";
Settings1.Default.Save();

2

第一种选择是使用注册表。这很容易,但对于密码来说并不太安全。另一个选择是使用您创建的文件。这也不安全,除非您想要实现加密。

下一个选项是使用应用程序设置。这也很简单,但有一些注意事项。首先,在项目上右键单击并转到“属性”。在那里,在“设置”选项卡下,您可以存储变量,您可以通过编程从中访问。

string password = Properties.Settings.Default.Password

如果作用域是用户级别,您可以以相同的方式更改它们。但是,如果作用域为应用程序级别,则由于某种奇怪的原因,VS不允许您更改这些变量。要保存更改,请按以下方式调用Save():

Properties.Settings.Default.Save();

这些文件保存在用户数据文件夹中,路径为C:\Documents and Settings\'当前用户'\Local Settings\Application Data\。

另一个选项是将它们包含在数据库中,但由于您还要存储数据库位置,因此这可能不适用于您。


2
现在开发新应用程序还使用注册表的理由已经很少了。 - David Neale

0

我认为应该使用 app.config(非 Web 应用程序)或 web.config(Web 应用程序)。


0

0

使用appsettings配置文件、ini文件(nini)、可嵌入的数据库(sqlite、berkeleydb等),任何你喜欢的方法,这取决于你的应用程序大小/性能考虑和设计。


0

如上面的回复所建议的那样,app.config或web.config是应用程序设置的最佳位置。 如果您需要更强大的XML样式标签来管理数据库、服务器设置等,您可以使用configurationSection并创建自定义部分。

http://www.codeproject.com/KB/cs/CustomConfigurationSectio.aspx

对于数据库密码,我的做法是在 XML 标签值中有一个加密字符串,然后在读取时解密,这样就不会暴露密码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接