像大多数人一样,我的应用程序需要存储数据。该应用程序以前仅在XP中存储数据时使用 Program Files
。既然我们的客户正在转向Windows 7,我必须升级它,以便将数据存储在新文件夹中。我选择了 ApplicationData
文件夹,因为我认为我将被允许访问,而根本不需要UAC。
现在在一些Windows 7机器上这很好,但是在其他机器上访问该文件夹失败,可能是因为权限,但是当使用Administrator privelidges运行时,程序运行正常。
我使用错误的文件夹还是这些情况是异常值?无论哪种情况,这种事情的最佳做法是什么?
我正在使用以下C# SpecialFolder
获取AppData文件夹位置。
System.Environment.SpecialFolder.ApplicationData
System.Environment.SpecialFolder.ApplicationData
是每用户和漫游。这听起来不像你想要的那样。您似乎想要机器范围的设置,因此应该使用 System.Environment.SpecialFolder.CommonApplicationData
。
因为 CommonApplicationData
在所有用户之间共享,默认访问控制是有限的。默认情况下,标准用户无法在此位置写入。建议的做法是创建一个子文件夹 CommonApplicationData
在安装时,并为其分配适当的许可访问控制设置。
System.Environment.SpecialFolder.ApplicationData
是每用户和漫游。这听起来不像你想要的那样。您似乎想要机器范围的设置,因此应该使用 System.Environment.SpecialFolder.CommonApplicationData
。
因为 CommonApplicationData
在所有用户之间共享,默认访问控制是有限的。默认情况下,标准用户无法在此位置写入。建议的做法是创建一个子文件夹 CommonApplicationData
在安装时,并为其分配适当的许可访问控制设置。
大卫是对的。
据我所知,如果您通过ClickOnce或Installer部署您的应用程序也存在一些差异:第一个允许一些权限子集而不是普通安装程序。
我必须承认我不是那方面的专家。
当然,Program Files就是 最差 即使从XP开始,也可以存储数据。