Да, жесткое кодирование путей в файловой системе является очень плохой практикой, именно по этой причине.Они могут быть изменены на разных машинах, и ваша проблема не должна быть затронута из-за этого.
Вместо этого вам нужно использовать переменные среды Папка для «Program Files» довольно проста и легко запоминается.Это просто:
%PROGRAMFILES%
API Windows также предоставляет набор функций для извлечения местоположений этих специальных папок.Изучите функцию SHGetFolderPath
(или SHGetKnownFolderPath
, предполагая, что вам нужно ориентироваться только на клиенты с Windows Vista и выше).Вам нужно будет указать значение CSIDL для папки Program Files CSIDL_PROGRAM_FILES
.Полный список доступен здесь .
Пример кода:
TCHAR szPath[MAX_PATH];
SHGetFolderPath(NULL, CSIDL_PROGRAM_FILES, NULL, 0, szPath);