Como criar um caminho para um arquivo temporário no Windows XP / Vista
-
01-07-2019 - |
Pergunta
O que é a melhor maneira de fazer isso? tmpnam () retorna um caminho para um arquivo na raiz da unidade, o que exige privilégios de administrador no Windows Vista, assim que esta não é uma opção.
Solução
GetTempPath e GetTempFileName deve funcionar.
Outras dicas
A variável de ambiente% TEMP% no Windows aponta para o diretório usuários temporário.
Em gerenciado C ++ você pode chamar Path :: GetTempFileName () que lhe dará um arquivo temporário no diretório de usuários temporário (que pode ser encontrado usando Path :: GetTempPath ()). GetTempFileName (), basicamente, apenas dá-lhe um caminho para um arquivo no caminho% TEMP% utilizando um GUID como o nome do arquivo. Você, então, usar esse caminho para criar o arquivo e fazer o que quiser com ele. Você poderia fazer lógica semelhante em qualquer linguagem que tem acesso às variáveis ??de ambiente processos atuais.
Espero que ajude,
Martin.
Você já tentou com as variáveis ??de ambiente TEMP e set TMP para um diretório writable por todos? Para variáveis ??de ambiente mudança no XP (que não estão familiarizados com o Vista), você vai para Propriedades do Sistema, [Avançado] guia, [variáveis ??de ambiente] botão.
Talvez você poderia usar o Win32 método GetTempPath () em kernel32.dll. Esta é envolto em .NET System.IO.Path.GetTempFileName ().
No XP Esta retorna um caminho em C:. \ Documents and Settings \ username \ Local Settings \ Temp \, para que você não deve exigir privilégios de administrador
Se você se preocupa com a interoperabilidade, a página man para tmpnam sugere:
tmpnam página man
BUGS
Never use this function. Use mkstemp(3) instead.
mkstemp página man
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
Mas todos esses sugerem que você preparou seu modelo prefixado pelo conteúdo da variável de ambiente TMP.