Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Windows 7和Vista中存储应用程序数据的位置_C#_Windows 7_Uac_Application Settings_Special Folders - Fatal编程技术网

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

C# 在Windows 7和Vista中存储应用程序数据的位置,c#,windows-7,uac,application-settings,special-folders,C#,Windows 7,Uac,Application Settings,Special Folders,与大多数应用程序一样,我的应用程序需要存储数据。该应用程序以前仅在XP上使用,它将数据存储在程序文件中。现在,我们的客户正在迁移到Windows 7,我必须对其进行升级,以便将数据存储在新文件夹中。我选择了ApplicationData文件夹,因为我认为我完全不需要UAC就可以访问它 现在,在某些Windows 7计算机上,这是正常的,但在其他计算机上,对文件夹的访问失败,可能是因为权限,但当以管理员权限运行时,程序工作正常 我是否使用了错误的文件夹,或者这些案例是异常值?在这两种情况下,什么是

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

现在,在某些Windows 7计算机上,这是正常的,但在其他计算机上,对文件夹的访问失败,可能是因为权限,但当以管理员权限运行时,程序工作正常

我是否使用了错误的文件夹,或者这些案例是异常值?在这两种情况下,什么是这种事情的最佳实践

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

System.Environment.SpecialFolder.ApplicationData

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

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

David是正确的。 据我所知,如果你通过ClickOnce或Installer部署你的应用程序,也会有一些不同:前者比普通的安装程序允许一些权限子集。 我必须承认我不是这方面的专家


当然,程序文件是存储数据最糟糕的地方,即使是自XP以来。

我会像我一样要求UAC访问
CommonApplicationData
?这难道不意味着数据在同一台电脑上的所有用户之间共享吗?@Chris“这难道不意味着数据在同一台电脑上的所有用户之间共享吗?”是的,但您以前将其存储在机器范围内的
程序文件中。您是指程序文件,ProgramData NT6Ya上的公用appdata文件夹的名称!。。。我的脑袋坏了…谢谢安德斯!