c# - manipular - Cómo obtener una carpeta temporal para el usuario actual
path gettempfilename() (4)
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: / Documents and Settings / administrator / 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 dé la ruta de la carpeta temporal del usuario actual como esta:
C: / Documents and Settings / administrator / Configuración local / Temp /
Tengo el mismo requisito: queremos colocar los registros en un directorio raíz específico que debería existir dentro del entorno.
public static readonly string DefaultLogFilePath = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
Si quiero combinar esto con un subdirectorio, debería poder usar Path.Combine( ... )
.
El método GetFolderPath
tiene una sobrecarga para las opciones de carpetas especiales que le permite controlar si la ruta especificada se crea o simplemente se verifica.
tratar
Environment.GetEnvironmentVariable("temp");
System.IO.Path.GetTempPath()
es solo un contenedor para una llamada nativa a 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 bajo Windows o el directorio de Windows en sí. Descargar archivos temporales en el directorio de Windows en sí mismo 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á tomando un retroceso en la ruta de Windows Temp.
NO uses esto:
System.Environment.GetEnvironmentVariable("TEMP")
Las variables de entorno se pueden anular, por lo que la variable TEMP
no es necesariamente el directorio.
La forma correcta es usar System.IO.Path.GetTempPath()
como en la respuesta aceptada.