2009-08-24 9 views
13

Comment puis-je obtenir le chemin du dossier temporaire de l'utilisateur en C++? Mon programme doit fonctionner sous Windows Vista et XP et ils ont des chemins temporaires différents. Comment je peux l'obtenir sans perdre la compatibilité?Obtention du chemin du dossier temporaire de l'utilisateur sous Windows

+2

Si vous êtes uniquement intéressé par les solutions de fenêtres, vous devez le placer dans le titre de votre question. –

Répondre

6

La fonction GetTempPath récupère le chemin du répertoire désigné pour les fichiers temporaires. Cette fonction remplace la fonction GetTempDrive.

DWORD GetTempPath(

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

Paramètres

nBufferLength

Spécifie la taille, en caractères de la mémoire tampon de chaîne identifiée par lpBuffer.

lpBuffer

Points à un tampon de chaîne qui reçoit la chaîne à zéro terminal spécifiant le chemin de fichier temporaire.

Valeurs de retour

Si la fonction réussit, la valeur de retour est la longueur, en caractères, de la chaîne copié à lpBuffer, sans inclure le caractère nul final. Si la valeur de retour est supérieure à nBufferLength, la valeur de retour est la taille de la mémoire tampon requise pour conserver le chemin. Si la fonction échoue, la valeur de retour est zéro. Pour obtenir des informations d'erreur étendues, appelez GetLastError.

Remarques

La fonction GetTempPath obtient le chemin du fichier temporaire comme suit:

  1. Le chemin spécifié par la variable d'environnement TMP.
  2. Le chemin spécifié par la variable d'environnement TEMP si TMP n'est pas défini.
  3. Le répertoire en cours, si TMP et TEMP ne sont pas définis. GetTempPath ne fonctionnera pas sur Vista, sauf si les utilisateurs ont un accès administratif.
+3

Vous devez créer un lien vers une documentation MSDN plutôt que de copier et d'enregistrer le contenu. – JaredPar

+4

J'apprécierais à la fois l'information ET le lien.Le problème avec les liens est qu'ils pourrissent au fil du temps. –

+0

-1 pour ne donner aucune indication qu'il s'agit d'une citation, pour ne pas avoir cité la source de la citation et pour avoir collé des informations périmées. –

1

Je suis confronté à ce problème en ce moment avec l'une de mes applications.

+0

Ceci ne fournit pas de réponse à la question. Pour critiquer ou demander une clarification d'un auteur, laissez un commentaire ci-dessous leur publication. –

2

Utilisez GetTempPath() pour récupérer le chemin du répertoire désigné pour les fichiers temporaires.

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; 
} 
Questions connexes