views:

731

answers:

3

How I can get the user's temp folder path in C++? My program has to run on Windows Vista and XP and they have different temp paths. How I can get it without losing compatibility?

+5  A: 

Is there a reason you can't use the Win32 GetTempPath API?

This API is available starting with W2K and hence will be available on all of your listed targets.

JaredPar
It works, thanks!
Matej
+1  A: 

The GetTempPath function retrieves the path of the directory designated for temporary files. This function supersedes the GetTempDrive function.

DWORD GetTempPath(

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

nBufferLength

Specifies the size, in characters, of the string buffer identified by lpBuffer.

lpBuffer

Points to a string buffer that receives the null-terminated string specifying the temporary file path.

Return Values

If the function succeeds, the return value is the length, in characters, of the string copied to lpBuffer, not including the terminating null character. If the return value is greater than nBufferLength, the return value is the size of the buffer required to hold the path. If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

The GetTempPath function gets the temporary file path as follows:

  1. The path specified by the TMP environment variable.
  2. The path specified by the TEMP environment variable, if TMP is not defined.
  3. The current directory, if both TMP and TEMP are not defined.
Henrico Dolfing
You should link to an MSDN documentation as opposed to copy and apsting the contents
JaredPar
I'd actually appreciate both the info AND the link. The problem with links is that they rot over time.
Michael Kohne
-1 for giving no indication that it's a quotation, for not citing the source of the quotation, and for pasting out-of-date information.
Rob Kennedy
+1  A: 

GetTempPath isn't going to work on Vista unless the users have administrative access. I'm running into that problem right now with one of my apps.

John Reynolds