Currently, I use Path.GetTempPath() to figure out where to write my log files, but recently I came across a user’s machine where the path returned was not what I expected.
Usually, the returned path is C:\Documents and Settings\[userid]\Local Settings\Temp
but in this case, it was C:\Temp
This would not normally be a problem, but for some reason the user in question did not have access to write to C:\Temp
I double checked the environment variables, and the USER environment variable was pointing as expected to C:\Documents and Settings\[userid]\Local Settings\Temp, whilst the SYSTEM environment variable was pointing to C:\WINNT\Temp.
So… where is Path.GetTempPath() getting it’s value from ? Group Policy? Registry?
I have Googled, but to no avail.
(Using Reflector)
Path.GetTempPath()ultimately calls the Win32 function GetTempPath (from kernel32.dll). The MDSN docs for this state:Note that they also state that it doesn’t check whether or not the path actually exists or can be written to, so you may end up trying to write your log files to a path that doesn’t exist, or one that you cannot access.