Как создать путь к временному файлу в Windows XP / Vista

StackOverflow https://stackoverflow.com/questions/91007

Вопрос

Каков наилучший способ сделать это?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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top