我正在使用 C++ MFC 进行编程,
我想获取“C:\windows”“c:\program files”文件夹路径。
有时用户可能会在其他文件夹中设置窗口,例如 c:\windows0。
有没有API可以获取Windows的绝对路径和程序文件路径?
非常感谢!
使用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 中的任何一个即可。
SHGetKnownFolderPath
是 SHGetFolderPath
和 SHGetSpecialFolderPath
的替代品,但如果您需要向后兼容旧版本的 Windows,则可以继续使用旧功能。
其中大部分来自
SHGetFolderPath
,但 GetSystemDirectory()
返回 C:\Windows\System32
的绝对位置。不要使用GetWindowsDirectory()
。它不再做你想做的事了。