在Windows 7和Vista中存储应用程序数据的位置

像大多数人一样,我的应用程序需要存储数据。 该应用程序以前仅在XP上使用,它将数据存储在Program Files 。 既然我们的客户正在转向Windows 7,我必须升级它,以便将数据存储在新文件夹中。 我选择了ApplicationData文件夹,因为我认为在不需要UAC的情况下我将被允许访问。

现在在一些Windows 7机器上这很好,但是在其他机器上访问该文件夹失败,可能是因为权限,但是当使用Administrator privelidges运行时,程序运行正常。

我使用错误的文件夹还是这些情况是exception值? 无论哪种情况,这种事情的最佳做法是什么?

我使用以下C# SpecialFolder来获取AppData文件夹位置。

 System.Environment.SpecialFolder.ApplicationData 

System.Environment.SpecialFolder.ApplicationData是每用户和漫游。 这听起来不像你想要的那样。 您似乎需要机器范围的设置,因此应使用System.Environment.SpecialFolder.CommonApplicationData

由于CommonApplicationData在所有用户之间共享,因此默认访问控制受到限制。 默认情况下,标准用户无法在此位置写入。 建议的做法是在安装时创建CommonApplicationData的子文件夹,并为其分配适当的许可访问控制设置。

大卫是对的。 据我所知,如果您通过ClickOnce或Installer部署您的应用程序也存在一些差异:第一个允许一些权限子集而不是普通安装程序。 我必须承认我不是那方面的专家。

当然,即使从XP开始,Program Files也是存储数据的最差位置。