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

sxi*_*eng 10 c++ windows api mfc

我在c ++ MFC中编程,

我想得到"C:\ windows""c:\ program files"文件夹路径.

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

是否有任何API来获取Windows和程序文件路径的绝对路径?

非常感谢!

Anz*_*rio 22

使用Win32 API>

对于Windows文件夹:

TCHAR windir[MAX_PATH];
GetWindowsDirectory(windir, MAX_PATH);
Run Code Online (Sandbox Code Playgroud)

对于程序文件:

TCHAR pf[MAX_PATH];
SHGetSpecialFolderPath(
    0,
    pf, 
    CSIDL_PROGRAM_FILES, 
    FALSE ); 
Run Code Online (Sandbox Code Playgroud)

MAX_PATH来自Windows头,并保证缓冲区最长(非UNC)路径足够长的时间.

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


Adr*_*thy 5

在 Vista+ 上,是和SHGetKnownFolderPath的替代品,但如果您需要向后兼容旧版本的 Windows,则可以继续使用旧功能。SHGetFolderPathSHGetSpecialFolderPath