2015-03-20 9 views
10

Я использую метод System.IO.Path.GetTempPath() для извлечения временной папки из переменных окружения. Тем не менее, я нахожу, что это всегда будет возвращать переменную TEMP или TMP для текущего пользователя, если она существует, иначе она вернет переменную System TEMP или TMP.В частности Получение пути TEMP системы в C#

Есть ли способ всегда получать переменную TEMP системы?

Я знаю несколько других вопросов о методе Path.GetTempPath(), где ответы ссылаются на документацию из MSDN о том, как этот метод решает, что возвращать. Я знаю о поведении этого метода из MSDN, и я спрашиваю, есть ли другой способ гарантировать, что я получаю временную папку системы.

ответ

21

Возможно, вы ищете метод Environment.GetEnvironmentVariable.

Это использование дает% TEMP% папка пользователя:

Environment.GetEnvironmentVariable("TEMP"); 

, такие как C: \ Users \ MyUserName \ AppData \ Local \ Temp

И это дает системы% TEMP% папка:

Environment.GetEnvironmentVariable("TEMP", EnvironmentVariableTarget.Machine); 

, такие как C: \ WINDOWS \ TEMP

+1

Я не дубликатор, но я подозреваю, что вы были заблокированы, потому что, пока вы пытались ответить на вопрос, вы не сказали **, как использовать 'Environment.GetEnvironmentVariable', то есть какие аргументы передать, и т. д. В частности, OP хотел знать, как «получить системную переменную TEMP», и вы не сказали *, как это сделать. Другими словами, ваш ответ лучше всего неполный. –

+1

@WaiHaLee, спасибо за ваши входы. Теперь я отредактировал свой ответ, чтобы передать параметры. Надеюсь, что это сделает ответ более полным. – sudheeshix

+0

Я наткнулся на это в своих исследованиях и, должно быть, пропустил целевой параметр. В результате я решил использовать общую папку данных приложений вместо системных temp, чтобы избежать возможных проблем с этими переменными среды. – Brian