2009-08-24 31 views
13

¿Cómo puedo obtener la ruta de la carpeta temporal del usuario en C++? Mi programa tiene que ejecutarse en Windows Vista y XP y tienen diferentes rutas temporales. ¿Cómo puedo obtenerlo sin perder compatibilidad?Obtener la ruta de la carpeta temporal del usuario en Windows

+2

Si sólo estás interesado en soluciones de ventanas que se debe colocar en su título de la pregunta. –

Respuesta

6

La función GetTempPath recupera la ruta del directorio designado para los archivos temporales. Esta función sustituye a la función GetTempDrive.

DWORD GetTempPath(

DWORD nBufferLength, // size, in characters, of the buffer 
LPTSTR lpBuffer // address of buffer for temp. path 
); 

Parámetros

nBufferLength

Especifica el tamaño, en caracteres, del búfer de cadena identificado por lpBuffer.

lpBuffer

Apunta a un búfer de cadena que recibe la cadena terminada en nulo que especifica la ruta del archivo temporal. Valores

Volver

Si la función tiene éxito, el valor de retorno es la longitud, en caracteres, de la cadena copiada a lpBuffer, sin incluir el carácter nulo de terminación. Si el valor de retorno es mayor que nBufferLength, el valor de retorno es el tamaño del búfer requerido para mantener la ruta. Si la función falla, el valor de retorno es cero. Para obtener información extendida sobre el error, llame a GetLastError.

Observaciones

La función GetTempPath obtiene la ruta del archivo temporal de la siguiente manera:

  1. La ruta especificada por la variable de entorno TMP.
  2. La ruta especificada por la variable de entorno TEMP, si TMP no está definido.
  3. El directorio actual, si tanto TMP como TEMP no están definidos.
+3

Debe vincular a una documentación de MSDN en lugar de copiar y apsting los contenidos – JaredPar

+4

Realmente apreciaría tanto la información como el enlace.El problema con los enlaces es que se pudren con el tiempo. –

+0

-1 por no dar ninguna indicación de que es una cita, por no citar el origen de la cita, y por pegar información desactualizada. –

1

GetTempPath no funcionará en Vista a menos que los usuarios tengan acceso administrativo. Me estoy encontrando con ese problema ahora con una de mis aplicaciones.

+0

Esto no proporciona una respuesta a la pregunta. Para criticar o solicitar la aclaración de un autor, deje un comentario debajo de su publicación. –

2

Use GetTempPath() para recuperar la ruta del directorio designado para los archivos temporales.

wstring TempPath; 
wchar_t wcharPath[MAX_PATH]; 
if (GetTempPathW(MAX_PATH, wcharPath)) 
    TempPath = wcharPath; 
3
#include <iostream> 
#include <string> 

int main(int argc, char* argv[]){ 

    std::cout << getenv("TEMP") << std::endl; 

    return 0; 
} 
Cuestiones relacionadas