我目前硬编码的路径,我的应用程序如下:在Windows中是否存在针对C++的简单Program Files/Program Files(x86)指令?
const char* OriginCopyFile = "C:\\Program Files (x86)\\i-cut\\i-cut\\Origin_copy.txt";
该应用程序将包括32个和64位系统正在运行。如何在没有文件名的情况下检测路径,以便在多个文件中重复使用它,并使其在体系结构之间可移植。
我目前硬编码的路径,我的应用程序如下:在Windows中是否存在针对C++的简单Program Files/Program Files(x86)指令?
const char* OriginCopyFile = "C:\\Program Files (x86)\\i-cut\\i-cut\\Origin_copy.txt";
该应用程序将包括32个和64位系统正在运行。如何在没有文件名的情况下检测路径,以便在多个文件中重复使用它,并使其在体系结构之间可移植。
您可以使用GetModuleFileName获取可执行文件的路径,无论它安装在什么地方,甚至可以稍后移动。然后您可以PathRemoveFileSpec删除可执行文件的名称(或strchr()
和朋友,如果您要支持早于Windows 2000的版本)。
SHGetSpecialFolderPath(CSIDL_PROGRAM_FILES)
至少会提供程序文件目录的路径。您必须处理添加路径和文件名的其余部分。
你还是不知道的软件实际安装。所有你知道的是程序文件文件夹,但我们知道它可能被安装在C:\ i-cut \ – pezcode
@pezcode:至少根据标题(其余部分似乎适合这个),他基本上只是看用于'Program Files'与'Program files(x86)'。 –
可以使用环境变量是:
#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;
}
这是错误的。始终使用ProgramFiles,切勿使用ProgramFiles(x86) - WOW64文件系统重定向将负责翻译。 –
+1正确答案 –