Using Win32 API>
For the Windows folder:
TCHAR windir[MAX_PATH];
GetWindowsDirectory(windir, MAX_PATH);
For program files:
TCHAR pf[MAX_PATH];
SHGetSpecialFolderPath(
0,
pf,
CSIDL_PROGRAM_FILES,
FALSE );
Where MAX_PATH
comes from the Windows headers and will guarantee the buffer is long enough for the longest (non-UNC) path.
Also, note that SHGetSpecialFolderPath
can be used to retrieve other "special" folder including the Windows folder just by replacing the third parameter to any from this list.