如何以编程方式检测32位或64位visio版本?
答案 0 :(得分:2)
您可以检查它是否安装在Program Files (x86)
(32位)或Program Files
(64位)中,但这不是坚如磐石的。
GetBinaryType API可能是一个更加可靠的解决方案。
答案 1 :(得分:1)
您可以使用以下任一方式搜索Visio EXE
文件:
Environment.SpecialFolder.ProgramFiles
Environment.SpecialFolder.ProgramFilesX86
如果在X86程序文件文件夹中找到Visio EXE
文件,那么您就知道它是32位的。另一个文件夹用于64位应用程序。
我不确定这是多么完整,因为Visio可能已安装在Program Files
以外的其他文件夹中。在这种情况下,您仍然可以搜索EXE
文件,然后尝试分析EXE
本身。
为此,请查看以下链接:
答案 2 :(得分:1)
其中一种方法是查看Windows注册表以查看Office节点下是否存在visio(HKLM \ Software \ Wow6432Node \ Microsoft \ Office ...)如果存在,则表示Visio的32位版本。如果HKLM \ Software \ Microsoft \ Office ... lookup返回值,则它可能表示64位版本的visio安装。希望这会有所帮助。
答案 3 :(得分:0)
看看这个question。在使用存储有关程序的信息的exe中找到删除注册表后,评估exe。
答案 4 :(得分:0)
您是否可以详细说明何时需要确定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
答案 5 :(得分:0)
尝试Application.IsVisio32属性
我认为从16位和32位版本的Visio之间存在区别时,它仍然存在,但IsVisio32仍然存在(至少在Visio 2003 32位和Visio2010 32位。
没有IsVisio64属性,但如果可以,请查看64位安装时IsVisio32的用途。
答案 6 :(得分:0)
这是您工作的另一种方式:
您可以了解MS Visio的版本和路径。此主题的链接:https://stackoverflow.com/q/1085468/616309
在GetMachineType(string fileName)
中使用MS Visio程序路径。此主题的链接:https://stackoverflow.com/q/885481/616309
答案 7 :(得分:0)
This has the answer. Office在Outlook密钥下添加了一个注册表项(即使未安装Outlook):
- 注册表路径:HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Office \ 14.0 \ Outlook
- 注册表项:Bitness
- 值:x86或x64
HKEY_LOCAL_MACHINE\Software\Microsoft\Office\15.0\Outlook
(Office 2013)也适合我。