我在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 +中, SHGetKnownFolderPath
是SHGetFolderPath
和SHGetSpecialFolderPath
的替代品,尽管如果您需要向后兼容较旧版本的Windows,则可以继续使用旧功能。
调用getenv (“%ProgramFiles%”)和getenv (“%WinDir%”)