我目前正在对我的应用程序进行硬编码,如下所示:
const char* OriginCopyFile = "C:\\Program Files (x86)\\i-cut\\i-cut\\Origin_copy.txt";
这个应用程序将在32和64系统中运行。 如何检测没有文件名的path,以便在多个文件中重复使用,并使其在体系结构之间可移植。
您可以使用GetmoduleeFileName来获取可执行文件的路径,无论它安装在哪里,甚至稍后移动。 然后,您可以通过PathRemoveFileSpec删除可执行文件的名称(或strchr()和朋友,如果您想支持比Windows 2000更早的版本)。
SHGetSpecialFolderPath(CSIDL_PROGRAM_FILES)将至少提供程序文件目录的路径。 您将不得不处理添加路径和文件名的其余部分。
你可以使用这个环境变量:
#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; }