这样做的最佳方式是什么? tmpnam()返回驱动器根目录中文件的路径,这需要Windows Vista的管理员权限,因此这不是一个选项。
答案 0 :(得分:6)
答案 1 :(得分:1)
Windows上的环境变量%TEMP%指向用户临时目录。
在托管C ++中,您可以调用Path :: GetTempFileName(),它将在用户临时目录中提供一个临时文件(可以使用Path :: GetTempPath()找到)。 GetTempFileName()基本上只使用GUID作为文件名为您提供%TEMP%路径中文件的路径。然后,您可以使用该路径创建文件并使用它执行所需的操作。您可以使用任何可以访问当前进程环境变量的语言执行类似的逻辑。
希望有所帮助,
马丁。
答案 2 :(得分:0)
您是否尝试过将环境变量TEMP和TMP设置为所有人都可写的目录? 要更改XP中的环境变量(不熟悉Vista),请转到系统属性,[高级]选项卡,[环境变量]按钮。
答案 3 :(得分:0)
也许您可以在kernel32.dll中使用Win32方法GetTempPath()。它由System.IO.Path.GetTempFileName()包装在.NET中。
在XP上,它返回C:\ Documents and Settings \ username \ Local Settings \ Temp \中的路径,因此您不需要管理员权限。
答案 4 :(得分:0)
如果您关心互操作性,tmpnam的手册页建议:
BUGS
Never use this function. Use mkstemp(3) instead.
SYNOPSIS
#include <stdlib.h>
int mkstemp(char *template);
DESCRIPTION
The mkstemp() function generates a unique temporary file name from template. The last six characters of template must be
XXXXXX and these are replaced with a string that makes the filename unique. The file is then created with mode read/write
但所有这些都表明您已准备好以TMP环境变量的内容为前缀的模板。