【发布时间】:2011-03-23 05:38:36
【问题描述】:
在 C# 中存储应用程序设置(例如用户名和密码、数据库位置...)的最佳做法是什么?
提示:我是 .net 和 C# 的新手
【问题讨论】:
在 C# 中存储应用程序设置(例如用户名和密码、数据库位置...)的最佳做法是什么?
提示:我是 .net 和 C# 的新手
【问题讨论】:
应用程序范围的应用程序配置设置(非用户特定)属于 app.config(用于桌面应用程序)或 web.config(用于 Web 应用程序)。
如this Super Simple Example 所述,加密 web.config 文件的各个部分非常简单。
如果您需要存储用户特定设置(如应用程序设置等)或与应用程序配置无关的应用程序范围设置,您可以使用此处所述的设置文件:
【讨论】:
我不确定它是在哪个版本的 .net/Visual Studio 中引入的,但您可以右键单击您的项目,选择“添加新项目”并从“添加新项目”窗口中选择“设置文件” .这会为您的项目提供一个(默认命名的)Settings.settings 文件,您可以在该文件中配置您想要公开的所有设置。
您可以将您创建的设置定义为 Application 或 User,这意味着您可以使用这个单一界面来控制全局和用户设置。使用 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();
【讨论】:
第一个选项是注册表。这很容易,但密码不太安全。另一种选择是使用您创建的文件。这也不安全,除非你想实现加密。
下一个选项是使用应用程序设置。这也很简单,但有一些问题。首先,右键单击您的项目并转到属性。在那里,在“设置”选项卡下,您可以存储变量,您可以通过
从程序中访问这些变量string password = Properties.Settings.Default.Password
您也可以以相同的方式更改它们,但仅当范围设置为用户时。当范围是应用程序范围时,VS 不允许您出于某种奇怪的原因更改这些变量。要保存更改,您必须按如下方式调用 Save():
Properties.Settings.Default.Save();
这些保存在 C:\Documents and Settings\'Current User'\Local Settings\Application Data\ 下的 User Data 文件夹中
另一种选择是将它们包含在您的数据库中,但由于您还要存储数据库位置,因此这可能不适合您。
【讨论】:
我认为 app.config(非网络应用)或 web.config(网络应用)。
【讨论】:
这类设置通常位于应用程序配置文件(web.config、app.config)中。
http://www.devasp.net/net/articles/display/679.html
如果您要存储密码,您可能还需要加密相关配置部分。
http://msdn.microsoft.com/en-us/library/53tyfkaw.aspx
http://msdn.microsoft.com/en-us/library/ff650304.aspx
请注意,如果您使用 app.config,您会看到它被重命名为 ..config,具体取决于您的输出是生成 DLL 还是 EXE。
【讨论】:
正如上述回复所暗示的,app.config 或 web.config 是应用设置的最佳位置。 如果您需要更健壮的方式为数据库、服务器设置等设置 xml 样式标签,您可以使用 configurationSection 并创建自定义部分。
http://www.codeproject.com/KB/cs/CustomConfigurationSectio.aspx
对于数据库密码,我这样做的方式是在 xml 标记值中有一个加密字符串,然后在读取它们时解密,这样你就不会暴露密码。
【讨论】:
appsettings 配置文件、ini 文件(nini)、嵌入式数据库(sqlite、berkelydb/etc..),无论你喜欢什么方法,这取决于你的应用程序大小/性能考虑和设计。
【讨论】: