【问题标题】:How to programmatically detect 32-bit or 64-bit visio version is installed?如何以编程方式检测是否安装了 32 位或 64 位 visio 版本?
【发布时间】:2011-04-21 20:03:43
【问题描述】:

如何以编程方式检测是否安装了 32 位或 64 位 visio 版本?

【问题讨论】:

    标签: c# .net vb.net visio


    【解决方案1】:

    您可以检查它是否安装在Program Files (x86)(32 位)或Program Files(64 位)中,但这并不可靠。

    GetBinaryType API 可能是更可靠的解决方案。

    【讨论】:

      【解决方案2】:

      其中一种方法是查看 Windows 注册表,查看 Office 节点下是否存在 visio(HKLM\Software\Wow6432Node\Microsoft\Office...),如果存在,则表示 32 位版本的 Visio。如果 HKLM\Software\Microsoft\Office... 查找返回值,则可能表示 64 位版本的 visio 安装。希望这会有所帮助。

      【讨论】:

      • 这样我已经实现了该检查。但实际上它看起来像一个黑客。并且访问 Wow6432 节点或普通节点也存在一些问题。所以你不仅需要这个检查。而实际上 32 位进程无法访问 64 位节点,只能访问 wow6432
      【解决方案3】:

      您可以使用以下任一方法搜索 Visio EXE 文件:

      • Environment.SpecialFolder.ProgramFiles
      • Environment.SpecialFolder.ProgramFilesX86

      如果您在 X86 程序文件夹中找到 Visio EXE 文件,那么您就知道它是 32 位的。另一个文件夹用于 64 位应用程序。

      但我不确定这是否完全可靠,因为 Visio 可能已安装在 Program Files 以外的其他文件夹中。在这种情况下,您仍然可以搜索EXE 文件,然后尝试分析EXE 本身。

      为此,请查看以下链接:

      【讨论】:

      • 但是如果用户指定了另一个安装路径?
      【解决方案4】:

      看看这个question。在使用存储在添加删除注册表项中的有关程序的信息找到 exe 后,请评估该 exe。

      【讨论】:

        【解决方案5】:

        您能否详细说明何时需要确定 VISIO 是 64 位还是 32 位?

        如果进程正在运行,您可以使用名为 IsWow64Process 的 P/Invoke 方法来确定它是否为 64 位。

        您也可以使用 IsWow64Process 来确定操作系统是 32 位还是 64 位。一旦获得操作系统的位空间,您就可以确定要安装哪个版本的插件。

        据我了解,Office 2010 和未来版本,您可以使用 VSTO 来避免检查 VISIO 是 32 位还是 64 位。您可能需要在将来的加载项版本中考虑这一点。

        谢谢

        另外,我知道这无关紧要,但请投票支持此建议(如果您有时间),因为它将彻底改变软件开发: https://connect.microsoft.com/VisualStudio/feedback/details/526951/screen-object-physicalwidthincentimeters-physicalheightincentimeters-displaymode

        【讨论】:

        • 我需要它来部署 visio 插件。所以 visio 没有运行,但可以启动。当他安装不适当版本的插件时我需要通知用户
        • 你使用什么编程语言?
        • Wix 安装程序中的 C#/.NET 自定义操作
        【解决方案6】:

        试试 Application.IsVisio32 属性

        我认为它是从 Visio 的 16 位和 32 位版本之间存在区别时遗留下来的,但 IsVisio32 仍然存在(至少在 Visio 2003 32 位和 Visio2010 32 位中。

        没有 IsVisio64 属性,但如果可以的话,看看 IsVisio32 在 64 位安装上的表现。

        【讨论】:

          【解决方案7】:

          这是你工作的另一种方式:

          【讨论】:

            【解决方案8】:

            This has the answer.Office 在 Outlook 键下添加位的注册表项(即使未安装 Outlook):

            • 注册表路径:HKEY_LOCAL_MACHINE\Software\Microsoft\Office\14.0\Outlook
            • 注册表项:位数
            • 值:x86 或 x64

            它也在HKEY_LOCAL_MACHINE\Software\Microsoft\Office\15.0\Outlook (Office 2013) 下为我提供。

            【讨论】:

              猜你喜欢
              • 2010-10-22
              • 1970-01-01
              • 2011-12-15
              • 2011-04-25
              • 2011-07-03
              • 2010-10-10
              • 2011-05-04
              • 2023-04-02
              相关资源
              最近更新 更多