Существует ли простая директива Program Files / Program Files (x86) для C ++ в Windows? - PullRequest
5 голосов
/ 02 декабря 2011

В настоящее время я жестко задаю путь к своему приложению следующим образом:

const char* OriginCopyFile = "C:\\Program Files (x86)\\i-cut\\i-cut\\Origin_copy.txt";

Это приложение будет работать как в 32, так и в 64 системах.Как я могу определить путь без имени файла, чтобы повторно использовать его с несколькими файлами и сделать его переносимым между архитектурами.

Ответы [ 3 ]

6 голосов
/ 02 декабря 2011

Вы можете использовать GetModuleFileName , чтобы получить путь к вашему исполняемому файлу, где бы он ни был установлен или даже перемещен позже.Затем можно PathRemoveFileSpec удалить имя исполняемого файла (или strchr() и друзей, если вы хотите поддерживать более ранние версии, чем Windows 2000).

5 голосов
/ 02 декабря 2011

SHGetSpecialFolderPath(CSIDL_PROGRAM_FILES) по крайней мере даст путь к каталогу программных файлов. Вам придется иметь дело с добавлением оставшегося пути и имени файла.

0 голосов
/ 02 декабря 2011

Для этого можно использовать переменные окружения:

#include <stdio.h>
#include <stdlib.h>

int _tmain(int argc, _TCHAR* argv[])
{
char* programFiles = getenv("ProgramFiles(x86)");   
if (programFiles==NULL)
{
    programFiles = getenv("ProgramFiles");
}

printf(programFiles);

return 0;
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...