Jak uzyskać ścieżkę folderu użytkownika w języku C++? Mój program musi działać w systemach Windows Vista i XP i mają one różne ścieżki temp. Jak mogę to zdobyć bez utraty kompatybilności?Uzyskiwanie ścieżki folderu tymczasowego użytkownika w systemie Windows
Odpowiedz
Czy istnieje powód, dla którego nie można używać funkcji API Win32 GetTempPath?
Ten interfejs API jest dostępny zaczynając W2K i stąd będą dostępne na wszystkich wymienionych celów.
Funkcja GetTempPath pobiera ścieżkę do katalogu przeznaczonego dla plików tymczasowych. Ta funkcja zastępuje funkcję GetTempDrive.
DWORD GetTempPath(
DWORD nBufferLength, // size, in characters, of the buffer
LPTSTR lpBuffer // address of buffer for temp. path
);
Parametry
nBufferLength
określenie wielkości, w postaci, w buforze ciąg zidentyfikowane przez lpBuffer.
lpBuffer
Punkty do bufora strun, która odbiera ciąg NUL określające tymczasową ścieżkę do pliku.
Zwracane wartości
Jeśli funkcja się powiedzie, wartość zwracana jest długość, w znakach, struny skopiowany do lpBuffer, nie licząc kończącego znaku null. Jeśli wartość zwracana jest większa niż nBufferLength, wartość zwracana jest rozmiarem bufora wymaganego do przechowywania ścieżki. Jeśli funkcja nie działa, wartość zwracana wynosi zero. Aby uzyskać rozszerzone informacje o błędach, wywołaj GetLastError.
Uwagi
Funkcja GetTempPath dostaje tymczasowe ścieżki pliku w następujący sposób:
- Ścieżka określona przez zmienną środowiskową TMP.
- Ścieżka określona przez zmienną środowiskową TEMP, jeśli TMP nie jest zdefiniowana.
- Katalog bieżący, jeśli zarówno TMP, jak i TEMP nie są zdefiniowane.
Powinieneś połączyć się z dokumentacją MSDN, a nie kopiować i otwierać zawartość. – JaredPar
Byłbym wdzięczny za informację i link.Problem z linkami polega na tym, że gniją z czasem. –
-1 za brak wskazania, że jest to oferta cenowa, za nie cytowanie źródła oferty oraz wklejanie nieaktualnych informacji. –
GetTempPath nie będzie działać na Vista, chyba że użytkownicy mają dostęp administracyjny. W tej chwili mam problem z jedną z moich aplikacji.
Nie zapewnia to odpowiedzi na pytanie. Aby skrytykować lub poprosić o wyjaśnienie od autora, zostaw komentarz pod swoim postem. –
Użyj funkcji GetTempPath(), aby pobrać ścieżkę do katalogu przeznaczonego dla plików tymczasowych.
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;
}
Jeśli jesteś zainteresowany tylko w oknach rozwiązań, które należy umieścić w tytule pytanie. –