如何决定在哪里存储每个用户的状态? 注册? 应用程序数据? 孤立的存储?

Windowsregistry何时应该用于每个用户的状态,我们什么时候应该使用文件系统,特别是用户的AppData文件夹? (例如,C:\ Users \ USERNAME \ AppData)。 隔离式存储在哪里?

是否有一个非常坚定的规则,还是只是一个模糊的东西,就像“使用registry,直到它成为太多的数据存储在registry中”。 或者“使用你想用的任何东西”。

是否有影响决定的Windows徽标要求?

如果我使用AppData目录,我该如何selectLocal,Roaming和LocalLow?

编辑:我只注意到这些类似的问题:

  • 何时以及为什么要将数据存储在registry中?
  • 用于存储用户可configuration的应用程序设置的registry与Ini文件 。

我将总结答复。

Solutions Collecting From Web of "如何决定在哪里存储每个用户的状态? 注册? 应用程序数据? 孤立的存储?"

如果你有少量的键/值对,而且值不大,那么注册表是很好的 – 而且你不关心xcopy部署 – 然后使用注册表(我知道这不是确切的,但通常是明显的当与注册表工作变得痛苦)。

如果你想要xcopy部署,数据必须和程序在同一个文件夹中,但是程序可以在AppData文件夹下的某个地方,而不必在“程序文件”下面。

只在需要时使用隔离存储或者必须使用隔离存储 – 例如ClickOnce。

否则使用AppData \ Roaming,只有在有充分理由的情况下才能使用Local或LocalLow。

编辑:这是漫游,本地和LocalLow之间的区别:

Windows有一个叫做“漫游配置文件”的鲜为人知的功能,总体思路是,在具有此功能的企业环境中,任何用户都可以使用任何计算机。

当用户登录时,他的私人设置从服务器下载,当他注销时,他的设置被上传回服务器(显然,实际过程比较复杂)。

Vista中用户的“漫游”文件夹中的文件或XP中的“应用程序数据”中的文件随用户移动 – 所以任何设置和数据都应存储在那里。

vista中的“Local”和“LocalLow”下的文件和XP中的“Local Settings”下的文件都没有,所以它是临时文件的好地方,与特定计算机或可重新计算的数据有关。

在Vista中,作为我们都知道并喜欢的新安全功能的一部分,您可以使程序以“低完整性模式”运行(例如IE处于保护模式),这些程序运行时权限减少,无法访问文件用户的配置文件 – “LocalLow”文件夹下的文件除外。

因此,总之,存储在“LocalLow”中的文件本质上是不安全的,“本地”/“本地设置”中的文件很可能在一些大公司中不可用 – 所以除非你有充分的理由并且确切地知道你在做什么, “漫游”/“应用程序数据”。

不要混乱我的注册表谢谢你。

使用独立的存储,这就是它的用途。

看到Windows注册表是个好主意吗? 在杰夫博客…

您可能需要考虑独立存储 。

我不知道是否有一个坚定的规则,但有一点需要考虑的是注册表是交易的 – 并发读/写操作比较安全。 因此,如果您的用户数据可能在运行时由多个线程写入(或者如果您的产品包中包含多个exe),请考虑使用注册表。

历史记录:(从我听说过)MS从.ini文件到注册表的一个原因正是为了处理并发访问问题。

.Net(有点)以xml .config文件的形式回到了.ini文件中,但是这些配置文件不应该在运行时写入(或者至少在并发的作者/读者有机会时) 。

更多信息: http : //blogs.msdn.com/oldnewthing/archive/2007/11/26/6523907.aspx