【发布时间】:2011-01-30 04:23:54
【问题描述】:
我正在用 C++ MFC 编程,
我想获取“C:\windows”“c:\program files”文件夹路径。
有时用户可能会在其他文件夹中设置窗口,例如 c:\windows0。
是否有任何 API 来获取窗口的绝对路径和程序文件路径?
非常感谢!
【问题讨论】:
我正在用 C++ MFC 编程,
我想获取“C:\windows”“c:\program files”文件夹路径。
有时用户可能会在其他文件夹中设置窗口,例如 c:\windows0。
是否有任何 API 来获取窗口的绝对路径和程序文件路径?
非常感谢!
【问题讨论】:
使用 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 中的任何一个。
【讨论】:
GetWindowsDirectory: http://msdn.microsoft.com/en-us/library/ms724454(VS.85).aspx
SHGetSpecialFolderPath: http://msdn.microsoft.com/en-us/library/bb762204(VS.85).aspx
【讨论】:
在 Vista+ 上,SHGetKnownFolderPath 是 SHGetFolderPath 和 SHGetSpecialFolderPath 的替代品,但如果您需要向后兼容旧版本的 Windows,您可以继续使用旧功能。
【讨论】:
其中大部分来自 SHGetFolderPath,但 GetSystemDirectory() 返回 C:\Windows\System32 的绝对位置。不要使用 GetWindowsDirectory()。它不再做你想做的事了。
【讨论】: