Cómo obtener una carpeta temporal para el usuario actual

Resuelto Anoop asked hace 15 años • 3 respuestas

Actualmente estoy usando la siguiente función para obtener la ruta de la carpeta temporal para el usuario actual:

string tempPath = System.IO.Path.GetTempPath();

En algunas máquinas me da la ruta de la carpeta temporal del usuario actual como:

C:\Documentos y configuraciones\administrador\Configuración local\Temp\

En algunas máquinas me da la ruta de la carpeta temporal del sistema como:

C:\Windows\TEMP

La documentación de MSDN también dice que la API anterior devuelve la carpeta temporal del sistema actual.

¿Hay alguna otra API disponible que me proporcione la ruta de la carpeta temporal del usuario actual como esta?

C:\Documentos y configuraciones\administrador\Configuración local\Temp\

Anoop avatar Jun 03 '09 19:06 Anoop
Aceptado

System.IO.Path.GetTempPath()es solo un contenedor para una llamada nativa GetTempPath(..)en Kernel32.

Eche un vistazo a http://msdn.microsoft.com/en-us/library/aa364992(VS.85).aspx

Copiado de esa página:

La función GetTempPath comprueba la existencia de variables de entorno en el siguiente orden y utiliza la primera ruta encontrada:

  • La ruta especificada por la variable de entorno TMP.
  • La ruta especificada por la variable de entorno TEMP.
  • La ruta especificada por la variable de entorno USERPROFILE.
  • El directorio de Windows.

No me queda del todo claro si "El directorio de Windows" significa el directorio temporal de Windows o el directorio de Windows en sí. Volcar archivos temporales en el directorio de Windows parece un caso indeseable, pero quién sabe.

Entonces, al combinar esa página con su publicación, supongo que una de las variables TMP, TEMP o USERPROFILE para su usuario Administrador apunta a la ruta de Windows, o bien no están configuradas y está recurriendo a la ruta temporal de Windows.

Niall Connaughton avatar Jun 03 '2009 17:06 Niall Connaughton

NO uses esto:

System.Environment.GetEnvironmentVariable("TEMP")

Las variables de entorno se pueden anular, por lo que la TEMPvariable no es necesariamente el directorio.

La forma correcta es utilizar System.IO.Path.GetTempPath()como en la respuesta aceptada.

Helen avatar Jun 03 '2009 12:06 Helen