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

问题描述 投票:0回答:5

我正在使用 C++ MFC 进行编程,

我想获取“C:\windows”“c:\program files”文件夹路径。

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

有没有API可以获取Windows的绝对路径和程序文件路径?

非常感谢!

c++ windows api mfc
5个回答
28
投票

使用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 文件夹,只需将第三个参数替换为此 list 中的任何一个即可。



5
投票

在 Vista+ 上,

SHGetKnownFolderPath
SHGetFolderPath
SHGetSpecialFolderPath
的替代品,但如果您需要向后兼容旧版本的 Windows,则可以继续使用旧功能。



2
投票

其中大部分来自

SHGetFolderPath
,但
GetSystemDirectory()
返回
C:\Windows\System32
的绝对位置。不要使用
GetWindowsDirectory()
。它不再做你想做的事了。

© www.soinside.com 2019 - 2024. All rights reserved.