How To Get System Folder Path(C:\Windows C:\Program Files) in Windows using C++?
I am programming in c++ MFC,
I want to get "C:\windows" "c:\program开发者_开发知识库 files" folder path.
Sometimes user may setup windows in other folder such as c:\windows0.
Is there any API to get absolute path of the windows and program files path?
Many thanks!
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.
GetWindowsDirectory
: http://msdn.microsoft.com/en-us/library/ms724454(VS.85).aspxSHGetSpecialFolderPath
: http://msdn.microsoft.com/en-us/library/bb762204(VS.85).aspx
On Vista+, SHGetKnownFolderPath
is the replacement for SHGetFolderPath
and SHGetSpecialFolderPath
, although you can continue to use the older functions if you need backward compatibility to older versions of Windows.
Call getenv("%ProgramFiles%") and getenv("%WinDir%")
Most of these come from SHGetFolderPath, but GetSystemDirectory() returns the absolute location of C:\Windows\System32. Don't use GetWindowsDirectory(). It doesn't do what you want anymore.
精彩评论