首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是什么决定了Path.GetTempPath()的返回值?

是什么决定了Path.GetTempPath()的返回值?
EN

Stack Overflow用户
提问于 2010-03-02 17:38:01
回答 6查看 37.9K关注 0票数 76

目前,我使用Path.GetTempPath()来确定在哪里写入日志文件,但最近我遇到了一台用户机器,其中返回的路径与我预期的不一样。

通常,返回的路径是C:\Documents和Settings[userid]\Local \Temp,但在本例中是C:\Temp

这通常不是问题,但由于某些原因,用户无法写入C:\Temp

我双重检查了环境变量,用户环境变量按预期指向了C:\WINNT\Temp. C:\和Settings[userid]\Local \Temp,而系统环境变量指向了Settings[userid]

所以..。Path.GetTempPath()从哪里得到它的值?组织政策?登记处?

我在谷歌上搜索过,但没有结果。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-03-02 17:42:51

(使用Reflector) Path.GetTempPath()最终调用Win32函数GetTempPath (来自kernel32.dll)。此状态的MDSN文档:

GetTempPath函数按照以下顺序检查环境变量的存在,并使用找到的第一条路径:

  • 由TMP环境变量指定的路径。
  • 由TEMP环境变量指定的路径。
  • 由USERPROFILE环境变量指定的路径。
  • Windows目录。

请注意,它们还声明不检查路径是否实际存在或是否可以写入,因此您可能最终会尝试将日志文件写入不存在的路径,或者您无法访问的路径。

票数 66
EN

Stack Overflow用户

发布于 2013-07-17 02:08:33

免责声明:不是一个答案,而是重要的阅读!

非常重要的是要认识到,你需要清理你的临时文件,因为当你点击65536在一个单一的目录,框架将不会再创建,你的应用程序会爆炸!

它们会在几个月或几个月内累积起来,然后你会收到这样的信息:

代码语言:javascript
复制
System.IO.IOException: The file exists.

  at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
  at System.IO.__Error.WinIOError()
  at System.IO.Path.InternalGetTempFileName(Boolean checkHost)
  at System.IO.Path.GetTempFileName():

当您尝试构建以下内容时,TFS会给您提供以下内容:

代码语言:javascript
复制
TF215097: An error occurred while initializing a build for build 
definition XXXXX: The file exists. 

您需要做的就是浏览到Path.GetTempPath()文件夹并调用del tmp*

注意:如果您有一个创建临时文件的ASP.NET应用程序,那么它的临时目录可能与当前登录的用户不同。

如果有疑问(或恐慌),只需创建一个aspx页面,打印出所使用的位置:

代码语言:javascript
复制
 TempPath.aspx
 <%@ Page Language="C#"%>
 Temp path: <%= System.IO.Path.GetTempPath() %>

对于我来说,当我以NetworkService的身份运行时

代码语言:javascript
复制
 C:\Windows\TEMP\

当以AppPool (命名为www.example.com)的形式运行时,路径可能是:

代码语言:javascript
复制
 C:\Users\www.example.com\AppData\Local\Temp

PS。我认为这是可能发生的,即使你删除文件之后,因为文件名增加。

票数 17
EN

Stack Overflow用户

发布于 2018-04-09 09:26:39

如果您在MacOS上使用Mono Framework,那么Path.GetTempPath()返回的值就是环境变量TMPDIR的值。

运行echo $TMPDIR通常返回的值如下:

代码语言:javascript
复制
/var/folders/{2 character random-string}/{random-string}/T
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2365307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档