我需要在Windows用户的主目录( c:\Documents and Settings\someusername\
或c:\users\someusername\
)中创build一个目录。 该目录将永久存在,但只包含临时文件。
如果我想成为一个好公民,这个目录在用户档案中的最佳位置是什么? 我应该注意到,我的程序将由(可能)非pipe理员用户运行,只需要访问他们自己的configuration文件,但他们必须有权限创build文件夹。
使用My Documents\NameOfMyApp\
是可能的,但我认为这似乎是侵入性的。
有这种types的数据,并有一个特定的MFC调用来访问它有一个更好的位置?
我会考虑使用AppData目录。 您可以通过SHGetSpecialFolderLocation
传递它的位置来获取它的位置CSIDL_APPDATA
; (或许多选择 – 几乎每个版本的Windows都添加了SHGetSpecialFolderLocation
, SHGetSpecialFolderPath
或(经常)两者的新替代品)。
看看下面的win32调用:
您可能想要使用GetUserProfileDirectory并将您的数据与您的应用程序名称放在一个子目录中。
你一定会想要使用这个功能,因为在vista中没有“ \ documents and settings ”文件夹,所以他们改成了“ \ user ”。
作为一个好的申请公民,您应该使用:[驱动器]:\ Documents and Settings [用户名] \ Application Data [AppName]或[Drive]:\ Documents and Settings [用户名] \ Local Settings \ Application Data [AppName](On Vista和Win7,“文档和设置”被替换,最明智的是与“用户”)
环境变量USERPROFILE将提供您猜到的用户配置文件路径。 TEMP路径提供用户个人临时目录的路径
如果临时文件不是用户特定的,则可以使用C:\ temp
编辑:如果您要使用用户特定的位置,我强烈建议您使用环境变量(XP和2000年的USERPATH),而不是硬编码的路径。
-Waldo
PS谢谢你问这个。 我从Waaaay看到太多的应用程序的不良行为。 C:盘的根目录不是你应该倾销的地方! 至少(测试是否存在,如有必要,创建)使用C:\ Temp。