我目前正在硬编码应用程序的路径,如下所示:
const char* OriginCopyFile = "C:\\Program Files (x86)\\i-cut\\i-cut\\Origin_copy.txt";
此应用程序将在32和64系统中运行。如何在没有文件名的情况下检测路径,以便将其与多个文件一起使用,并使其在架构之间可移植。
答案 0 :(得分:6)
您可以使用GetModuleFileName获取可执行文件的路径,无论它在何处安装,甚至可以在以后移动。然后,您可以PathRemoveFileSpec删除可执行文件名称(或strchr()
和朋友,如果您想支持早于Windows 2000的版本)。
答案 1 :(得分:5)
SHGetSpecialFolderPath(CSIDL_PROGRAM_FILES)
至少会提供程序文件目录的路径。您必须处理添加路径和文件名的其余部分。
答案 2 :(得分:-3)
您可以使用环境变量:
#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;
}