我需要一种始终有效的方法,而不仅仅是大多数时间。
到目前为止,我一直在使用检查"HKLM\Software\Microsoft\Office\14.0\Word\InstallRoot“注册表项是否存在的方法(14.0表示Word 2010 )。
然而,我最近有一个假阴性,一个用户谁安装了Word 2010,但没有密钥。他的注册表中有HKLM\Software\Microsoft\Office\14.0\Word,但没有HKLM\Software\Microsoft\Office\14.0\Word\InstallRoot.这导致我的程序安装了一个旧版本的工具栏,它没有针对ribbon界面进行优化。
我也有一个假阳性,一个用户之前安装了Word 2007,但后来卸载了它,并将其替换为Word 2003。但是到处都是Office2007的注册表项,它欺骗了我的安装程序,它安装了一个针对功能区进行了优化的工具栏,但它根本无法在Word 2003中加载。
那么有没有更好的方法来检测Office的版本呢?
发布于 2011-12-12 20:09:14
获取Word的“活动”版本而不考虑先前/零碎安装的一种方式是请求当前注册的自动化服务器的版本;
[Code]
function WordVer(dummy: String): String;
var
Obj: Variant;
begin
try
Obj := CreateOleObject('Word.Application');
Result := Obj.Version;
Obj.Quit(False);
except
RaiseException('not installed');
end;
end;并使用脚本化常量{code:WordVer}来获取版本字符串(12.0等)。
https://stackoverflow.com/questions/8473589
复制相似问题