我的应用程序需要像大多数一样存储数据。该应用程序以前仅在XP上使用,它将数据存储在Program Files
中。既然我们的客户正在转向Windows 7,我必须升级它,以便将数据存储在新文件夹中。我选择了ApplicationData
文件夹,因为我认为我可以在不需要UAC的情况下访问该文件夹。
现在在某些Windows 7计算机上这很好,但在其他计算机上访问该文件夹失败,可能是因为权限,但是当使用Administrator privelidges运行时,程序运行正常。
我使用的是错误的文件夹还是这些案例的异常值?在任何一种情况下,这种事情的最佳做法是什么?
我使用以下C#SpecialFolder
来获取AppData文件夹位置。
System.Environment.SpecialFolder.ApplicationData
答案 0 :(得分:10)
System.Environment.SpecialFolder.ApplicationData
是每用户并漫游。这听起来不像你想要的。您似乎需要机器范围设置,因此应使用System.Environment.SpecialFolder.CommonApplicationData
。
由于CommonApplicationData
在所有用户之间共享,因此默认访问控制受到限制。默认情况下,标准用户无法在此位置写入。建议的做法是在安装时创建CommonApplicationData
的子文件夹,并为其分配适当的许可访问控制设置。
答案 1 :(得分:2)
当然,即使从XP开始,Program Files也是最差存储数据的地方。