我需要在windows用户的主目录(c:\Documents and Settings\someusername\
或c:\users\someusername\
)内创建一个目录。该目录将永久存在,但仅包含临时文件。
如果我想成为一名优秀的公民,这个目录在用户个人资料中的最佳位置是什么?我应该注意,我的程序将由(可能)非管理员用户运行,只需要访问他们自己的个人资料,但他们必须有权创建该文件夹。
我猜可以使用My Documents\NameOfMyApp\
,但这似乎是侵扰性的。
这种类型的数据是否有更好的位置,以及访问它的特定MFC调用?
答案 0 :(得分:4)
我考虑使用AppData目录。您可以通过SHGetSpecialFolderLocation
传递CSIDL_APPDATA
来获取其位置; (或许多替代方案 - 几乎每个版本的Windows都为SHGetSpecialFolderLocation
,SHGetSpecialFolderPath
或(通常)两者添加了新的替代品。
答案 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。