О функции GetTempPath в Win32 API - PullRequest
1 голос
/ 28 апреля 2009

Почему GetTempPath всегда возвращает короткие пути? Есть ли способ вернуть длинное имя пути вместо последующего преобразования возвращенной строки с GetLongPathName ?

Ответы [ 3 ]

4 голосов
/ 28 апреля 2009

GetTempPath, скорее всего, возвращает значение переменных среды TMP или TEMP, которые (по крайней мере, в Windows XP) обычно определяются в терминах короткого имени пути.

При инициализации переменных среды Windows, по-видимому, преобразуется в короткий путь из ключа реестра HKEY_CURRENT_USER\Environment.

0 голосов
/ 28 апреля 2009

Я верю, что это сделано из соображений совместимости. В старых версиях Windows временный путь был относительно коротким. В последних Windows этот путь намного длиннее. Многие старые приложения могут использовать буфер фиксированной длины (небольшой длины) для извлечения временного пути. Если вы вернете длинное имя файла (которое сейчас относительно велико) - вы сломаете старые программы, потому что их буферы слишком малы, чтобы их вместить. Вот почему GetTempPath возвращает краткое имя пути.

0 голосов
/ 28 апреля 2009

Вместо того, чтобы использовать GetTempPath, почему бы просто не получить значение переменной среды TEMP? Это будет уже долгий путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...