Я создаю небольшую библиотеку в C, только для Windows, чтобы помочь мне, когда я хочу создать приложение. Я столкнулся с проблемой создания временных файлов. Я посмотрел на документации функции GetTempPath, и я увидел, что он использует первые существующие переменные среды в следующем порядке:Является ли каталог Windows местом для временных файлов - функция GetTempPath
- Пути, заданный переменной в
TMP
среды. - Путь, заданный переменной окружения
TEMP
. - Путь, заданный переменной окружения
USERPROFILE
. - Каталог Windows.
Вопрос: если по какой-то причине первые три переменные не существуют и функция возвращает каталог Windows C:\Windows\
, является ли это папка местом для размещения временных файлов?
Если это не так, почему функция возвращает его?
EDIT: то где я должен помещать временные файлы?
Я не хочу бросать Access Denied Error
или Temp Path Not Found Error
Если вы работаете в системе, у которой нет этих переменных окружения, вы работаете в неизвестной среде. Лучшее, что вы можете сделать, это прекратить процесс. Если вы попытаетесь получить доступ к '% SystemRoot% \ Temp' из учетной записи пользователя, не входящей в систему, она все равно потерпит неудачу, и ничего не будет получено. Вы могли бы также выручить как можно раньше. Итак, почему «GetTempPath» возвращает бесполезное местоположение в первую очередь? Совместимость с предыдущими версиями Windows. – IInspectable
@Inspectable Im, использующий 'Windows 8.1', также случилось со мной, что функция возвращает каталог Windows, когда я запускаю свою программу с помощью Cygwin Terminal. Я проверил функцию «GetEnvironmentStrings», все эти переменные не были определены, хотя я установил эту переменную вручную в терминале. поэтому я спросил, что мне делать – Ameen
Решение прост: не запускайте приложение с терминала Cygwin. Кроме того, рассмотрите вопрос об отправке отчета об ошибке в команде Cygwin. Мое предложение прекратить ваш процесс, если вы запустите внутри неожиданной среды, остается в силе. – IInspectable