这样做的最好方法是什么? tmpnam()返回到驱动器根目录中的文件的path,这需要Windows Vista上的pipe理员权限,所以这不是一个选项。
GetTempPath和GetTempFileName应该可以工作。
Windows上的环境变量%TEMP%指向用户的临时目录。
在托管的C ++中,您可以调用Path :: GetTempFileName(),它将在用户临时目录(可以使用Path :: GetTempPath())找到临时文件。 GetTempFileName()基本上只是给你一个路径,使用GUID作为文件名在%TEMP%路径中的文件。 然后,您可以使用该路径创建该文件,然后使用该文件进行操作。 你可以用任何可以访问当前进程环境变量的语言来做类似的逻辑。
希望有所帮助,
马丁。
你是否已经尝试将环境变量TEMP和TMP设置为可由所有人写入的目录? 要在XP中更改环境变量(不熟悉Vista),请转至系统属性,[高级]选项卡,[环境变量]按钮。
也许你可以在kernel32.dll中使用Win32方法GetTempPath()。 这是由System.IO.Path.GetTempFileName().NET包装的。
在XP上,这将在C:\ Documents and Settings \用户名\ Local Settings \ Temp \中返回一个路径,所以您不应该要求管理员权限。
如果您关心互操作性,那么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环境变量的内容为前缀的模板。