如何获取当前用户的临时文件夹

目前我正在使用以下功能获取当前用户的临时文件夹路径:

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函数按照以下顺序检查环境变量的存在性并使用找到的第一个路径:

  • 由TMP环境变量指定的路径。
  • 由TEMP环境变量指定的路径。
  • 由USERPROFILE环境变量指定的路径。
  • Windows目录。
  • 我不完全清楚“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()

    链接地址: http://www.djcxy.com/p/54591.html

    上一篇: How to get temporary folder for current user

    下一篇: Travis CI Install perl module with non