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

7

我有一个WPF应用程序,必须在同一台机器上的所有用户中运行,并具有相同的设置。这些设置必须是可读写的。我先前一直将用户配置设置存储在CommonApplicationData中,例如:

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

然而,我今天早上读到CommonApplicationData是用于漫游配置文件的,这意味着它们不会与特定的计算机相关。从我找到的资料来看,我们有以下选项可供应用程序数据使用(来源):

// 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);

总结一下,选项如下:
  • 单个用户,漫游
  • 所有用户,漫游
  • 单个用户,非漫游
我需要的是所有用户,非漫游。我的初步想法是把所有东西都放到安装文件夹里,但这似乎有点老套了?
你有什么想法吗?

1
你在哪里看到CommonApplicationData是漫游的?我觉得有点奇怪... - Anders Abel
我在Bill Wagner的书《Effective C#》中读到了这个内容。然而,那是我能找到这个细节的唯一地方,所以也许这是Wagner犯的一个罕见错误,如果我错了,我会非常感兴趣听到反馈。 - Martin Doms
MSDN文档中得知:“这个目录作为一个通用的存储库,用于存储所有用户使用的应用程序特定数据。” - Paul Ruane
也许我没有正确理解漫游,所以也许从那个简短的描述中很明显,但是如果其中一个或多个用户是漫游用户呢? - Martin Doms
虽然这是一篇旧帖子,但我已经成功地使用了这个解决方案。 http://stackoverflow.com/questions/14752048/config-file-location-for-any-user-workstation-specific-config#14752549 - Rolfi
显示剩余2条评论
2个回答

4

0

我偏爱使用应用程序设置,它可以根据您的需求每个设置为应用程序范围或用户范围。


应用程序范围的设置无法在运行时更改,因此它们仅适用于从不更改的值。它可能对操作员起作用,但根据他特定的问题,可能不太合适。 - Tony Cheetham

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