如何获取当前用户的临时文件夹
目前我正在使用以下功能获取当前用户的临时文件夹路径:
string tempPath = System.IO.Path.GetTempPath();
在某些机器上,它给了我当前用户的临时文件夹路径,例如:
C: Documents and Settings administrator Local Settings Temp
在一些机器上,它给了我系统临时文件夹路径,如:
C: WINDOWS TEMP
MSDN文档也说上面的API返回当前系统的临时文件夹。
有没有其他可用的API可以给我当前用户的临时文件夹路径,如下所示:
C: Documents and Settings administrator Local Settings Temp
System.IO.Path.GetTempPath()
只是Kernel32中对GetTempPath(..)
的本地调用的包装。
看看http://msdn.microsoft.com/en-us/library/aa364992(VS.85).aspx
从该页复制:
GetTempPath函数按照以下顺序检查环境变量的存在性并使用找到的第一个路径:
我不完全清楚“Windows目录”是指windows下的临时目录还是windows目录本身。 在Windows目录中转储临时文件听起来像是一个不受欢迎的情况,但是谁知道。
因此,将该页面与您的文章结合起来,我猜想您的管理员用户的TMP,TEMP或USERPROFILE变量中的任何一个都指向了Windows路径,否则他们没有设置,并且正在对Windows临时路径进行回退。
我有同样的要求 - 我们希望将日志放置在环境中应存在的特定根目录中。
public static readonly string DefaultLogFilePath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
如果我想把它和一个子目录结合起来,我应该可以使用Path.Combine( ... )
。
GetFolderPath
方法对特殊文件夹选项有一个重载,它允许您控制是创建指定路径还是简单验证。
不要使用这个:
System.Environment.GetEnvironmentVariable("TEMP")
环境变量可以被覆盖,所以TEMP
变量不一定是目录。
正确的方法是在接受的答案中使用System.IO.Path.GetTempPath()
。