【问题标题】:How can I store settings accessible to multiple applications in .Net?如何在 .Net 中存储可供多个应用程序访问的设置?
【发布时间】:2015-01-10 15:16:58
【问题描述】:

我正在处理一个项目,该项目必须存储只能由单个应用程序访问的设置,以及必须由多个应用程序访问的设置(将在未来编写)。

我知道在 Java 中有 Preferences 类,它有 Preferences.systemRoot(),这是一个独立于系统注册表中任何应用程序节点存储的首选项节点(在 Windows 上,在 OSX 上我不知道)。我也知道.Net 设置存储在%appdata% 目录中,这很好。哪个适合我。

我需要知道的是 .Net 是否有与 Java Preferences.systemRoot() 等效的设置?

【问题讨论】:

  • 您在说什么 .NET 应用程序?此外,应避免使用注册表
  • 我不是在谈论在注册表中存储值,我是在谈论 Java 的 Preferences.systemRoot() 获得的功能,它允许存储所有程序都可以访问的值。这就是我想要的......嗯,我猜我并没有很好地表达它......
  • 你可以使用'Environment.System'值msdn.microsoft.com/en-us/library/…
  • @Broken_Window:这是我一段时间以来听到的最荒谬的建议。 %system% 是 NOT 应存储应用程序设置的位置。曾经。出于一大堆原因。
  • @Dan-o 实际上,这正是我想要做的,因为它似乎是完成我想要做的事情的最直接的方法。

标签: .net settings preferences


【解决方案1】:

没有内置功能。

不过,您有多种选择 - 没有特定的顺序。

  1. 将设置作为文件存储在 %AppData%

  2. 将设置存储在数据库中

  3. 将设置存储在注册表中(正如其他人所提到的,这不是一个好主意)。

  4. 将设置存储在“云”中。

选项 1 的示例是:

Dim settingsDirectory as String = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Dim fileName As String = "the name of the settings file.xml"
Dim settingsPath As String = String.Empty

settingsDirectory = Path.Combine(settingsDirectory, "Your Company Name here")
If Not Directory.Exists(settingsDirectory) Then
  Directory.Create(settingsDirectory)
End If
settingsPath = Path.Combine(settingsDirectory, fileName)
'  Read or write your settings file here.

有很多可行的选择。这绝不是一份详尽的清单。每个选项都有其优点和缺点,您需要针对您的特定用例进行尝试。

【讨论】:

  • 我们将值存储在数据库中,但是我们需要一个备用方案,因为我们的客户是偏执的小瞪羚,出于……原因离线运行他们的系统。至于您的选项列表,我确实喜欢 #1,这就是我要做的事情,但我需要知道如何从多个不同的应用程序访问该特定设置对象。
  • 谢谢。这并不完全是我的想法,我想利用 .Net Settings API(可能不是合适的白话)。
  • 只要您的设置文件符合 .NET 的配置文件理念,您就可以使用 ConfigurationManager msdn.microsoft.com/en-us/library/… 来处理它们。
  • 尽管老实说,创建​​一个通用设置类库并将对象反序列化为您喜欢的格式要容易得多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-06
  • 2011-07-05
  • 2021-07-26
  • 2016-09-13
  • 2015-03-01
  • 2019-12-09
  • 1970-01-01
相关资源
最近更新 更多