Path.GetTempPath()始终返回%USERPROFILE%

时间:2013-07-17 19:29:48

标签: c# .net special-folders

我编写了一个调用System.IO.Path.GetTempPath()函数的程序。我读过的所有文档(like this one)都说该函数应返回从此列表中找到的第一个路径:

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

我已将TMPTEMP环境变量定义为%USERPROFILE%\AppData\Local\Temp,但对GetTempPath()的调用始终返回我的%USERPROFILE%目录,而不是我为TMPTEMP定义的值。如何让函数返回我定义的临时目录?

2 个答案:

答案 0 :(得分:3)

这是一个环境设置。 http://msdn.microsoft.com/en-us/library/77zkk0b6.aspx

var tmp = Environment.GetEnvironmentVariable("tmp");

<强>更新 我去了命令提示符并做了

SET TMP=C:\Temp

然后我从命令提示符启动了visual studio。 现在我的环境已经更新,Visual Studio可以看到它。上面的代码(以及你的代码)对我有用。它显示了更新的环境设置。

所以我相信你必须杀掉资源管理器或注销才能让新的环境永久地被看到。

答案 1 :(得分:0)

启动Visual Studio后是否创建了TMP和TEMP变量?

尝试重新启动VS,或从Windows资源管理器运行该应用程序。甚至可能重启Windows。

创建流程时会将环境变量分配给流程,并且不会为该流程更改。此外,子进程从其父进程继承环境变量。因此,在创建变量之前启动的Visual Studio会话中运行应用程序意味着应用程序不会提供这些变量。因此需要重新启动。