【问题标题】:What does the ProgramFilesX86 SpecialFolder do on systems like Windows XP?ProgramFilesX86 SpecialFolder 在 Windows XP 等系统上有何作用?
【发布时间】:2012-12-05 20:17:36
【问题描述】:

由于我在MSDN documentation 上找不到任何明确说明的内容:ProgramFilesX86 枚举值在 32 位系统上返回什么?


开发环境

请注意:在我的组织中,当我想测试事物时,我不能只是站起来机器。这就是我问社区的原因。我什至无法访问 32 位 ISO 来构建虚拟机——所以请理解我在这个组织内部有一些限制。

  • Windows 7 64 位

生产环境

在生产中,我不知道他们运行的是 32 位还是 64 位系统,很可能是混合的。不过我确实知道操作系统列表。

  • Windows 7
  • Windows Vista
  • Windows XP

目标

获取正确的程序文件目录,以便我可以动态启动我的应用程序。

已知变量

  1. 应用程序是通过 MSI 安装的,并且会使用默认选项安装,因此会安装在 Program Files 目录中。
  2. 该应用程序是 32 位应用程序,因此在 64 位系统上它将使用 Program Files (x86) 文件夹,但在 32 位系统上它将使用标准 Program Files 目录。

谢谢大家!

【问题讨论】:

  • @BaliC,我不能轻易访问我组织内部的 32 位系统——它不像我工作的地方那样工作——我不能只是站起来机器——所以我希望社区可以帮助我。很简单。
  • 对不起,我刚刚意识到并删除了我的评论,我在相关问题中找到了您的答案,请查看 cmets stackoverflow.com/a/4514110/799586
  • “我无法在我的组织内部访问 32 位系统——它不像我工作的地方那样工作”——你的公司是否讨厌开发人员,或者只是不希望他们高效?
  • @CodeCaster,我听到你大声而清晰的兄弟!

标签: c# .net special-folders


【解决方案1】:

它返回“程序文件”。由于您使用 MSI 进行安装,您可能会考虑使用安装程序 API(MsiLocateComponent 等)来定位您的程序,而不是假设它位于预期位置。

【讨论】:

    【解决方案2】:

    在我的 Win 7 32 位系统上,ProgramFilesX86 返回 C:\Program Files(没有尾部斜杠)。

    Console.WriteLine("GetFolderPath: {0}", Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86));
    

    【讨论】:

      【解决方案3】:

      KNOWNFOLDERID 的备注部分包含一个方便的表格,为您提供所需的信息(从非托管的角度)。在这里重现它很棘手:

      OS      App     KNOWNFOLDERID               Default                             CSIDL
      32 bit  32 bit  FOLDERID_ProgramFilesX86    %SystemDrive%\Program Files         CSIDL_PROGRAM_FILESX86
      64 bit  64 bit  FOLDERID_ProgramFilesX86    %SystemDrive%\Program Files (x86)   CSIDL_PROGRAM_FILESX86
      64 bit  32 bit  FOLDERID_ProgramFilesX86    %SystemDrive%\Program Files (x86)   CSIDL_PROGRAM_FILESX86
      

      【讨论】:

        【解决方案4】:

        32 位 XP:一个空字符串 :(
        32 位 Vista:“C:\Program Files”
        32 位 Win7:未测试,可能与 Vista 相同
        64 位 Win7:“C:\Program Files (x86)”

        不确定 64 位 XP,我自己也很好奇。

        【讨论】:

        • 这应该是公认的答案。尤其是 32 位 XP 部分。
        猜你喜欢
        • 2013-08-13
        • 1970-01-01
        • 2012-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-19
        • 2014-05-08
        • 1970-01-01
        相关资源
        最近更新 更多