Как получить путь к системной папке(C:Windows C:Program файлы) в Windows с использованием C++? [закрытый]

я программирую на c++ MFC,

Я хочу получить "C:windows ""c:program путь к папке" файлы".

иногда пользователь может настроить windows в другой папке, например c:windows0 - ...

Есть ли какой-либо API, чтобы получить абсолютный путь к пути windows и program files?

большое спасибо!

5 ответов


использование 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, просто заменив третий параметр на любой из этого список.



большинство из них поступают из SHGetFolderPath, но GetSystemDirectory () возвращает абсолютное расположение C:\Windows\System32 - ... Не используйте GetWindowsDirectory(). Он больше не делает то, что ты хочешь.


На Vista+, SHGetKnownFolderPath заменяет SHGetFolderPath и SHGetSpecialFolderPath, хотя вы можете продолжать использовать старые функции, если вам нужна обратная совместимость со старыми версиями Windows.


вызов getenv("%ProgramFiles%") и getenv("%WinDir%")