11

像大多数应用程序一样,我的应用程序需要存储数据。该应用程序以前在 XP 上仅用于将数据存储在Program Files. 现在我们的客户正在迁移到 Windows 7,我必须对其进行升级,以便将数据存储在一个新文件夹中。我选择了该ApplicationData文件夹,因为我认为我完全不需要 UAC 就可以访问。

现在在某些 Windows 7 机器上这很好,但在其他机器上访问该文件夹失败,大概是因为权限,但是当以管理员权限运行时,程序运行正常。

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

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

System.Environment.SpecialFolder.ApplicationData
4

2 回答 2

10

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

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

于 2011-02-25T11:58:33.300 回答
2

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

当然,Program Files 是最糟糕的存储数据的地方,即使是 XP 之后也是如此。

于 2011-02-25T12:04:25.647 回答