2010-08-24 232 views
3

我需要在windows用户的主目录(c:\Documents and Settings\someusername\c:\users\someusername\)内创建一个目录。该目录将永久存在,但只包含临时文件。正确使用Windows用户配置文件目录

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

使用My Documents\NameOfMyApp\是可能的我猜,但这似乎侵入。

这种类型的数据和特定的MFC调用是否有更好的位置访问它?

回答

4

我会考虑使用AppData目录。你可以通过SHGetSpecialFolderLocation获得它的位置CSIDL_APPDATA; (或许多替代方案 - 几乎所有版本的Windows都添加了SHGetSpecialFolderLocationSHGetSpecialFolderPath或(经常)两者的新替代品)。

+0

您还需要考虑这些数据是否应该“漫游”或是本地机器。 – 2010-08-24 20:08:06

+0

MSDN(http://msdn.microsoft.com/en-us/library/bb762494%28VS.85%29。aspx)似乎表明CSIDL值不应该用于新的开发,但是我必须早于Windows 2000支持客户端,直至Windows 7.“CSIDL_APPDATA”能否在Windows 7上运行? – theycallmemorty 2010-08-24 20:09:03

+0

@theycallmemorty:你可能会考虑'ShGetFolderLocation'而不是Win2K,尽管它仍然使用CSIDL。快速检查表明'SHGetSpecialFolderLocation(CSIDL_APPDATA)'似乎仍然适用于Win7。 – 2010-08-24 20:34:00

0

作为一个好的申请公民,您应该使用: [drive]:\ Documents and Settings [username] \ Application Data [AppName]或 [drive]:\ Documents and Settings [username] \ Local Settings \ Application数据[AppName] (在Vista和Win7上,“Documents and Settings”被替换为最合理的“Users”)

环境变量USERPROFILE将提供您猜到的用户配置文件路径。如果临时文件不是用户特定 临时路径提供了路径到用户的个人临时目录

,你可以使用C:\ TEMP

编辑:如果您是使用用户特定位置,我强烈建议您使用环境变量(XP和2000上的USERPATH),而不是对路径进行硬编码。

-Waldo

P.S.谢谢你问这个。我看到来自Waaaay的太多应用程序的不良行为。 C:驱动器的根本不在于你应该倾倒东西的地方!至少,(测试是否存在,如果有必要,创建)使用C:\ Temp。

+1

国际海事组织,这需要downvote边界。举例来说,在Vista或更新的版本中,通常不会有'[drive:\ Dcouments and Settings']。 USERPROFILEPATH是*更好的*,但仍然很不理想(因为使用可以编辑,删除等环境变量,所以太容易搞砸了)。 – 2010-08-24 20:54:29

+0

好的,这很公平。但是,在XP和更低(粗略猜测〜= 60%的企业桌面)时,它是适用的。 如果我有一个Vista或Win7机器,我会包括新的答案。 我将编辑我的评论,以推荐使用环境变量而不是硬编码路径。 – gWaldo 2010-08-24 21:05:55