Как создать путь к временному файлу в Windows XP / Vista
-
01-07-2019 - |
Вопрос
Каков наилучший способ сделать это?tmpnam() возвращает путь к файлу в корневом каталоге диска, для которого требуются права администратора в Windows Vista, так что это не вариант.
Решение
Начало пути и Имя файла GetTempFileName должно сработать.
Другие советы
Переменная среды %TEMP% в Windows указывает на временный каталог пользователей.
В управляемом C ++ вы можете вызвать Path::GetTempFileName(), который предоставит вам временный файл во временном каталоге пользователей (который можно найти с помощью Path::GetTempPath() ).GetTempFileName() по сути, просто дает вам путь к файлу в %TEMP% path, используя GUID в качестве имени файла.Затем вы используете этот путь для создания файла и делаете с ним все, что хотите.Вы могли бы выполнить аналогичную логику на любом языке, который имеет доступ к переменным среды текущих процессов.
Надеюсь, это поможет,
Мартин.
Вы пробовали использовать переменные окружения TEMP и TMP, установленные в каталог, доступный для записи всем?Чтобы изменить переменные среды в XP (не знаком с Vista), вы переходите в Свойства системы, вкладку [Дополнительно], кнопку [Переменные среды].
Возможно, вы могли бы использовать метод Win32 GetTempPath() в kernel32.dll.Это завернуто в .NET с помощью System.IO.Path.GetTempFileName().
В XP это возвращает путь в C:\Documents и Настройки\имя пользователя\ Локальные настройки \ Темп\, поэтому вам не должны требоваться права администратора.
Если вы заботитесь о совместимости, справочная страница для tmpnam предлагает:
справочная страница tmpnam
BUGS
Never use this function. Use mkstemp(3) instead.
справочная страница mkstemp
SYNOPSIS
#include <stdlib.h>
int mkstemp(char *template);
DESCRIPTION
The mkstemp() function generates a unique temporary file name from template. The last six characters of template must be
XXXXXX and these are replaced with a string that makes the filename unique. The file is then created with mode read/write
но все это говорит о том, что вы подготовили свой шаблон с префиксом содержимого переменной окружения TMP.