Как создать путь к временному файлу в Windows XP / Vista - PullRequest
3 голосов
/ 18 сентября 2008

Каков наилучший способ сделать это? tmpnam () возвращает путь к файлу в корне диска, который требует прав администратора в Windows Vista, поэтому это не вариант.

Ответы [ 5 ]

6 голосов
/ 18 сентября 2008

GetTempPath и GetTempFileName должно работать.

1 голос
/ 18 сентября 2008

Переменная среды% TEMP% в Windows указывает на временный каталог пользователя.

В управляемом C ++ вы можете вызвать Path :: GetTempFileName (), который даст вам временный файл во временном каталоге пользователя (который можно найти с помощью Path :: GetTempPath ()). GetTempFileName () в основном просто дает вам путь к файлу в пути% TEMP%, используя GUID в качестве имени файла. Затем вы используете этот путь для создания файла и делаете с ним все, что хотите. Вы можете сделать подобную логику на любом языке, который имеет доступ к переменным среды текущих процессов.

Надеюсь, это поможет,

Martin.

0 голосов
/ 18 сентября 2008

Если вы заботитесь о совместимости, на странице man для tmpnam:

Страница man 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.

0 голосов
/ 18 сентября 2008

Возможно, вы могли бы использовать метод Win32 GetTempPath () в kernel32.dll. Это упаковано в .NET System.IO.Path.GetTempFileName ().

В XP возвращается путь в C: \ Documents and Settings \ имя пользователя \ Local Settings \ Temp \, поэтому вам не нужно требовать прав администратора.

0 голосов
/ 18 сентября 2008

Пробовали ли вы с переменными среды TEMP и TMP установить в каталог, доступный для записи всем? Чтобы изменить переменные среды в XP (не знакомы с Vista), перейдите в Свойства системы, вкладка [Дополнительно], кнопка [Переменные среды].

...