【问题标题】:Is there a simple Program Files/Program Files (x86) directive for C++ in windows?Windows 中是否有用于 C++ 的简单程序文件/程序文件 (x86) 指令?
【发布时间】:2012-01-11 00:35:00
【问题描述】:

我目前正在硬编码我的应用程序的路径,如下所示:

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

此应用程序将在 32 和 64 系统中运行。如何检测没有文件名的路径,以便在多个文件中重用它并使其在体系结构之间可移植。

【问题讨论】:

    标签: c++ windows path


    【解决方案1】:

    您可以使用GetModuleFileName 获取可执行文件的路径,无论它安装在哪里,甚至以后移动。然后您可以PathRemoveFileSpec 删除可执行文件名称(如果您想支持 Windows 2000 之前的版本,则可以使用strchr() 和朋友)。

    【讨论】:

      【解决方案2】:

      SHGetSpecialFolderPath(CSIDL_PROGRAM_FILES) 至少会给出程序文件目录的路径。您必须处理添加路径和文件名的其余部分。

      【讨论】:

      • 您仍然不知道该软件的实际安装位​​置。你只知道程序文件夹,但据我们所知,它可能安装在 C:\i-cut\
      • @pezcode:至少根据标题(其余部分似乎与此相符),他基本上只是在寻找 Program FilesProgram files (x86)
      【解决方案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;
      } 
      

      【讨论】:

      • 这是错误的。始终使用 ProgramFiles,从不使用 ProgramFiles(x86) - WOW64 文件系统重定向将负责翻译。
      猜你喜欢
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      • 2014-10-28
      • 2023-03-03
      • 2013-06-27
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多