What's the difference between %TMP% and %TEMP% in Vista environment variables?

It is for compatibility. It goes all the way back to DOS. Since there were no standards, some DOS (and Win 3.x) applications would look for the %TMP% environment variable and others would look for %TEMP%. You were best off if you set both of them in the AUTOEXEC.BAT file.

Windows NT set both of them automatically just to make sure all of the apps continued to work OK. %TEMP% is the standard now, but %TMP% lives on.

EDIT: Looks like Richard already mentioned the DOS aspect in a comment.


To complete the other answers:

Environment variable

in MS-DOS 5 (1991-1994) %TEMP% sometimes pointed to C:\DOS so removing all files in %TEMP% would cause great problems to say the least.

http://www.operating-system.org/betriebssystem/bsgfx/microsoft/msdos500-scr-01.png


I think only for compatibility, as I could see in Windows starting from NT 4.0 both variables were targeted to the same location in %WinDir%\Temp\

Also I never saw using %TMP%, every time it was talking about %TEMP%.