目前,我正在使用以下功能来获取当前用户的临时文件夹路径:
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 \\
#1楼
我也有同样的要求-我们想将日志放在环境中应该存在的特定根目录中。
public static readonly string DefaultLogFilePath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
如果要将其与子目录结合使用,则应该可以使用Path.Combine( ... )
。
GetFolderPath
方法的特殊文件夹选项有一个重载,它使您可以控制是创建指定的路径还是直接验证指定的路径。
#2楼
尝试
Environment.GetEnvironmentVariable("temp");
#3楼
请勿使用此:
System.Environment.GetEnvironmentVariable("TEMP")
可以覆盖环境变量,因此TEMP
变量不一定是目录。
正确的方法是按照接受的答案使用System.IO.Path.GetTempPath()
。
#4楼
System.IO.Path.GetTempPath()
只是Kernel32中对GetTempPath(..)
的本机调用的包装。
看看http://msdn.microsoft.com/en-us/library/aa364992(VS.85).aspx
从该页面复制:
GetTempPath函数按以下顺序检查是否存在环境变量,并使用找到的第一个路径:
- 由TMP环境变量指定的路径。
- TEMP环境变量指定的路径。
- USERPROFILE环境变量指定的路径。
- Windows目录。
对我来说,“ Windows目录”是指Windows下的temp目录还是Windows目录本身,还不是很清楚。 在Windows目录中转储临时文件本身听起来像是不受欢迎的情况,但谁知道呢。
因此,将该页面与您的帖子结合在一起,我会猜出您的Administrator用户的TMP,TEMP或USERPROFILE变量之一指向Windows路径,否则未设置它们,并且回退到Windows临时路径。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3165197