我应该在哪里存储我的申请数据?

时间:2010-05-04 18:39:56

标签: .net wpf settings application-settings settings.settings

我有一个需要存储数据的应用程序。目前,我使用内置的应用程序设置来完成它,但它只给我两个选择:应用程序和用户范围。理想情况下,我想要一个“本地”范围,允许应用程序在另一个用户下运行,仍然可以找到它的数据,而不是为该用户重新创建它。应用程序范围可以执行此操作,但它是只读的。应用程序数据将由用户更改。如果只允许管理员对数据进行更改,则可以。

正如您可能猜到的,我有一个管理工具,允许用户更改数据和Windows服务运行器,它可以读取数据并对其执行某些操作。如果Windows服务运行器访问管理工具创建的数据,那将是很好的。

2 个答案:

答案 0 :(得分:7)

如果数据非常非常简单,并且您需要其他应用程序或用户可以读取(具有适当的权限),我可能会选择将其存储在XML文件中,甚至是文本文件中的纯文本文件。用户的Application Data文件夹,可通过Environment.GetFolderPath获取。保存的示例可能如下所示:

using System.IO;
using System.Xml.Linq;

string settingsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
if (!Directory.Exists(settingsDirectory))
    Directory.CreateDirectory(settingsDirectory);
string fileName = "tasks.xml";
string settingsPath = Path.Combine(settingsDirectory, fileName);
XDocument settingsDoc = new XDocument(
    new XElement("Tasks",
        new XElement("Task",
            new XElement("Name", "Make Breakfast"),
            new XElement("Location", @"C:\Program Files\MyApp\Plugins"),
            new XElement("FileName", "breakfast.dll"))));
// ... etc.
settingsDoc.Save(settingsPath);

就是这样 - 设置已保存!您可以使用XDocument.Load重新加载它们。

答案 1 :(得分:0)

听起来您想将其存储在数据库中,问题是本地问题还是网络问题。答案还取决于您存储的数据类型,应用程序的分发方式以及其他因素。

哦,顺便说一句,如果你指定你的平台(最好带有标签),我们可以帮助你更好 - silverlight,wpf,winforms,asp.net,console等。