我应该在哪里为非漫游用户存储机器范围的应用程序设置?

Posted

技术标签:

【中文标题】我应该在哪里为非漫游用户存储机器范围的应用程序设置?【英文标题】:Where should I store machine-wide application settings for non-roaming users? 【发布时间】:2011-12-06 20:50:30 【问题描述】:

我有一个 WPF 应用程序,它必须为具有相同设置的一台机器 的所有用户运行。设置必须是读/写的。我之前一直在 CommonApplicationData 中存储用户配置设置,例如

var settingsFile = Path.Combine(Environment.GetFolderPath(
  Environment.SpecialFolder.CommonApplicationData),
    "[company]", "[product]", "settings.xml");

但是我今天早上读到CommonApplicationData 用于漫游配置文件,这意味着它们不是特定于机器的。据我所知,我们有以下应用程序数据选项 (source):

// Store application-specific data for the current roaming user.
// A roaming user works on more than one computer on a network.
// A roaming user's profile is kept on a server on the network and is loaded onto a system ' when the user logs on.
System.Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);


// Store in-common application-specific data that is used by all users.
System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);


// Store application-specific data that is used by the current, non-roaming user.
System.Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);

总而言之,选项是

单用户,漫游 所有用户,漫游 单用户,非漫游

我需要的是所有非漫游用户。我最初的想法是将其全部放入安装文件夹中,但这似乎有点老派?

想法?

【问题讨论】:

您从哪里得知CommonApplicationData 正在漫游?我觉得有点奇怪…… 我在 Bill Wagner 的《Effective C#》一书中读到了它。然而,这是我唯一能找到这个花絮的地方,所以这可能是瓦格纳的一个罕见错误,如果我对此有误,我很想知道。 来自MSDN 文档:“该目录用作所有用户使用的特定于应用程序的数据的公共存储库。” 也许我没有正确理解漫游,所以也许从简短的描述中可以看出这一点,但如果其中一个或多个用户是漫游用户怎么办? 在 Windows 的标准安装中没有默认文件夹,其中 所有 用户都具有写入权限。您必须自己创建一个。 【参考方案1】:

appdata 文件夹的Here is a good explanation 和其他与漫游用户相关的项目。

根据MSDN Documentation:

CommonApplicationData 是“用作所有用户使用的特定于应用程序数据的公共存储库的目录”

LocalApplicationData 是“用作当前非漫游用户使用的特定于应用程序数据的公共存储库的目录”。

【讨论】:

【参考方案2】:

我对此的偏好是Application Settings,它可以是应用程序范围内的,也可以是每个用户的,如您所愿。

【讨论】:

应用程序范围设置不能在运行时更改,因此它们仅适用于永不更改的值。它可能适用于 op,但可能不是基于他的具体问题。

以上是关于我应该在哪里为非漫游用户存储机器范围的应用程序设置?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 10 和 XBOX One UWP 应用之间使用漫游设置

在 UWP 中,我应该在哪里保存用户数据?

无服务器机器学习:应该在哪里存储他们的模型?

我应该在哪里存储应用程序特定的设置?

计算机系统漫游

我应该在 web 应用程序的 spring/spring-security 中将用户 ID 密钥存储在哪里?