如何在Windows中使用C ++获取系统文件夹path(C:\ Windows C:\ Program Files)?

我在c ++ MFC编程,

我想得到“C:\ windows”“c:\ program files”文件夹的path。

有时用户可能会在其他文件夹(如c:\ windows0)中设置窗口

有没有任何API来获得窗口和程序文件path的绝对path?

非常感谢!

使用Win32 API>

对于Windows文件夹:

TCHAR windir[MAX_PATH]; GetWindowsDirectory(windir, MAX_PATH); 

对于程序文件:

 TCHAR pf[MAX_PATH]; SHGetSpecialFolderPath( 0, pf, CSIDL_PROGRAM_FILES, FALSE ); 

其中, MAX_PATH来自Windows头文件,并保证缓冲区足够长,以用于最长的(非UNC)路径。

此外,请注意SHGetSpecialFolderPath可以用来检索包括Windows文件夹在内的其他“特殊”文件夹,只需将第三个参数替换为此列表中的任何一个即可。

  • GetWindowsDirectory : http : //msdn.microsoft.com/en-us/library/ms724454( GetWindowsDirectory .aspx
  • SHGetSpecialFolderPath : http : //msdn.microsoft.com/en-us/library/bb762204( SHGetSpecialFolderPath .aspx

其中大部分来自SHGetFolderPath,但GetSystemDirectory()返回C:\ Windows \ System32的绝对位置。 不要使用GetWindowsDirectory()。 它不会做你想要的东西了。

在Vista +中, SHGetKnownFolderPathSHGetFolderPathSHGetSpecialFolderPath的替代品,尽管如果您需要向后兼容较旧版本的Windows,则可以继续使用旧功能。

调用getenv (“%ProgramFiles%”)和getenv (“%WinDir%”)