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

Chr*_*ris 11 c# uac application-settings special-folders windows-7

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

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

我使用错误的文件夹还是这些情况是异常值?在任何一种情况下,这种事情的最佳做法是什么?

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

System.Environment.SpecialFolder.ApplicationData
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 10

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

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