Windows用户配置文件目录的正确使用方法

3

我需要在Windows用户的“主目录”(c:\Documents and Settings\someusername\c:\users\someusername\)中创建一个目录。这个目录将永久存在,但只包含临时文件。

如果我想做一个好公民,最好把这个目录放在用户配置文件的哪个位置?我应该注意到,我的程序将由(可能是)非管理员用户运行,只需要访问他们自己的配置文件夹,但他们必须有权限创建文件夹。

使用My Documents\NameOfMyApp\也许是可能的,但这似乎是有干扰性的。

是否有更好的位置来存储这种类型的数据,并且有特定的MFC调用可以访问它吗?

3个回答

4

您还需要考虑这些数据是应该“漫游”还是本地存储在机器上。 - Adrian McCarthy
MSDN(http://msdn.microsoft.com/en-us/library/bb762494%28VS.85%29.aspx)似乎表明CSIDL值不应用于新开发,但我必须支持从Windows 2000到Windows 7的客户端。 CSIDL_APPDATA在Windows 7上能用吗? - theycallmemorty
@theycallmemorty:你可以考虑使用ShGetFolderLocation(虽然它仍然使用CSIDL,但是在Win2K中是新的)。快速检查显示SHGetSpecialFolderLocation(CSIDL_APPDATA)在Win7上似乎仍然有效。 - Jerry Coffin

1

0
作为一个好的应用程序公民,您应该使用以下路径: [drive]:\Documents and Settings[username]\Application Data[AppName] 或者 [drive]:\Documents and Settings[username]\Local Settings\Application Data[AppName] (在Vista和Win7中,“Documents and Settings”被最明智地替换为“Users”)
环境变量USERPROFILE将提供用户配置文件路径。 TEMP路径提供了用户个人临时目录的路径。
如果临时文件不是特定于用户的,则可以使用C:\temp。
编辑:如果要使用特定于用户的位置,我强烈建议您使用环境变量(XP和2000上的USERPATH),而不是硬编码路径。
-Waldo
附言:谢谢您提出这个问题。我看到太多应用程序表现不佳。C:驱动器的根目录不是您应该倾倒东西的地方!至少,请(测试是否存在,必要时创建并)使用C:\Temp。

1
在我看来,这似乎需要一个踩下去的投票。例如,在Vista或更新版本中,通常不会有[drive:\Dcouments and Settings]。USERPROFILEPATH更好,但仍然远非理想(因为用户可以编辑、删除等环境变量,所以很容易出错)。 - Jerry Coffin
好的,这很公平。然而,在XP及更低版本的操作系统上(大约占企业桌面计算机的60%),它是适用的。如果我有一台Vista或Win7的机器,我会包含新的答案。我将编辑我的评论,建议使用环境变量而不是硬编码路径。 - gWaldo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接