目前,我正在使用如下功能來獲取當前用戶的臨時文件夾路徑: 函數
string tempPath = System.IO.Path.GetTempPath();
在某些計算機上,它爲我提供了當前用戶的臨時文件夾路徑,例如: spa
C:\\ Documents and Settings \\ administrator \\ Local Settings \\ Temp \\ 日誌
在某些計算機上,它爲我提供了系統臨時文件夾路徑,例如: code
C:\\ Windows \\ TEMP ci
MSDN文檔還說,上述API返回當前系統的臨時文件夾。 文檔
是否有其餘可用的API能夠給我當前用戶的臨時文件夾路徑,以下所示: get
C:\\ Documents and Settings \\ administrator \\ Local Settings \\ Temp \\ string
我也有一樣的要求-咱們想將日誌放在環境中應該存在的特定根目錄中。 io
public static readonly string DefaultLogFilePath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
若是要將其與子目錄結合使用,則應該可使用Path.Combine( ... )
。 變量
GetFolderPath
方法的特殊文件夾選項有一個重載,它使您能夠控制是建立指定的路徑仍是直接驗證指定的路徑。
嘗試
Environment.GetEnvironmentVariable("temp");
請勿使用此:
System.Environment.GetEnvironmentVariable("TEMP")
能夠覆蓋環境變量,所以TEMP
變量不必定是目錄。
正確的方法是按照接受的答案使用System.IO.Path.GetTempPath()
。
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臨時路徑。