【发布时间】:2011-04-21 20:03:43
【问题描述】:
如何以编程方式检测是否安装了 32 位或 64 位 visio 版本?
【问题讨论】:
如何以编程方式检测是否安装了 32 位或 64 位 visio 版本?
【问题讨论】:
您可以检查它是否安装在Program Files (x86)(32 位)或Program Files(64 位)中,但这并不可靠。
GetBinaryType API 可能是更可靠的解决方案。
【讨论】:
其中一种方法是查看 Windows 注册表,查看 Office 节点下是否存在 visio(HKLM\Software\Wow6432Node\Microsoft\Office...),如果存在,则表示 32 位版本的 Visio。如果 HKLM\Software\Microsoft\Office... 查找返回值,则可能表示 64 位版本的 visio 安装。希望这会有所帮助。
【讨论】:
您可以使用以下任一方法搜索 Visio EXE 文件:
Environment.SpecialFolder.ProgramFilesEnvironment.SpecialFolder.ProgramFilesX86如果您在 X86 程序文件夹中找到 Visio EXE 文件,那么您就知道它是 32 位的。另一个文件夹用于 64 位应用程序。
但我不确定这是否完全可靠,因为 Visio 可能已安装在 Program Files 以外的其他文件夹中。在这种情况下,您仍然可以搜索EXE 文件,然后尝试分析EXE 本身。
为此,请查看以下链接:
【讨论】:
看看这个question。在使用存储在添加删除注册表项中的有关程序的信息找到 exe 后,请评估该 exe。
【讨论】:
您能否详细说明何时需要确定 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
【讨论】:
试试 Application.IsVisio32 属性
我认为它是从 Visio 的 16 位和 32 位版本之间存在区别时遗留下来的,但 IsVisio32 仍然存在(至少在 Visio 2003 32 位和 Visio2010 32 位中。
没有 IsVisio64 属性,但如果可以的话,看看 IsVisio32 在 64 位安装上的表现。
【讨论】:
这是你工作的另一种方式:
您可以了解 MS Visio 的版本和路径。此主题的链接:https://stackoverflow.com/q/1085468/616309
使用<em>GetMachineType(string fileName)</em> 中的 MS Visio 程序路径。此主题的链接:https://stackoverflow.com/q/885481/616309
【讨论】:
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) 下为我提供。
【讨论】: