如何获取当前用户的临时文件夹
目前我正在使用以下function获取当前用户的临时文件夹path:
string tempPath = System.IO.Path.GetTempPath();
在一些机器上,它给了我当前用户的临时文件夹path,如:
C:\ Documents and Settings \ administrator \ Local Settings \ Temp \
在一些机器上,它给了我系统临时文件夹path,如:
C:\ WINDOWS \ TEMP
MSDN文档也说上面的API返回当前系统的临时文件夹。
是否有任何其他的API可以给我当前用户的临时文件夹path,如下所示:
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函数按照以下顺序检查是否存在环境variables,并使用find的第一个path:
- 由TMP环境variables指定的path。
- 由TEMP环境variables指定的path。
- USERPROFILE环境variables指定的path。
- Windows目录。
我不清楚“Windows目录”是指windows下的临时目录还是windows目录本身。 在Windows目录中倾销临时文件听起来像是一个不受欢迎的情况,但是谁知道。
所以把这个页面和你的文章结合起来,我猜测你的pipe理员用户的TMP,TEMP或者USERPROFILEvariables中的任何一个都指向了windowspath,否则他们没有被设置,并且正在回退到windows temppath。
我有这个相同的要求 – 我们要把日志放在环境中应该存在的特定的根目录下。
public static readonly string DefaultLogFilePath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
如果我想结合这个子目录,我应该能够使用Path.Combine( ... )
。
GetFolderPath
方法有一个特殊的文件夹选项的重载,它允许您控制是否创build或简单validation指定的path。
不要使用这个:
System.Environment.GetEnvironmentVariable("TEMP")
环境variables可以被覆盖,所以TEMP
variables不一定是目录。
正确的方法是在接受的答案中使用System.IO.Path.GetTempPath()
。
尝试
Environment.GetEnvironmentVariable("temp");