3

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

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

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

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

4

3 回答 3

4

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

于 2010-08-24T19:46:18.527 回答
1

看看下面的 win32 调用:

您可能想要使用 GetUserProfileDirectory 并将您的数据放在带有您的应用程序名称的子目录中。

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

于 2010-08-24T19:44:12.487 回答
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)而不是硬编码路径。

-沃尔多

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

于 2010-08-24T19:49:01.437 回答