2010-04-10 66 views
6

直到Windows Vista,我将我的应用程序数据保存到程序所在的目录中。最常见的地方是“C:\ Program Files \ MyApplication”。正如我们所知,在Vista及更高版本中,普通用户无权在“Program Files”文件夹下编写代码。 所以我的第一个想法是将应用程序数据保存在“所有用户\应用程序数据”文件夹下。但似乎这个文件夹也有写作限制!用于存储具有所有用户的读写权限的应用程序数据的最佳目录?

所以总结起来,我的要求是:

  • 的文件夹应该在Windows XP及以上存在。
  • 系统的所有用户应具有对此文件夹及其子文件夹和文件的读\写\创建权。
  • 我想只有一个所有用户的文件\文件的副本。

回答

2

通常使用环境变量是很好的,所以你可以保留更通用的东西。

Vista通过NTFS连接点改变了一些东西。见http://www.svrops.com/svrops/articles/jpoints.htm

总之,使用%APPDATA%应该会自动把文件在正确的位置上XP/Vista/7的

+1

%appdata%不是共享可写的公共区域,是吗? – RBarryYoung 2010-04-10 19:57:47

+0

我指的是Windows系统的每个用户。 – Wodzu 2010-04-10 21:02:06

1

没有这样的位置。即使在Windows XP上(也可能是2000),没有这样的位置存在;我们只是认为这是因为我们都以管理权限运行。直到Vista迫使我们以有限的用户运行,我们才意识到我们的错误假设。你将不得不明确地设置你的目录的权限。

+0

感谢卢克,我想我将在管理员帐户下的安装过程中设置权限。 – Wodzu 2010-04-11 10:18:26

+0

如果没有这样的位置,那么.NET的System.Windows.Forms.Application.CommonAppDataPath(通常解析为C:\ Documents and Settings \ All Users \ Application Data \ CompanyName \ ProductName \ VersionNum)是什么? – 2010-04-11 20:03:55

+1

“所有用户\应用程序数据”的默认权限不授予对有限用户帐户的完全访问权限。如果管理用户在那里创建文件,则受限用户将不具有对该文件的写入权限。看起来最初的问题是试图完成这个,所以修改DACL是必要的。 – Luke 2010-04-12 14:45:32

0

我会创建一个像所有用户\应用程序Data \ YourAppName \ Shared这样的子文件夹,这样很明显,该文件夹将包含所有用户可写入的文件,并在安装程序中设置权限。

相关问题