Come posso ottenere il percorso della cartella temporanea dell'utente in C++? Il mio programma deve essere eseguito su Windows Vista e XP e hanno percorsi temporali diversi. Come posso ottenerlo senza perdere la compatibilità?Come ottenere il percorso della cartella temporanea dell'utente in Windows
risposta
C'è un motivo per cui non è possibile utilizzare l'API GetTempPath Win32?
Questa API è disponibile a partire con W2K e, quindi, saranno disponibili su tutti i tuoi obiettivi elencati.
La funzione GetTempPath recupera il percorso della directory designata per i file temporanei. Questa funzione sostituisce la funzione GetTempDrive.
DWORD GetTempPath(
DWORD nBufferLength, // size, in characters, of the buffer
LPTSTR lpBuffer // address of buffer for temp. path
);
Parametri
nBufferLength
Specifica la dimensione, in caratteri, del buffer stringa identificato da lpBuffer.
lpBuffer
punti a un buffer di stringa che riceve la stringa alla terminazione Null che specifica il percorso del file temporaneo.
Valori restituiti
Se la funzione riesce, il valore restituito è la lunghezza, in caratteri, della stringa copiata lpBuffer, escluso il carattere nullo di terminazione. Se il valore restituito è maggiore di nBufferLength, il valore restituito è la dimensione del buffer richiesto per contenere il percorso. Se la funzione non riesce, il valore di ritorno è zero. Per ottenere informazioni sull'errore estese, chiama GetLastError.
Osservazioni
La funzione GetTempPath ottiene il percorso del file temporaneo come segue:
- Il percorso specificato dalla variabile di ambiente TMP.
- Il percorso specificato dalla variabile di ambiente TEMP, se TMP non è definito.
- La directory corrente, se TMP e TEMP non sono definiti.
È necessario collegare a una documentazione MSDN invece di copiare e aprire il contenuto – JaredPar
In realtà apprezzerei sia le informazioni che il collegamento.Il problema con i collegamenti è che marciscono nel tempo. –
-1 per non indicare che si tratta di un preventivo, per non citare la fonte dell'offerta e per incollare informazioni non aggiornate. –
GetTempPath non funzionerà su Vista a meno che gli utenti non abbiano accesso amministrativo. Mi sto imbattendo in questo problema in questo momento con una delle mie app.
Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lasciare un commento sotto il loro post. –
Utilizzare GetTempPath() per recuperare il percorso della directory designata per i file temporanei.
wstring TempPath;
wchar_t wcharPath[MAX_PATH];
if (GetTempPathW(MAX_PATH, wcharPath))
TempPath = wcharPath;
#include <iostream>
#include <string>
int main(int argc, char* argv[]){
std::cout << getenv("TEMP") << std::endl;
return 0;
}
Se siete interessati solo a soluzioni Windows è necessario posizionare che nel titolo domanda. –