目前我正在使用以下函数来获取当前用户的临时文件夹路径:
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 \
答案 0 :(得分:387)
System.IO.Path.GetTempPath()
只是Kernel32中GetTempPath(..)
本机调用的包装器。
查看http://msdn.microsoft.com/en-us/library/aa364992(VS.85).aspx
从该页面复制:
GetTempPath函数按以下顺序检查环境变量是否存在,并使用找到的第一个路径:
- TMP环境变量指定的路径。
- TEMP环境变量指定的路径。
- USERPROFILE环境变量指定的路径。
- Windows目录。
我不完全清楚“Windows目录”是指Windows下的临时目录还是Windows目录本身。将临时文件转储到Windows目录本身听起来像是一个不受欢迎的情况,但谁知道。
因此,将该页面与您的帖子结合起来我猜想管理员用户的TMP,TEMP或USERPROFILE变量中的任何一个都指向了Windows路径,否则它们没有被设置并且它正在回退到windows temp路径。
答案 1 :(得分:25)
不要使用它:
System.Environment.GetEnvironmentVariable("TEMP")
可以覆盖环境变量,因此TEMP
变量不一定是目录。
正确的方法是在接受的答案中使用System.IO.Path.GetTempPath()
。
答案 2 :(得分:20)
我有同样的要求 - 我们希望将日志放在应该存在于环境中的特定根目录中。
public static readonly string DefaultLogFilePath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
如果我想将它与子目录结合起来,我应该可以使用Path.Combine( ... )
。
GetFolderPath
方法对特殊文件夹选项有重载,允许您控制是创建指定路径还是仅验证指定路径。
答案 3 :(得分:-6)
试
Environment.GetEnvironmentVariable("temp");