Cómo crear una ruta a un archivo temporal en Windows XP/Vista
-
01-07-2019 - |
Pregunta
Cual es la mejor manera de hacer esto?tmpnam() devuelve una ruta a un archivo en la raíz de la unidad, que requiere privilegios de administrador en Windows Vista, por lo que esta no es una opción.
Solución
Obtener ruta temporal y Obtener nombre de archivo temporal Deberia trabajar.
Otros consejos
La variable de entorno %TEMP% en Windows apunta al directorio temporal de los usuarios.
En C++ administrado, puede llamar a Path::GetTempFileName() lo que le proporcionará un archivo temporal en el directorio temporal de los usuarios (que se puede encontrar usando Path::GetTempPath() ).GetTempFileName() básicamente solo le brinda una ruta a un archivo en la ruta %TEMP% usando un GUID como nombre de archivo.Luego usa esa ruta para crear el archivo y hacer lo que quiera con él.Podría hacer una lógica similar en cualquier lenguaje que tenga acceso a las variables de entorno de los procesos actuales.
Espero que ayude,
Martín.
¿Ha probado con las variables de entorno TEMP y TMP configuradas en un directorio en el que todos puedan escribir?Para cambiar las variables de entorno en XP (no estoy familiarizado con Vista), vaya a Propiedades del sistema, pestaña [Avanzado], botón [Variables de entorno].
Quizás podría utilizar el método Win32 GetTempPath() en kernel32.dll.Esto está incluido en .NET mediante System.IO.Path.GetTempFileName().
En XP, esto devuelve una ruta en C:\Documentos y configuraciones ombre de usuario\Configuración local emp\, por lo que no debería requerir privilegios de administrador.
Si le interesa la interoperabilidad, la página de manual de tmpnam sugiere:
página de manual de tmpnam
BUGS
Never use this function. Use mkstemp(3) instead.
página de manual de 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
pero todo esto sugiere que ha preparado su plantilla con el prefijo del contenido de la variable de entorno TMP.