开发者

How To Get System Folder Path(C:\Windows C:\Program Files) in Windows using C++?

开发者 https://www.devze.com 2022-12-23 22:09 出处:网络
I am programming in c++ MFC, I want to get \"C:\\windows\" \"c:\\program开发者_开发知识库 files\" folder path.

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).aspx
  • SHGetSpecialFolderPath: 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.

0

精彩评论

暂无评论...
验证码 换一张
取 消