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

时间:2010-08-24 19:34:04

标签: windows mfc home-directory

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

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

我猜可以使用My Documents\NameOfMyApp\,但这似乎是侵扰性的。

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

3 个答案:

答案 0 :(得分:4)

我考虑使用AppData目录。您可以通过SHGetSpecialFolderLocation传递CSIDL_APPDATA来获取其位置; (或许多替代方案 - 几乎每个版本的Windows都为SHGetSpecialFolderLocationSHGetSpecialFolderPath或(通常)两者添加了新的替代品。

答案 1 :(得分:1)

看看以下win32电话:

您可能希望使用GetUserProfileDirectory并将您的数据放在带有appname的子目录中。

您肯定希望使用该功能,因为vista及更高版本上没有“ \ documents and settings ”文件夹,他们更改为“ \ user ”。

答案 2 :(得分:0)

作为一名优秀的申请公民,您应该使用: [drive]:\ Documents and Settings [username] \ Application Data [AppName]或 [drive]:\ Documents and Settings [username] \ Local Settings \ Application Data [AppName] (在Vista和Win7上,“文档和设置”被替换,最明显的是“用户”)

环境变量USERPROFILE将提供用户配置文件路径,您猜对了。 TEMP路径提供了用户个人临时目录的路径

如果临时文件不是特定于用户的,则可以使用C:\ temp

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

-Waldo

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