2014-11-12 3 views
3

Я хочу получить путь к папке temp (C:\Users\user\AppData\Local\Temp).GetEnvironmentVariable ("TEMP") без тильды (~)

GetEnvironmentVariable("TEMP") работает отлично, но я получаю путь с тильдой:

C:\Users\STANHE~1\AppData\Local\Temp\ 

.. и мне нужно путь без тильды:

C:\Users\StanHerrmann\AppData\Local\Temp\ 
+1

Почему вы считаете, что вам нужна длинная версия? Краткая форма совершенно верна. –

+0

Я использую библиотеку, которая нуждается в длинной версии. Это не очень хорошо работает с короткой версией – Stampy

ответ

4

Вы можете использовать Path.GetFullPath расширить его:

Если вы передадите короткое имя файла, оно будет расширено до длинного имени файла.

Но ... было бы лучше просто использовать Path.GetTempPath для этого, так что вы не должны полагаться на переменные окружения, чтобы быть правильным.

+0

Большое спасибо. Я буду использовать ваше предложение. :) – Stampy

+1

Два предложения правильные, даже если Path.GetTempPath сам полагается в конце на переменные среды, безопаснее использовать его, а не один вызов, чтобы получить переменную окружения TEMP. – AFract

+0

@ Рихард, ты прав. 'Path.GetTempPath' вызывает функцию WinAPI [' GetTempPath'] (http://msdn.microsoft.com/en-us/library/windows/desktop/aa364992.aspx), которая заканчивает чтение среды ('TMP' затем 'TEMP', а затем' USERPROFILE', а затем каталог Windows - последний меня беспокоит, теперь я знаю об этом поведении). –

Смежные вопросы